ページの先頭行へ戻る
Enterprise Postgres 16 SP1 オペレーターユーザーズガイド

2.3.13 ldap2pgによるユーザー同期

ldap2pgはLDAP構成のシステムにおいて、LDAPサーバ上にあるユーザーなどの管理情報をデータベースサーバに反映し、データベースロールを管理します。ldap2pgにより、LDAPディレクトリとFEPのユーザーアカウントとの同期を自動的に行うことができます。同期はldap2pgによって定期的に行われます。同期の頻度は、cronジョブのようなエントリとして定義できます。ldap2pgからLDAPディレクトリへの接続およびFEPからLDAPディレクトリへの接続するには、LDAP、LDAPSおよびLDAP over TLSをサポートする必要があります。

postgres、repluser、rewind_user、mydbuserなどの組み込みOperatorユーザーは、通常のFEPオペレーターおよびFEPClusterの動作を妨げる可能性があるため、ldap2pgによって作成、削除、変更しないでください。FEPオペレーターによって提供されるデフォルトのldap2pg.ymlでは、これらのユーザーは除外されます。

ldap2pgを利用するためには、以下が必要です。

LDAP接続情報

ldapuri、basedn、binddnを含むLDAPディレクトリの詳細を定義し、ldap2pgで利用できるようにする必要があります。ldap.confは、このような情報を格納するために使用されます。これは、ldap2pgやFEPなど、LDAPディレクトリへの接続情報を必要とするすべてのソフトウェアで使用できます。

ldap.confの詳細はsecretに格納され、/etc/openldap/ldap.conf配下のfep-patroniにマウントされます。ユーザーは、ldap2pg同期を有効にする前に、このシークレットを事前に作成する必要があります。ldap2pgが有効なときにこのシークレットが存在しない場合、オペレーターは接続情報をコメントアウトしたサンプルldap.confを作成します。ユーザーは、対応するLDAP接続情報でシークレットを更新できます。この更新された情報は、kubeletがsyncPod関数を実行したときにfep-patroniに反映されます。

シークレットには、任意の名前を付けることができます (例: <fep-cluster>-ldapconf)。キーは“ldap.conf”であり、その値には LDAP設定が含まれている必要があります。

LDAPディレクトリ用の信頼できるCAバンドル

LDAPディレクトリがプライベートCAによって署名された証明書を使用して接続を保護している場合、ルートCAまでの証明書のチェーンは、LDAPまたはTLS経由のLDAPのどちらであっても、安全な接続のための信頼できる証明書として ldap2pgおよびFEPに提供される必要があります。この一連の証明書はConfigMapに格納され、/tls/ldap/ca.crt配下のfep-patroniにマウントされます。このような信頼できる証明書の使用はオプションですが、LDAPサーバの信頼性を認証するために証明書の使用を推奨します。

ConfigMap には、任意の名前を付けることができます (例: <fep-cluster>-cacrt)。キーは“ca.crt”であり、その値にはユーザーが提供するLDAP サーバ証明書が含まれている必要があります。

ldap2pg.yml

ldap2pgがLDAPディレクトリおよびFEPと対話するための設定ファイルです。

ldap2pg.ymlの詳細はConfigMapに格納され、/tmp/.config/ldap2pg.yml配下のfep-patroniにマウントされます。ユーザーは、ldap2pg同期を有効にする前に、このConfigMapを事前に作成する必要があります。ldap2pgが有効な場合にConfigMapが存在しないときには、オペレーターがサンプルのldap2pg.ymlを作成します。ユーザーは、このConfigMapを更新できます。更新された情報は、kubeletがsyncPod関数を実行したときにfep-patroniに反映されます。

ConfigMap には、任意の名前を付けることができます (例: <fep-cluster>-ldap2pgyml)。キーは“ldap2pg.yml”であり、その値にはldap2pgの設定が含まれている必要があります。

2.3.13.1 ldap2pg用にFEPClusterカスタムリソースを更新する

ldap2pgを利用するには、FEPClusterカスタムリソースを更新する必要があります。更新手順について説明します。

まず、LDAP構成とldap2pg 構成の両方に対して以下のリソースを作成します。

次に、spec.ldapおよび spec.ldap2pgエントリを以下のFEPClusterカスタムリソースに追加します(下図を参照)。

以下の手順に従って、ldap2pg の FEPClusterカスタムリソースを更新します。

