PostgreSQLクラスタのバックエンドデータベースとしての設定

PostgreSQLは、フォールトトレラント機能、スケーラビリティ、安定性等、独自の特徴がある高度なオープンソースRDBMSシステムで、大規模な作業負荷に耐用する設計になっています。PAM360はすでに、PostgreSQLを、本製品のバンドルされているデフォルトデータベースとして採用しています。これにより、大規模にスケーラビリティを上げ、アプリケーションの動作と機能を高めるため、PAM360で、ユーザーは、PostgreSQLクラスタをスタンドアロンの外部バックエンドデータベースとして設定できます。

本書の終わりには、PostgreSQLクラスタのバックエンドデータベースとしての設定について学んでいることになります。

1.PostgreSQLクラスタのバックエンドデータベースとしての設定

  1. PAM360を任意のマシン/サーバーにダウンロードしてインストールします。

    注意

    インストール後、PAM360サービスを起動しないでください。

  2. PostgreSQLをダウンロードしてインストールします。
  3. データベースオーナーの許可で提供されるPostgreSQLにデータベースクラスターを作成します。
  4. データベースクラスターの作成後、拡張機能のドロップダウンに拡張機能'pgcrypto'が表示されていることを確認してください。該当する拡張機能が存在しない場合は、次のコマンドを使用して作成してください:
    CREATE EXTENSION pgcrypto;
  5. <PostgreSQL_Installation_folder>pgsql_installation\dataに移動して、ファイルpg_hba.confを開きます:
    1. PAM360が稼働しているマシン/サーバーのIPアドレスを末尾に追加します。
      例:host all <user name><ip address>/32 md5

      追加の詳細

      上の手順は、バックエンドデータベースとして外部PostgreSQLエンタープライズデータベースを使用するユーザーのみに適用されます。クラウドベースデータベースのユーザーの場合、プロセスは自動プロセスで実行されます。

  6. Windowsでは、<PostgreSQL_Installation_folder>pgsql_installation\dataに、またはLinuxでは、 <PostgreSQL_Installation_folder>pgsql_installation\main に移動し、ファイルpostgresql.confを開きます:
    1. listen_addressesを検索し、PAM360が実行されているサーバーのIPアドレスを入力します。
  7. PostgreSQLサーバーを再起動します。
  8. <PAM360_Installation_folder>\confに移動し、ファイルcustomer-config.xmlを開きます:
    1. startdbserver= trueを検索し、値をfalseに変更します。
    2. 次に、ファイルcustomer-config.xmlを保存して閉じます。
  9. <PAM360-Installation-Directory>\confフォルダに移動し、ファイルdatabase_params.confを開きます。
    1. localhostの詳細を、PostgreSQLデータベースクラスターが稼働しているサーバーのリスナー名に置き換えます。
    2. データベース内のPostgreSQLクラスターの実際のポート番号にport numberを更新します。デフォルトでは、PostgreSQLの初期ポート番号は、5432です。
    3. usernamepasswordを更新します。
    4. クラスター作成時に指定したデータベース名を更新します。
    5. db.password.encrypted=true を検索し、db.password.encrypted=falseに変更します。
    6. PAM360 ビルド8000以降を使用している場合は、database_params.confファイルからsuperuser_passエントリを削除します。
    7. それでは、database_params.conf ファイルを保存して閉じます。

      追加の詳細

      ここで指定したパスワードは、次回以降の実行時に暗号化されます。

  10. PostgreSQLデータベースクラスターのルートCA証明書をダウンロードし、PAM360にインポートします。証明書のインポートの詳細な手順については、FAQ の証明書セクションのQuestion 11を参照してください。

    追加の詳細

    PostgreSQLデータベースのSSLの作成方法がわからない場合は、以下のセクションに従って必要なSSL証明書(CA署名または自己署名)を生成し、SSL接続を検証してください。

  11. PAM360サービスを開始します。

これで、PostgreSQLクラスターがバックエンドデータベースとして正常に設定されました。


2.PostgreSQLクラスターのSSL生成

PostgreSQLデータベースクラスターとPAM360アプリケーション間のセキュアな接続には、SSL接続が必要です。SSL接続を確立するには、PostgreSQLデータベースクラスターのルートCAが必要です。

