16.4. Active Directory と Directory Server の同期の設定

同期の設定は、レプリケーションの設定と非常に似ています。このデータベースを changelog を使用してサプライヤーとして設定し、同期を定義する合意を作成する必要があります。同期ユーザーである一般的なユーザーアイデンティティーは、Active Directory (AD) ドメインコントローラー (DC) に接続して、Directory Server から AD に更新を適用し、更新を Directory Server と同期するために AD をチェックします。
注記
ユーザーが Directory Server および AD のアカウントを使用できるようにするには、パスワードを同期します。パスワードの同期には、暗号化された接続を使用する必要があります。
ユーザーとグループのエントリーの同期は、AD 側からのパッシブなものです。Directory Server は AD に更新し、AD ドメインの更新をポーリングします。パスワードには、AD サーバーには別のパスワードサービスが必要です。このサービスは、AD ドメインから Directory Server にパスワードの変更をアクティブに送信します。

16.4.1. ステップ 1: Directory Server ホストで TLS の有効化

Password Sync サービスは、暗号化された接続でパスワードを同期する必要があります。Directory Server インスタンスで TLS が有効になっていない場合は、有効にします。詳細については、「Directory Server での TLS の有効化」 を参照してください。

16.4.2. ステップ 2: AD ドメインでのパスワード複雑性の有効化

グループポリシーを使用して、AD ドメインでパスワードの複雑さを有効にします。以下に例を示します。
  1. Group Policy Management コンソールを開き、ドメインに新しい Group Policy Object (GPO) を作成します。
    Group Policy Management コンソールの使用に関する詳細は、Windows ドキュメントを参照してください。
  2. GPO を右クリックし、Edit を選択して Group Policy Management Editor を開きます。
  3. Computer ConfigurationWindows SettingsSecurity SettingsAccount PoliciesPassword Policy に移動し、Password must meet complexity requirements という名前のポリシーをダブルクリックします。
  4. ポリシーを有効にし、OK をクリックします。
  5. Group Policy Management Editor および Group Policy Management コンソールを閉じます。

16.4.3. ステップ 3: AD からの CA 証明書の抽出

ルート認証局 (CA) 証明書を抽出し、Directory Server ホストにコピーします。
  • AD CA 証明書が自己署名の場合は、以下を実行します。
    1. Certification Authority アプリケーションがインストールされている AD DC で Super key+R の組み合わせを押して Run ダイアログを開きます。
    2. certsrv.msc コマンドを入力して OK をクリックすると、Certification Authority アプリケーションが開きます。
    3. ローカルの認証局の名前を右クリックし、Properties を選択します。
    4. 全般 タブで、CA certificates フィールドでエクスポートする証明書を選択し、View Certificate をクリックします。
    5. 詳細 タブで、 ファイルにコピー をクリックして 証明書のエクスポートウィザード を起動します。
    6. 次へ をクリックしてから、base-64 でエンコードされた X.509 (.CER) を選択します。
    7. エクスポートされたファイルに適切なディレクトリーおよびファイル名を指定します。次へ をクリックして証明書をエクスポートしてから、完了をクリックします。
    8. ルート CA 証明書を Directory Server ホストにコピーします。
  • AD CA 証明書が外部 CA により署名されている場合は、以下を行います。
    1. ルート CA を指定します。以下に例を示します。
      # openssl s_client -connect adserver.example.com:636
      CONNECTED(00000003)
      depth=1 C = US, O = Demo Company, OU = IT, CN = Demo CA-28
      verify error:num=20:unable to get local issuer certificate
      verify return:0
      ---
      Certificate chain
       0 s:/C=US/O=Demo Company/OU=IT/CN=adserver.example.com
         i:/C=US/O=Demo Company/OU=IT/CN=Demo CA-1
       1 s:/C=US/O=Demo Company/OU=IT/CN=Demo CA-1
         i:/C=US/O=Demo Company/OU=IT/CN=Demo Root CA 2
      上記の例では、AD サーバーの CA 証明書は、CN=Demo Root CA 2 で署名された CN=Demo CA-1 で署名されています。つまり、CN=Demo Root CA 2 が root CA であることがわかります。
    2. CA 証明書の取得方法についてのルート CA の Operator にお問い合わせください。
    3. ルート CA 証明書を Directory Server ホストにコピーします。

