AlloyDB Omni での Active Directory 構成はオプションです。デフォルトでは無効になっています。この構成メカニズムを使用できるのは、認証に Active Directory サーバーを使用する環境のみです。
始める前に
Active Directory 認証を有効にする
AlloyDB Omni で Active Directory 認証を有効にするには、次の操作を行います。ここでは、プログラムがセキュリティ サービスにアクセスできるようにするアプリケーション プログラミング インターフェースである Generic Security Service Application Program Interface(GSSAPI)の構成も行います。
/var/lib/postgresql/data/pg_hba.conf
ファイルのhost all all all scram-sha-256
エントリの前に、
次のエントリを追加します。次の Docker コマンドを実行して、コンテナ内に
gss
を追加します。docker exec CONTAINER_NAME sed -i 's;^host all all all scram-sha-256$;hostgssenc all all 0.0.0.0/0 gss map=gssmap\n&;' /var/lib/postgresql/data/pg_hba.conf
次の Docker コマンドを実行して、
pg_hba.conf
ファイルがコンテナ内にあることを確認します。docker exec CONTAINER_NAME cat /var/lib/postgresql/data/pg_hba.conf
ファイルに次のエントリがあることを確認します。
hostgssenc all all 0.0.0.0/0 gss map=gssmap
詳細については、pg_hba.conf ファイルをご覧ください。
keytab ファイルを AlloyDB Omni イメージ内のデータ ディレクトリにコピーします。
docker cp PATH TO KEYTAB FILE CONTAINER_NAME:/var/lib/postgresql/data/alloydb.keytab docker exec CONTAINER_NAME chmod 600 /var/lib/postgresql/data/alloydb.keytab docker exec CONTAINER_NAME chown postgres:postgres /var/lib/postgresql/data/alloydb.keytab
keytab ファイルは、Kerberos によって PostgreSQL サーバー用に生成されます。認証の詳細については、GSSAPI 認証をご覧ください。
keytab ファイルのエントリを
/var/lib/postgresql/data/DATA_DIR/postgresql.conf
ファイルに追加します。次の Docker コマンドを実行して、コンテナ内にエントリを追加します。
docker exec CONTAINER_NAME sed -i '$akrb_server_keyfile='"'"'/var/lib/postgresql/data/alloydb.keytab'"'" /var/lib/postgresql/data/postgresql.conf
次の Docker コマンドを実行して、コンテナ内の
postgresql.conf
ファイルを確認します。docker exec CONTAINER_NAME tail /var/lib/postgresql/data/postgresql.conf
ファイルに次のエントリがあることを確認します。
krb_server_keyfile=/var/lib/postgresql/data/alloydb.keytab
詳細については、krb_server_keyfile をご覧ください。
省略可:
/var/lib/postgresql/data/DATA_DIR/pg_ident.conf
ファイルにエントリを追加します。GSSAPI などの外部認証システムを使用する場合、接続を開始したオペレーティング システム ユーザーの名前が、使用するデータベース ユーザー(ロール)と同じではない場合があります。
この場合、
/var/lib/postgresql/data/DATA_DIR/pg_ident.conf
ファイルにシステム ユーザーと PostgreSQL ユーザーのマッピングを指定します。docker exec -it CONTAINER_NAME bash $ echo -e " gssmap /^(.*)@EXAMPLE\.COM$ \1 gssmap /^(.*)@example\.com$ \1 " | column -t | tee -a /var/lib/postgresql/data/pg_ident.conf
ユーザー名のマッピングを実装するには、
pg_hba.conf
ファイルの options フィールドにmap=gssmap
を指定します。ID ベースの認証の詳細については、ID マップをご覧ください。
次のコマンドを使用して PostgreSQL 構成を再読み込みします。
docker exec -it CONTAINER_NAME psql -h localhost -U postgres psql (16.3) Type "help" for help. postgres=# select pg_reload_conf();
Active Directory 認証をテストする
Active Directory 認証が機能していることを確認する手順は次のとおりです。
kinit
を使用して Active Directory にログインします。通常
kinit
を実行するマシンから、次のpsql
コマンドを実行します。root@4f6414ad02ef:/# kinit AD_USER_NAME Password for user1@YOUR.REALM: root@4f6414ad02ef:/# psql --h ALLOYDB_SERVER_HOST_NAME -U AD_USER_NAME psql (16.6 (Ubuntu 16.6-0ubuntu0.24.04.1), server 16.3) GSSAPI-encrypted connection Type "help" for help. user1=#
Active Directory 認証を無効にする
AlloyDB Omni で Active Directory 認証を無効にするには、次の手順で GSSAPI を無効にします。
gss
認証方法を参照するpg_hba.conf
ファイル内のエントリを削除します。docker exec CONTAINER_NAME sed -i '/hostgssenc all all 0.0.0.0\/0 gss map=gssmap/d' /var/lib/postgresql/data/pg_hba.conf
次のコマンドを使用して PostgreSQL 構成を再読み込みします。
docker exec -it CONTAINER_NAME psql -h localhost -U postgres psql (16.3) Type "help" for help. postgres=# select pg_reload_conf();