2.1 PostgreSQLクラスターへのCA署名SSL証明書の使用

CA署名済みのSSL証明書をお持ちの場合は、手順4から証明書のインストールに直接進んでください。それ以外の場合は、以下の手順1~3に従って、新しいCA署名付き証明書を生成してインストールしてください。

  1. OpenSSLを使用して秘密鍵を生成するため、ターミナルで以下のコマンドを実行してください:
    openssl genrsa -des3 -out server.key 2048
    このコマンドは2048ビットのRSA秘密鍵を生成し、パスフレーズで保護された状態でserver.keyに保存します。
  2. 秘密鍵を使用してCertificate Signing Request(CSR)(証明書署名要求)を作成します。このリクエストは、署名のために認証局(CA)に送信されます。次のコマンドを実行してください。
    openssl req -new -key server.key -out server.csr
    このプロセス中に、鍵のPassphraseの入力と、Common NameHostnameまたはIP Addressなどの情報の提供を求められます。ここで、Common NameはPostgreSQLクラスターのFully Qualified Domain Name (FQDN)である必要があります。
  3. 生成されたCSR(server.csr)を、VeriSignThawteRapidSSLなどのサードパーティー認証局に送信して署名してもらいます。CSRの提出方法および署名プロセスの完了方法については、各認証局のドキュメントを参照してください。このサービスは通常有料です。
    数日後には、署名済みのSSL証明書と認証局のルート証明書が .cer ファイルとして届きます。
  4. MMCコンソールを使用して、PostgreSQLクラスターマシンにサーバー証明書をインストールします。
    1. [Start]をクリックし、[Run]を選択します。「Run」ダイアログボックスに「MMC」と入力し、Enterキーを押します。これにより、Microsoft Management Console (MMC) が開きます。
    2. Consoleメニューから「Add/Remove Snap-in」を選択します。
    3. 「Add」をクリックし、次に「Certificates」を選択して、もう一度「Add」をクリックします。
    4. プロンプトが表示されたら、Computer Accountの証明書を管理するオプションを選択してください。
    5. 「Manage User Certificates (Local Computer) 」 >> 「Personal」 >> 「Certificates」に移動します。
    6. 「Certificates」を右クリックし、「All Tasks」を選択してから、「Import」をクリックします。
    7. 署名済みのサーバー証明書の保存場所を検索し、証明書を選択してインポート処理を完了してください。
      install-third-party
  5. 以下の手順に従って、PAM360にCAルート証明書をインストールしてください。
    1. CAのルート証明書を<PAM360-Installation-Directory>\binフォルダにコピーします。
    2. <PAM360-Installation-Directory>\binフォルダから、以下のコマンドを実行します。
      importCert.bat <Absolute-Path-of-the-Certificate>
      <Absolute-Path-of-the-Certificate> を、コピーしたルート証明書ファイルの実際のパスに置き換えてください。このコマンドは、ルート証明書をPAM360証明書ストアに追加します。

これらの手順に従うことで、秘密鍵と証明書リクエストを生成し、CAに署名を依頼し、サーバー証明書とルート証明書をそれぞれのマシンにインストールすることができます。

2.2 PostgreSQLクラスターの自己署名SSL生成