16.4.4. ステップ 4: Directory Server の NSS データベースから CA 証明書の拡張

Directory Server の NSS データベースから CA 証明書を抽出するには、以下を実行します。
  1. データベースの証明書をリスト表示します。
    # certutil -d /etc/dirsrv/slapd-instance_name/ -L
    
    Certificate Nickname                Trust Attributes
                                        SSL,S/MIME,JAR/XPI
    
    Server-Cert                         u,u,u
    Example CA                          C,,
  2. データベースから CA 証明書を抽出します。たとえば、Example CA ニックネームで CA 証明書を抽出し、/root/ds-ca.crt ファイルに保存します。
    # certutil -d /etc/dirsrv/slapd-instance_name/ -L -n "Example CA" -a > /root/ds-ca.crt
  3. CA 証明書を AD DC にコピーします。

16.4.5. ステップ 5: 同期アカウントの作成

AD と Directory Server の同期には、AD にアカウントが 1 つ、Directory Server にアカウントが 1 つ必要です。本セクションでは、これらのアカウントの作成に関する詳細を説明します。

Directory Server でのアカウントの作成

AD DC は、Password Sync サービスの Directory Server アカウントを使用して、パスワードを Directory Server と同期します。たとえば、Directory Server で cn=pw_sync_user,dc=config ユーザーを作成するには、次のコマンドを実行します。
  1. ユーザーアカウントを作成します。
    # ldapadd -D "cn=Directory Manager" -W -p 389 -h server.example.com -x
    
    dn: cn=pw_sync_user,cn=config
    objectClass: inetorgperson
    objectClass: person
    objectClass: top
    cn: pw_sync_user
    sn: pw_sync_user
    userPassword: password
    passwordExpirationTime: 20380101000000Z
    これにより、cn=pw_sync_user,dc=config アカウントが作成され、その有効期限が 2038 年 1 月 1 日に設定されます。
    重要
    セキュリティー上の理由から、同期されたサブツリーにアカウントを作成しないでください。
  2. 同期されるサブツリーの上部に ACI を設定し、write および compare パーミッションを cn=pw_sync_user,dc=config ユーザーに付与します。たとえば、このような ACI を ou=People,dc=example,dc=com エントリーに追加するには、次のコマンドを実行します。
    # ldapmodify -D "cn=Directory Manager" -W -p 389 -h server.example.com -x
    
    dn: ou=People,dc=example,dc=com
    changetype: modify
    add: aci
    aci: (targetattr="userPassword")(version 3.0;acl "Password synchronization";
     allow (write,compare) userdn="ldap:///cn=pw_sync_user,dc=config";)
  3. Directory Server が、パスワードをクリアテキストで保存できるように設定します。
    # dsconf -D "cn=Directory Manager" ldap://server.example.com config replace nsslapd-unhashed-pw-switch=on
    Directory Server は Active Directory 以外のパスワード暗号化を使用するため、Directory Server は、パスワードをクリアテキストで Windows サーバーに送信する必要があります。ただし、クリアテキストパスワードは、パスワードの同期に必要な TLS 暗号化接続で送信されるため、ネットワークに公開されません。

AD でのアカウントの作成

Directory Server は、更新の送受信に、AD への接続時に AD アカウントを使用します。このアカウントは Domain Admins グループのメンバーであるか、AD に同等のパーミッションがある必要があります。AD アカウントの作成方法は、AD ドキュメントを参照してください。

16.4.6. ステップ 6: Password Sync サービスのインストール

AD のすべての書き込み可能な DC に Password Sync をインストールします。Password Sync サービスのインストールの詳細は、Red Hat Directory Server Installation Guide の 『Installing the password synchronization service』 セクションを参照してください。
Red Hat がサポートする Password Sync サービスを実行しているオペレーティングシステムの一覧は、Red Hat Directory Server リリースノート を参照してください。