各手順では、OpenShiftコンソールおよびコマンドラインを使用した方法を説明しています。

  1. LDAP構成 (ldap.conf)のシークレットを作成します。

    LDAP構成にはLDAP接続情報が含まれます。

    この例では、LDAP サーバが ldap-server.testprj.svc で実行され、ポート636でLDAPS接続をlistenしていると仮定します。ベースDNはdc=example,dc=org です。LDAP サーバへの接続にはLDAPユーザー cn=admin,dc=example,dc=orgが使用され、パスワードは“mypassword”です。

    LDAP構成の(ldap.conf)

    $ cat ldap.conf
    
    #
    # LDAP Defaults
    #
    
    #Refer to https://www.openldap.org/software/man.cgi?query=ldap.conf for full configuration details
    # This file should be world readable but not world writable.
    
    #BINDDN: This is the user to bind to LDAP server
    BINDDN  cn=admin,dc=example,dc=org
    
    #BASE: Set it to the base DN where search will begin
    BASE   dc=example,dc=org
    
    #PASSWORD: Password of user as defined in BINDDN
    PASSWORD mypassword
    
    #URI: Specify the URI of LDAP server
    URI   ldaps://ldap-server.testprj.svc:636
    
    #SIZELIMIT    12
    #TIMELIMIT    15
    #DEREF        never
    TIMEOUT       15
    
    # TLS certificates (needed for GnuTLS)
    # TLS_CACERT      /tls/ldap/ca.crt
    
    # Specifies what checks to perform on server certificates in a TLS session. We are
    # being relax here even if server certificate cannot be verified.
    TLS_REQCERT allow

    • OpenShift でシークレットを作成

    • コマンドラインでシークレットを作成

      $ kubectl -n ldap-ss create secret generic ldap-ss-ldapconf --from-file=ldap.conf
      secret/mysecret created

  2. LDAP サーバ証明書に署名する証明書チェーン(ca.crt)を含むConfigMapを作成します。

    LDAP サーバ証明書の(ca.crt)

    $ cat ca.crt
    
    -----BEGIN CERTIFICATE-----
    xxx root cert xxx
    -----END CERTIFICATE-----
    -----BEGIN CERTIFICATE-----
    yyy intermediate cert yyy
    -----END CERTIFICATE-----

    • OpenShiftでConfigMapを作成

    • コマンドラインでConfigMapを作成

      $ kubectl -n ldap-ss create configmap ldap-ss-cacrt --from-file=ca.crt
      configmap/ldap-ss-cacrt created

  3. ldap2pg.ymlファイルのConfigMapを作成します。

    下記のユーザーはオペレーターで管理されているため、ldap2pgの管理対象から外すためにpostgresセクションのroles_blacklist_queryに指定してください。

    • postgresユーザー

    • FEPClusterカスタムリソースのspec.fepChildCrVal.sysUsersに指定されているユーザー

    その他のldap2pg.ymlの設定は“Fujitsu Enterprise Postgres 導入ガイド(クライアント編)”の“ldap2pg”を参照してください。

    ldap2pg 構成 (ldap2pg.yml の postgres セクション)の例

    postgres:
      roles_blacklist_query: [postgres, repluser, rewind_user, pwsyncuser, pg_*, pgx_*, ]
      databases_query: [postgres]

    • OpenShiftでConfigMapを作成

    • コマンドラインでConfigMapを作成

      $ kubectl -n ldap-ss create configmap ldap-ss-ldap2pgyml --from-file=ldap2pg.yml
      configmap/ldap-ss-ldap2pgyml created

  4. spec.ldap および spec.ldap2pg エントリを FEPClusterカスタムリソース (fepcluster.yaml) に追加します。

    FEPClusterの作成および更新中に、以下のエントリをFEPClusterカスタムリソース に追加する必要があります。

    キー

    説明

    spec.ldap.caConfigMapRef

    ldap-ss-cacrt

    手順1を参照

    spec.ldap.ldapconfSecretRef

    ldap-ss-ldapconf

    手順2を参照

    spec.ldap2pg.ldap2pgymlConfigMapRef

    ldap-ss-ldap2pgyml

    手順3を参照

    spec.ldap2pg.mode

    省略値: check

    spec.ldap2pg.schedule

    省略値:‘*/5 * * * *’

    spec.ldap2pg.enable

    省略値: true

    spec.ldap2pg.enableをfalseに設定すると、ldap2pg機能を無効にできます。


    ldap2pgを有効にする場合のFEPClusterカスタムリソースの例(fepcluster.yaml)

    $ cat fepcluster.yaml
    
    apiVersion: fep.fujitsu.io/v2
    kind: FEPCluster
    metadata:
      name: ldap-ss
      namespace: ldap-ss
    spec:
      ldap:
        caConfigMapRef: ldap-ss-cacrt
        ldapconfSecretRef: ldap-ss-ldapconf
      ldap2pg:
        ldap2pgymlConfigMapRef: ldap-ss-ldap2pgyml
        mode: check
        schedule: '*/5 * * * *'
        enable: true

    • OpenShiftでFEPClusterカスタムリソースを更新

    • コマンドラインでFEPClusterカスタムリソースを更新

      $ kubectl apply -f fepcluster.yaml