Active Directory と AlloyDB Omni を統合する

ドキュメントのバージョンを選択してください。

このページでは、既存の Active Directory 実装と AlloyDB Omni を統合して、既存のユーザー名とパスワードで AlloyDB Omni データベースにアクセスできるようにする方法について説明します。Active Directory インテグレーションでは、AlloyDB Omni との通信のデフォルトの認証メカニズムとして Kerberos が使用されます。 詳細については、Active Directory の概要をご覧ください。

AlloyDB Omni での Active Directory 構成はオプションです。デフォルトでは無効になっています。この構成メカニズムを使用できるのは、認証に Active Directory サーバーを使用する環境のみです。

始める前に

Active Directory 認証を有効にする

AlloyDB Omni で Active Directory 認証を有効にするには、次の操作を行います。ここでは、プログラムがセキュリティ サービスにアクセスできるようにするアプリケーション プログラミング インターフェースである Generic Security Service Application Program Interface(GSSAPI)の構成も行います。

  1. /var/lib/postgresql/data/pg_hba.conf ファイルの host all all all scram-sha-256 エントリの前に、
    次のエントリを追加します。

    1. 次の 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
      
    2. 次の Docker コマンドを実行して、pg_hba.conf ファイルがコンテナ内にあることを確認します。

      docker exec CONTAINER_NAME cat /var/lib/postgresql/data/pg_hba.conf
      
    3. ファイルに次のエントリがあることを確認します。

      hostgssenc all all 0.0.0.0/0 gss map=gssmap
      

      詳細については、pg_hba.conf ファイルをご覧ください。

  2. 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 認証をご覧ください。

  3. keytab ファイルのエントリを /var/lib/postgresql/data/DATA_DIR/postgresql.conf ファイルに追加します。

    1. 次の Docker コマンドを実行して、コンテナ内にエントリを追加します。

      docker exec CONTAINER_NAME sed -i '$akrb_server_keyfile='"'"'/var/lib/postgresql/data/alloydb.keytab'"'" /var/lib/postgresql/data/postgresql.conf
      
    2. 次の Docker コマンドを実行して、コンテナ内の postgresql.conf ファイルを確認します。

      docker exec CONTAINER_NAME tail  /var/lib/postgresql/data/postgresql.conf
      
    3. ファイルに次のエントリがあることを確認します。

      krb_server_keyfile=/var/lib/postgresql/data/alloydb.keytab
      

      詳細については、krb_server_keyfile をご覧ください。

  4. 省略可: /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 マップをご覧ください。

  5. 次のコマンドを使用して 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 認証が機能していることを確認する手順は次のとおりです。

  1. kinit を使用して Active Directory にログインします。
  2. 通常 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 を無効にします。

  1. 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
    
  2. 次のコマンドを使用して PostgreSQL 構成を再読み込みします。

    docker exec -it CONTAINER_NAME psql -h localhost -U postgres
    psql (16.3)
    Type "help" for help.
    postgres=# select pg_reload_conf();
    

次のステップ