PostgreSQLクラスタのバックエンドデータベースとしての設定
PostgreSQLは、フォールトトレラント機能、スケーラビリティ、安定性等、独自の特徴がある高度なオープンソースRDBMSシステムで、大規模な作業負荷に耐用する設計になっています。PAM360はすでに、PostgreSQLを、本製品のバンドルされているデフォルトデータベースとして採用しています。これにより、大規模にスケーラビリティを上げ、アプリケーションの動作と機能を高めるため、PAM360で、ユーザーは、PostgreSQLクラスタをスタンドアロンの外部バックエンドデータベースとして設定できます。
本書の終わりには、PostgreSQLクラスタのバックエンドデータベースとしての設定について学んでいることになります。
1.PostgreSQLクラスタのバックエンドデータベースとしての設定
- PAM360を任意のマシン/サーバーにダウンロードしてインストールします。
注意
インストール後、PAM360サービスを起動しないでください。
- PostgreSQLをダウンロードしてインストールします。
- データベースオーナーの許可で提供されるPostgreSQLにデータベースクラスターを作成します。
- データベースクラスターの作成後、拡張機能のドロップダウンに拡張機能'pgcrypto'が表示されていることを確認してください。該当する拡張機能が存在しない場合は、次のコマンドを使用して作成してください:
CREATE EXTENSION pgcrypto;
- <PostgreSQL_Installation_folder>pgsql_installation\dataに移動して、ファイルpg_hba.confを開きます:
- PAM360が稼働しているマシン/サーバーのIPアドレスを末尾に追加します。
例:host all <user name><ip address>/32 md5追加の詳細
上の手順は、バックエンドデータベースとして外部PostgreSQLエンタープライズデータベースを使用するユーザーのみに適用されます。クラウドベースデータベースのユーザーの場合、プロセスは自動プロセスで実行されます。
- PAM360が稼働しているマシン/サーバーのIPアドレスを末尾に追加します。
- Windowsでは、<PostgreSQL_Installation_folder>pgsql_installation\dataに、またはLinuxでは、
<PostgreSQL_Installation_folder>pgsql_installation\main
に移動し、ファイルpostgresql.confを開きます:
- listen_addressesを検索し、PAM360が実行されているサーバーのIPアドレスを入力します。
- PostgreSQLサーバーを再起動します。
- <PAM360_Installation_folder>\confに移動し、ファイルcustomer-config.xmlを開きます:
- startdbserver= trueを検索し、値をfalseに変更します。
- 次に、ファイルcustomer-config.xmlを保存して閉じます。
- <PAM360-Installation-Directory>\confフォルダに移動し、ファイルdatabase_params.confを開きます。
- localhostの詳細を、PostgreSQLデータベースクラスターが稼働しているサーバーのリスナー名に置き換えます。
- データベース内のPostgreSQLクラスターの実際のポート番号にport numberを更新します。デフォルトでは、PostgreSQLの初期ポート番号は、5432です。
- usernameとpasswordを更新します。
- クラスター作成時に指定したデータベース名を更新します。
- db.password.encrypted=true を検索し、db.password.encrypted=falseに変更します。
- PAM360 ビルド8000以降を使用している場合は、database_params.confファイルからsuperuser_passエントリを削除します。
- それでは、database_params.conf ファイルを保存して閉じます。
追加の詳細
ここで指定したパスワードは、次回以降の実行時に暗号化されます。
- PostgreSQLデータベースクラスターのルートCA証明書をダウンロードし、PAM360にインポートします。証明書のインポートの詳細な手順については、FAQ
の証明書セクションのQuestion 11を参照してください。
追加の詳細
PostgreSQLデータベースのSSLの作成方法がわからない場合は、以下のセクションに従って必要なSSL証明書(CA署名または自己署名)を生成し、SSL接続を検証してください。
- PAM360サービスを開始します。
これで、PostgreSQLクラスターがバックエンドデータベースとして正常に設定されました。
2.PostgreSQLクラスターのSSL生成
PostgreSQLデータベースクラスターとPAM360アプリケーション間のセキュアな接続には、SSL接続が必要です。SSL接続を確立するには、PostgreSQLデータベースクラスターのルートCAが必要です。
2.1 PostgreSQLクラスターへのCA署名SSL証明書の使用
CA署名済みのSSL証明書をお持ちの場合は、手順4から証明書のインストールに直接進んでください。それ以外の場合は、以下の手順1~3に従って、新しいCA署名付き証明書を生成してインストールしてください。
- OpenSSLを使用して秘密鍵を生成するため、ターミナルで以下のコマンドを実行してください:
このコマンドは2048ビットのRSA秘密鍵を生成し、パスフレーズで保護された状態でserver.keyに保存します。openssl genrsa -des3 -out server.key 2048
- 秘密鍵を使用してCertificate Signing
Request(CSR)(証明書署名要求)を作成します。このリクエストは、署名のために認証局(CA)に送信されます。次のコマンドを実行してください。
このプロセス中に、鍵のPassphraseの入力と、Common Name、HostnameまたはIP Addressなどの情報の提供を求められます。ここで、Common NameはPostgreSQLクラスターのFully Qualified Domain Name (FQDN)である必要があります。openssl req -new -key server.key -out server.csr
- 生成されたCSR(server.csr)を、VeriSign、Thawte、RapidSSLなどのサードパーティー認証局に送信して署名してもらいます。CSRの提出方法および署名プロセスの完了方法については、各認証局のドキュメントを参照してください。このサービスは通常有料です。
数日後には、署名済みのSSL証明書と認証局のルート証明書が .cer ファイルとして届きます。 - MMCコンソールを使用して、PostgreSQLクラスターマシンにサーバー証明書をインストールします。
- [Start]をクリックし、[Run]を選択します。「Run」ダイアログボックスに「MMC」と入力し、Enterキーを押します。これにより、Microsoft Management Console (MMC) が開きます。
- Consoleメニューから「Add/Remove Snap-in」を選択します。
- 「Add」をクリックし、次に「Certificates」を選択して、もう一度「Add」をクリックします。
- プロンプトが表示されたら、Computer Accountの証明書を管理するオプションを選択してください。
- 「Manage User Certificates (Local Computer) 」 >> 「Personal」 >> 「Certificates」に移動します。
- 「Certificates」を右クリックし、「All Tasks」を選択してから、「Import」をクリックします。
- 署名済みのサーバー証明書の保存場所を検索し、証明書を選択してインポート処理を完了してください。
- 以下の手順に従って、PAM360にCAルート証明書をインストールしてください。
- CAのルート証明書を<PAM360-Installation-Directory>\binフォルダにコピーします。
- <PAM360-Installation-Directory>\binフォルダから、以下のコマンドを実行します。
<Absolute-Path-of-the-Certificate> を、コピーしたルート証明書ファイルの実際のパスに置き換えてください。このコマンドは、ルート証明書をPAM360証明書ストアに追加します。importCert.bat <Absolute-Path-of-the-Certificate>
これらの手順に従うことで、秘密鍵と証明書リクエストを生成し、CAに署名を依頼し、サーバー証明書とルート証明書をそれぞれのマシンにインストールすることができます。
2.2 PostgreSQLクラスターの自己署名SSL生成
自己署名SSL証明書をお持ちの場合は、セクション2.2.1の証明書インストールから直接進めてください。そうでない場合は、以下の手順に従って新しい自己署名証明書を生成してインストールしてください。
- <PostgreSQL Installation Directory>\dataに移動し(証明書の作成先)、管理者としてコマンドプロンプトを開いて、PostgreSQLデータベースクラスター用のSSLルートCAを作成するための以下の手順を実行します。
- 秘密鍵とルート証明書を作成するには、以下のコマンドを実行します。
これにより、Triple DES暗号化を使用してパスフレーズ`1111`で暗号化された4096ビットRSA秘密鍵`rootca.key`が生成されます。openssl genrsa -passout pass:1111 -des3 -out rootca.key 4096
これにより、パスフレーズ`1111`で暗号化されたRSA秘密鍵`rootca.key`を使用して、365日間有効な自己署名ルートCA証明書`rootca.crt`が作成されます。openssl req -passin pass:1111 -new -x509 -days 365 -key rootca.key -out rootca.crt
- ルート証明書を作成するために、必要な証明書の詳細を適宜入力してください。例:コモンネームとしてサーバー名を、SANネームとしてサーバーのIPアドレスを入力します。
- サーバー秘密鍵およびサーバー証明書リクエストを作成するには、次のコマンドを実行してください:
これにより、Triple DES暗号化を使用してパスフレーズ`1111`で暗号化された、サーバー用の4096ビットRSA秘密鍵`server.key`が生成されます。openssl genrsa -passout pass:1111 -des3 -out server.key 4096
これにより、パスフレーズ`1111`で暗号化されたRSA秘密鍵`server.key`を使用して、サーバーのCSR`server.csr`が生成されます。openssl req -passin pass:1111 -new -key server.key -out server.csr
- サーバー証明書を作成するために、必要な証明書の詳細を適宜入力してください。例:コモンネームとしてサーバー名を、SANネームとしてサーバーのIPアドレスを入力します。
- ルートCAである `rootca.crt` および `rootca.key` を使用して、サーバーCSRである
`server.csr` に署名するコマンドを実行してください。これにより、有効期間365日のサーバー証明書
`server.crt` が生成されます。その際、シリアル番号を設定し、復号用のパスフレーズとして `1111`
を使用してください。
上記のコマンドを実行すると、server.csrはrootca.crtで署名されます。発行された証明書を信頼するために、rootca.crtをサーバー上の該当するトラストストアに追加してください。秘密鍵、証明書、およびCSRは、必要に応じて任意の名前を付けることもできます。openssl x509 -req -passin pass:1111 -days 365 -in server.csr -CA rootca.crt -CAkey rootca.key -set_serial 01 -out server.crt
注意
PostgreSQLデータベースにワイルドカード証明書を使用する場合は、ワイルドカード証明書と対応する秘密鍵ファイルを<PostgreSQL Installation Directory>\dataディレクトリパスに配置してください。
SSLを使用するようにPostgreSQLデータベースクラスターを設定するには、以下の手順に従ってください:
- <PostgreSQL Installation Directory>\dataに移動し、管理者権限でpostgresql.confファイルを開きます。
- 接続設定のlisten_addressesを確認し、外部ホストからの接続を許可するパラメーターlisten_addressesを編集または確認します。
listen_addresses = '*'
- postgresql.conf内のSSLセクションを検索し、すべてのSSLパラメーターのコメントを解除します。
- 次に、以下に示すように証明書情報を使用してSSLパラメーターを編集します。
ssl = on
ssl_ca_file = 'rootca.crt'
ssl_cert_file = 'server.crt'
ssl_crl_file = ''
ssl_crl_dir = ''
ssl_key_file = 'server.key'
ssl_ciphers = 'HIGH:MEDIUM:+3DES:!aNULL' # allowed SSL ciphers
ssl_prefer_server_ciphers = on
ssl_ecdh_curve = 'prime256v1'
ssl_min_protocol_version = 'TLSv1.2'
ssl_max_protocol_version = ''
ssl_dh_params_file = ''
ssl_passphrase_command = ''
ssl_passphrase_command_supports_reload = off注意
PostgreSQLデータベースにワイルドカード証明書を使用している場合は、ssl_ca_fileパラメーターを属性なしで更新します(ssl_ca_file='')。
- 次に、PostgreSQLデータベースクラスターのルートCA証明書をPAM360にインポートします。証明書のインポートの詳細な手順については、FAQ の証明書セクションのQuestion 11を参照してください。
- 次に、変更を有効にするためにPostgreSQLデータベースを再起動します。
2.3 SSL接続の検証
CA署名証明書または自己署名証明書のいずれかを使用して、SSL接続設定を検証するには、以下の手順を実行してください。
- <PostgreSQL Installation Directory>\bin に移動し、管理者権限でコマンドプロンプトを開きます。
- PostgreSQLデータベースに接続するためのコマンドを実行します。
ユーザー名、ホスト名、およびDB名をご使用のPostgreSQLクラスターの詳細に置き換えます。例:psql "postgresql://postgres@127.0.0.1/postgres?sslmode=require"psql "postgresql://username@hostname/dbname?sslmode=require"
- 次に、PostgreSQLデータベースのインストール時に入力したPostgreSQLデータベースのパスワードを入力します。
- パスワードを入力すると、SSL接続が正常に確立されたことを示す以下のメッセージが表示されます。
- 次に、<PostgreSQL Installation Directory>\dataに移動し、rootca.certを使用してPAM360にインポートします。証明書のインポートの詳細な手順については、FAQ の証明書セクションのQuestion 11を参照してください。

