新規に構築したFEPpgpool2コンテナでscram-sha-256認証を有効化するための手順を説明します。
scram-sha-256認証の有効化に必要なリソースを作成します。
暗号化キー用シークレットを作成
scram-sha-256認証に使用するパスワードを記載した暗号化キー用シークレットpgpoolkeySecretを作成します。
このとき、キーはpgpoolkeyとし、バリューには暗号化に使用するパスワードをbase64で暗号化した値を指定します。
apiVersion: v1 kind: Secret metadata: name: scrampgpoolkey-secret type: Opaque data: pgpoolkey: cGdwb29sa2V5cGFzc3dvcmQ=
シークレット作成後、FEPPgpool2 カスタムリソースに作成したシークレット名を記載します。これにより、作成されたシークレットがFEPpgpool2コンテナにボリューム内のファイルとしてマウントされ、暗号化に使用するパスワードがFEPpgpool2コンテナに引き渡されます。
scram-sha-256認証を使用し、かつ、シークレットを作成しない場合、オペレーターがFEPPgpool2カスタムリソースの情報を基に、以下のシークレットを自動で作成します。
apiVersion: v1 kind: Secret metadata: name: "{{spec.name}}-feppgpool2-pgpoolkey” type: Opaque data: pgpoolkey: K1kxOVZxKzRrdWluT3A2UHNQMzcwcUJuOUZ2UUoxUklNMms2cktIY1NkekFOemZBYkhjZDFadG5VR3ZtTVR6Uw==
バリューにはオペレーターがランダムで生成したパスワードをbase64で暗号化した値が設定されます。この場合のシークレット名は、“{{spec.name}}-feppgpool2-pgpoolkey”となります。
参考
scram-sha-256暗号化では暗号化キーを使用します。この暗号化キーはpool_passwdファイルにAES暗号化パスワードが保存されていた場合、パスワードを復号化するためにFEPpgpool2コンテナで使用します。そのため、暗号化キーと復号キーは同じものである必要があります。
データベースユーザー情報用シークレットを作成
FEPpgpool2コンテナのクライアント認証に使用するユーザー/パスワードは、FEPサーバコンテナのデータベースで使用するデータベースユーザーと同様のものである必要があります。
FEPpgpool2コンテナに、FEPサーバコンテナのデータベースユーザーのユーザー名とパスワードの情報を引き渡すためのデータベースユーザー情報用シークレットuserinfoSecretを作成します。
ユーザー名とパスワードは下記のような形式でシークレットに記載します。
apiVersion: v1 kind: Secret metadata: name: scramuserinfo-secret #任意の名前を指定 type: Opaque data: user1: dXNlcjFwYXNzd2Q= user2: dXNlcjJwYXNzd2Q=
オペレーターが自動で作成するデータベースユーザーについては、オペレーターがFEPCluster カスタムリソースおよびFEPサーバコンテナからデータベースユーザー名とパスワードの情報を取得するため、シークレットの作成は不要です。
scram-sha-256認証を使用し、かつ、シークレットを作成しない場合、オペレーターが以下のシークレットを自動で作成します。
apiVersion: v1 kind: Secret metadata: name: ”{{spec.name}}-feppgpool2-userinfo” type: Opaque data:
この場合のシークレット名は、“{{spec.name}}-feppgpool2-userinfo”となります。
scram-sha-256認証を有効化するには、FEPPgpool2カスタムリソースを以下の手順で編集し、配置してください。
シークレットの情報を設定
FEPPgppol2カスタムリソースのspec.clientAuthMethodにscramを指定します。
また、暗号化キー用シークレット(spec.scram.pgpoolkeySecret)に“4.14.2.1 scram-sha-256認証の有効化に必要なリソースの作成”の手順1で作成したシークレット名を記載します。同様に、データベースユーザー情報用シークレット(spec.scram.userinfoSecret)に“4.14.2.1 scram-sha-256認証の有効化に必要なリソースの作成”の手順2で作成したシークレット名を記載します。
spec: clientAuthMethod: scram scram: pgpoolkeySecret: scrampgpoolkey-secret userinfoSecret: scramuserinfo-secret
これにより、作成されたシークレットがFEPpgpool2コンテナにボリューム内のファイルとしてマウントされ、ユーザー名とパスワードの情報がFEPpgpool2コンテナに通知されます。
spec.customhbaを編集
FEPPgpool2カスタムリソースのspec.customhbaフィールドを編集し、scram-sha-256認証用のエントリを追加します。
pgpool.confを編集
FEPPgpool2カスタムリソースのspec.customparamsフィールドを編集し、認証設定に関連するパラメータを編集します。
enable_pool_hba=true