自己署名SSL証明書をお持ちの場合は、セクション2.2.1の証明書インストールから直接進めてください。そうでない場合は、以下の手順に従って新しい自己署名証明書を生成してインストールしてください。

  1. <PostgreSQL Installation Directory>\dataに移動し(証明書の作成先)、管理者としてコマンドプロンプトを開いて、PostgreSQLデータベースクラスター用のSSLルートCAを作成するための以下の手順を実行します。
  2. 秘密鍵とルート証明書を作成するには、以下のコマンドを実行します。
    openssl genrsa -passout pass:1111 -des3 -out rootca.key 4096
    これにより、Triple DES暗号化を使用してパスフレーズ`1111`で暗号化された4096ビットRSA秘密鍵`rootca.key`が生成されます。
    openssl req -passin pass:1111 -new -x509 -days 365 -key rootca.key -out rootca.crt
    これにより、パスフレーズ`1111`で暗号化されたRSA秘密鍵`rootca.key`を使用して、365日間有効な自己署名ルートCA証明書`rootca.crt`が作成されます。
  3. ルート証明書を作成するために、必要な証明書の詳細を適宜入力してください。例:コモンネームとしてサーバー名を、SANネームとしてサーバーのIPアドレスを入力します。
  4. サーバー秘密鍵およびサーバー証明書リクエストを作成するには、次のコマンドを実行してください:
    openssl genrsa -passout pass:1111 -des3 -out server.key 4096
    これにより、Triple DES暗号化を使用してパスフレーズ`1111`で暗号化された、サーバー用の4096ビットRSA秘密鍵`server.key`が生成されます。
    openssl req -passin pass:1111 -new -key server.key -out server.csr
    これにより、パスフレーズ`1111`で暗号化されたRSA秘密鍵`server.key`を使用して、サーバーのCSR`server.csr`が生成されます。
  5. サーバー証明書を作成するために、必要な証明書の詳細を適宜入力してください。例:コモンネームとしてサーバー名を、SANネームとしてサーバーのIPアドレスを入力します。
  6. ルートCAである `rootca.crt` および `rootca.key` を使用して、サーバーCSRである `server.csr` に署名するコマンドを実行してください。これにより、有効期間365日のサーバー証明書 `server.crt` が生成されます。その際、シリアル番号を設定し、復号用のパスフレーズとして `1111` を使用してください。
    openssl x509 -req -passin pass:1111 -days 365 -in server.csr -CA rootca.crt -CAkey rootca.key -set_serial 01 -out server.crt
    上記のコマンドを実行すると、server.csrはrootca.crtで署名されます。発行された証明書を信頼するために、rootca.crtをサーバー上の該当するトラストストアに追加してください。秘密鍵、証明書、およびCSRは、必要に応じて任意の名前を付けることもできます。

    注意

    PostgreSQLデータベースにワイルドカード証明書を使用する場合は、ワイルドカード証明書と対応する秘密鍵ファイルを<PostgreSQL Installation Directory>\dataディレクトリパスに配置してください。

SSLを使用するようにPostgreSQLデータベースクラスターを設定するには、以下の手順に従ってください:

  1. <PostgreSQL Installation Directory>\dataに移動し、管理者権限でpostgresql.confファイルを開きます。
  2. 接続設定のlisten_addressesを確認し、外部ホストからの接続を許可するパラメーターlisten_addressesを編集または確認します。

    listen_addresses = '*'

  3. postgresql.conf内のSSLセクションを検索し、すべてのSSLパラメーターのコメントを解除します。
  4. 次に、以下に示すように証明書情報を使用して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='')。

  5. 次に、PostgreSQLデータベースクラスターのルートCA証明書をPAM360にインポートします。証明書のインポートの詳細な手順については、FAQ の証明書セクションのQuestion 11を参照してください。
  6. 次に、変更を有効にするためにPostgreSQLデータベースを再起動します。

2.3 SSL接続の検証

CA署名証明書または自己署名証明書のいずれかを使用して、SSL接続設定を検証するには、以下の手順を実行してください。

  1. <PostgreSQL Installation Directory>\bin に移動し、管理者権限でコマンドプロンプトを開きます。
  2. PostgreSQLデータベースに接続するためのコマンドを実行します。
    psql "postgresql://username@hostname/dbname?sslmode=require"
    ユーザー名、ホスト名、およびDB名をご使用のPostgreSQLクラスターの詳細に置き換えます。例:psql "postgresql://postgres@127.0.0.1/postgres?sslmode=require"
  3. 次に、PostgreSQLデータベースのインストール時に入力したPostgreSQLデータベースのパスワードを入力します。
  4. パスワードを入力すると、SSL接続が正常に確立されたことを示す以下のメッセージが表示されます。
    pgsql-db
  5. 次に、<PostgreSQL Installation Directory>\dataに移動し、rootca.certを使用してPAM360にインポートします。証明書のインポートの詳細な手順については、FAQ の証明書セクションのQuestion 11を参照してください。