16.4.7. ステップ 7: Password Sync サービスの証明書データベースを使用するように CA Certificate Directory Server を追加

Password Sync サービスがインストールされているすべての DC で、Directory Server が使用する CA 証明書を Password Sync サービスの証明書データベースに追加します。
  1. C:\Program Files\Red Hat Directory Password Synchronization\ ディレクトリーに移動します。
    > cd "C:\Program Files\Red Hat Directory Password Synchronization\"
  2. 現在のディレクトリーに証明書データベースを作成します。
    > certutil.exe -d . -N
    certutil.exe ユーティリティーは、作成する新規データベースにパスワードを設定するようにプロンプトを表示します。
  3. Directory Server インスタンスが使用する CA 証明書をインポートします。「ステップ 4: Directory Server の NSS データベースから CA 証明書の拡張」にあるこの証明書を Windows DC にコピーしました。たとえば、C:\ds-ca.crt ファイルから証明書をインポートし、Example CA ニックネームを使用してこれをデータベースに保存するには、以下を実行します。
    > certutil.exe -d . -A -n "Example CA" -t CT,, -a -i "C:\ds-ca.crt"
  4. 必要に応じて、CA 証明書がデータベースに正しく保存されていることを確認します。
    > certutil.exe -d . -L
    
    Certificate Nickname                Trust Attributes
                                        SSL,S/MIME,JAR/XPI
    
    Example CA                          CT,,
  5. Windows DC を再起動します。システムを再起動するまで、Password Sync サービスは利用できません。
注記
Password Sync のインストール時に AD ユーザーアカウントが存在する場合は、パスワードが変更するまで、サービスはこれらのアカウントのパスワードを同期できません。これは、Password Sync が Active Directory に格納されたらパスワードを復号できないために発生します。AD ユーザーのパスワードリセットを有効にする方法は、Active Directory のドキュメントを参照してください。

16.4.8. ステップ 8: AD が使用する CA 証明書を Directory Server の証明書データベースに追加

Directory Server ホストで、AD が使用する CA 証明書を証明書データベースに追加します。
  1. AD が使用する CA 証明書をインポートします。「ステップ 3: AD からの CA 証明書の抽出」にある証明書を Directory Server ホストにコピーしている。たとえば、/root/ad-ca.crt ファイルから証明書をインポートし、Example CA ニックネームを使用してこれをデータベースに保存するには、以下を実行します。
    > certutil -d /etc/dirsrv/slapd-instance_name/ -A -n "Example CA" -t CT,, -a -i /root/ad-ca.crt
  2. 必要に応じて、CA 証明書がデータベースに正しく保存されていることを確認します。
    > certutil -d /etc/dirsrv/slapd-instance_name/ -L
    
    Certificate Nickname                Trust Attributes
                                        SSL,S/MIME,JAR/XPI
    ...
    Example CA                          CT,,

16.4.9. ステップ 9: 同期用のデータベースの設定および同期合意の作成

本セクションでは、同期用にデータベースを設定し、同期合意を作成する方法を説明します。

16.4.9.1. コマンドラインを使用した同期用のデータベースの設定および同期合意の作成

以下の例では、Directory Server が ds.example.com という名前のホストで実行され、AD DC が win-server.ad.example.com という名前のホストで実行していることを前提としています。以下の手順では、これらのホスト間で同期を設定する方法を説明します。
  1. 接尾辞のレプリケーションを有効にします。
    # dsconf -D "cn=Directory Manager" ldap://ds.example.com replication \
        enable --suffix="dc=example,dc=com" --role="supplier" --replica-id=1
    このコマンドは、ds.example.com ホストを dc=example,dc=com 接尾辞のサプライヤーとして設定し、このエントリーのレプリカ ID を 1 に設定します。
    重要
    トポロジー内のすべてのサプライヤーの接尾辞については、レプリカ ID は 1 から 65534 の間の一意の整数である必要があります。
  2. 同期合意を追加し、合意を初期化します。以下に例を示します。
    # dsconf -D "cn=Directory Manager" ldap://ds.example.com repl-winsync-agmt \
         create --suffix="dc=example,dc=com" --host="win-server.ad.example.com" --port=636 \
         --conn-protocol="LDAPS" --bind-dn="cn=user_name,cn=Users,dc=ad,dc=example,dc=com" \
         --bind-passwd="password" --win-subtree="cn=Users,dc=example,dc=com" \
         --ds-subtree="ou=People,dc=example,dc=com" --win-domain="AD" \
         --init example-agreement
    このコマンドは、example-agreement という名前のレプリカ合意を作成します。レプリカ合意は、AD DC のホスト名、プロトコル、認証情報などの設定を定義します。Directory Server は、データを DC に接続して同期するときに使用します。
    この合意の作成後、Directory Server は合意を初期化します。後で合意を初期化するには、--init オプションを省略します。合意を初期化する前に同期は開始されないことに注意してください。同期合意の初期化に関する詳細は、「コマンドラインを使用した完全同期の実行」を参照してください。
    必要に応じて、--sync-users="on" および --sync-groups="on" オプションをコマンドに渡して、新しい Windows ユーザーおよびグループを Directory Server に自動的に同期します。
    コマンドで使用するオプションの詳細は、以下を入力します。
    # dsconf -D "cn=Directory Manager" ldap://ds.example.com repl-agmt --help
  3. 初期化が成功したことを確認します。
    # dsconf -D "cn=Directory Manager" ldap://ds.example.com repl-winsync-agmt \
         init-status --suffix="dc=example,dc=com" example-agreement
    Agreement successfully initialized.

16.4.9.2. Web コンソールを使用した同期用のデータベースの設定および同期合意の作成

以下の例では、Directory Server が ds.example.com という名前のホストで実行され、AD DC が win-server.ad.example.com という名前のホストで実行していることを前提としています。以下の手順では、これらのホスト間で同期を設定する方法を説明します。
  1. Web コンソールで Directory Server ユーザーインターフェイスを開きます。「Web コンソールを使用した Directory Server へのログイン」を参照してください。
  2. インスタンスを選択します。
  3. 接尾辞のレプリケーションを有効にします。
    1. Replication メニューを開きます。
    2. dc=example,dc=com 接尾辞を選択し、Enable Replication をクリックします。
    3. Replication Role フィールドで Supplier を選択し、レプリカ ID を入力します。以下に例を示します。
      これらの設定は、ds.example.com ホストを dc=example,dc=com 接尾辞のサプライヤーとして設定し、このエントリーのレプリカ ID を 1 に設定します。
      重要
      トポロジー内のすべてのサプライヤーの接尾辞については、レプリカ ID は 1 から 65534 の間の一意の整数である必要があります。
    4. Enable Replication をクリックします。
  4. 同期合意を追加し、合意を初期化します。
    1. Replication メニューを開き、Winsync Agreements エントリーを選択します。
    2. Create Agreement をクリックし、フィールドに入力します。以下に例を示します。
      この設定により、example-agreement という名前の同期合意が作成されます。同期契約では、DC のホスト名、プロトコル、認証情報など、Directory Server が接続してデータを同期する際に使用する設定を定義します。
      必要に応じて、Sync New Windows Users および Sync New Windows Groups を選択すると、新しい Windows ユーザーおよびグループが Directory Server に自動的に同期されます。
      この合意の作成後、Directory Server は合意を初期化します。後で合意を初期化するには、Do Online Initialization を選択しないでください。合意を初期化する前に同期は開始されないことに注意してください。同期合意の初期化に関する詳細は、「Web コンソールを使用した完全同期の実行」を参照してください。
    3. Save Agreement をクリックします。
  5. 初期化が成功したことを確認します。
    1. Replication メニューを開きます。
    2. Agreements エントリーを選択します。
      初期化が正常に完了すると、Web コンソールは Last Update Status 列に Error (0) Replica acquired successfully: Incremental update succeeded メッセージを表示します。
      同期するデータの量によっては、初期化に最大数時間かかる場合があります。