6.5. 同期合意の管理

6.5.1. 同期合意の作成

同期合意は、Active Directoryドメインへの 接続 を作成するので、 IdM サーバー上では ipa-replica-manage connect コマンドを使用して作成します。Active Directory に対して暗号化された接続を確立するには、IdM は Windows CA 証明書を信頼する必要があります。
  1. root 証明局 (CA) の証明書は IdM サーバーにコピーします。
    1. Active Directory CA 証明書が自己署名されている場合は、以下の手順を実行します。
      1. Windows サーバー上の Active Directory CA 証明書をエクスポートします。
        1. Super key+R のキーボードの組み合わせを押して、実行 ダイアログを開きます。
        2. certsrv.msc を入力して OK をクリックします。
        3. ローカルの証明局の名前を右クリックして、プロパティー を選択します。
        4. 全般 タブの CA 証明局 でエクスポートする証明書を選択し、ss証明書の表示 をクリックします。
        5. 詳細 タブで、 ファイルにコピー をクリックして 証明書のエクスポートウィザード を起動します。
        6. 次へ をクリックしてから、base-64 でエンコードされた X.509 (.CER) を選択します。
        7. エクスポートされたファイルに適切なディレクトリーおよびファイル名を指定します。次へ をクリックして証明書をエクスポートしてから、完了をクリックします。
        8. エクスポートされた証明書を IdM サーバーマシンにコピーします。
    2. Active Directory CA 証明書が外部の CA で署名されている場合は、以下の手順を実行します。
      1. どの証明書が CA root 証明書かを見つけるには、証明書チェーンを表示します。
        # 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
        上記の例では、Active Directory サーバーの CA 証明書は、CN=Demo Root CA 2 で署名された CN=Demo CA-1 で署名されています。つまり、CN=Demo Root CA 2 が root CA であることが分かります。
      2. CA 証明書を IdM サーバーにコピーします。
  2. IdM サーバー上の既存の Kerberos 資格情報を削除します。
    $ kdestroy
  3. ipa-replica-manage コマンドを使用して Windows 同期合意を作成します。これには --winsyncオプションが必要です。ユーザーアカウントと一緒にパスワードも同期する場合、--passsync オプションも使用して、パスワードの同期に使用するパスワードを設定します。
    --binddnおよび --bindpw オプションを指定すると、IdM が Active Directory サーバーへの接続に使用する Active Directory サーバー上のシステムアカウントにユーザー名とパスワードを設定します。
    $ ipa-replica-manage connect --winsync \
    	--binddn cn=administrator,cn=users,dc=example,dc=com \
    	--bindpw Windows-secret \
    	--passsync secretpwd \
    	--cacert /etc/openldap/cacerts/windows.cer \
    	adserver.example.com -v
    • --winsync: Windows の同期合意として指定します。
    • --binddn: IdM は Active Directory アカウントのこの DN を使用して、リモートディレクトリーにバインドして属性を同期します。
    • --bindpw: 同期アカウントのパスワード。
    • --cacert: 以下への完全パスおよびファイル名。
      • CA 証明書が自己署名されている場合: Active Directory CA 証明書。
      • Active Directory CA が外部の CA で署名されている場合: 外部の CA 証明書。
    • --win-subtree: 同期するユーザーが含まれる Windows ディレクトリーサブツリーの DN。デフォルト値は cn=Users,$SUFFIX です。
    • AD_server_name: Active Directoryドメインコントローラーの完全修飾ドメイン名 (FQDN)。
  4. プロンプトが出されたら、Directory Manager のパスワードを入力します。
  5. これはオプションです。「パスワード同期のセットアップ」 に説明されているようにパスワードの同期を設定します。パスワード同期クライアントがない場合には、ユーザー属性はピアサーバー間で同期されますが、パスワードは同期されません。

    注記

    パスワード同期クライアントはパスワードの変更を取り込み、Active Directory と IdM 間でこれらの変更を同期します。つまり、そのクライアントは新規パスワードまたはパスワード更新を同期します。
    パスワード同期クライアントがインストールされている場合には、IdM と Active Directory の両方のハッシュ化形式で保存されている既存のパスワードについては、暗号化を解除したり、同期したりすることができないため、既存のパスワードは同期されません。ピアサーバー間の同期を開始するにはユーザーパスワードを変更する必要があります。

6.5.2. ユーザーアカウント属性の同期動作の変更

同期合意が作成されると、同期中の同期プロセスで、ユーザーアカウント属性を処理する方法についての特定のデフォルト動作が定義されます。動作のタイプには、ロックアウト属性の処理方法や異なる DN 形式の処理方法などが含まれます。この動作は、同期合意を編集することで変更できます。
同期合意は LDAP サーバーの特殊なプラグインエントリーとして存在し、それぞれの属性動作は LDAP 属性から設定されます。同期の動作を変更するには、ldapmodify コマンドを使用して LDAP サーバーエントリーを直接変更します。
たとえば、デフォルトでは、アカウントのロックアウト属性はIdM と Active Directory 間で同期されますが、ipaWinSyncAcctDisable 属性を編集して無効にできます (この変更により、アカウントは Active Directory で無効にされている場合にも IdM ではアクティブな状態になり、その逆の場合も同じになります)。
[jsmith@ipaserver ~]$ ldapmodify -x -D "cn=directory manager" -w password

dn: cn=ipa-winsync,cn=plugins,cn=config
changetype: modify
replace: ipaWinSyncAcctDisable
ipaWinSyncAcctDisable: none

modifying entry "cn=ipa-winsync,cn=plugins,cn=config"
以下は、同期設定属性の概要です。

一般ユーザーアカウントのパラメーター

  • ipaWinSyncNewEntryFilter: 新規ユーザーエントリーに追加するオブジェクトクラスの一覧を含むエントリーの検索に使用する検索フィルターを設定します。
    デフォルト値: (cn=ipaConfig)
  • ipaWinSyncNewUserOCAttr: 新規ユーザーエントリーに追加するオブジェクトクラスの一覧が実際に含まれる設定エントリーの属性を設定します。
    デフォルト値: ipauserobjectclasses
  • ipaWinSyncHomeDirAttr: POSIX ホームディレクトリーのデフォルトの場所を含むエントリー内の属性を識別します。
    デフォルト値: ipaHomesRootDir
  • ipaWinSyncUserAttr: Active Directory ユーザーが Active Directory ドメインから同期される場合に AD ユーザーに追加する特定の値で追加の属性を設定します。この属性が複数値の属性の場合は、これを複数回設定でき、同期プロセスは値のすべてをエントリーに追加します。
    例: ipaWinSyncUserAttr: attributeName attributeValue

    注記

    これにより、エントリーに属性が存在しない場合に属性値のみが設定されます。属性が存在する場合はエントリーの値は Active Directory エントリーの同期時に使用されます。
  • ipaWinSyncForceSync: 既存の AD ユーザーに一致する既存の IdM ユーザーが強制的に同期されるかどうかを設定します。true に設定すると、一致する IdM ユーザーが自動的に編集され、同期されます。
    使用可能な値: true | false
    an IdM ユーザーに、既存の Active Directory ユーザーの sAMAccountName と同一の uid パラメーターがある場合には、そのアカウントはデフォルトでは同期 されません。この属性は、同期サービスに対して、ntUser および ntUserDomainId を IdM ユーザーエントリーに自動的に追加し、同期されるように指示します。

ユーザーアカウントのロックパラメーター

  • ipaWinSyncAcctDisable: アカウントロックアウト属性を同期する方法を設定します。有効にするアカウントロックアウト設定を制御することができます。たとえば、to_ad は、アカウントロックアウト属性が IdM に設定される場合に、その値が Active Directory に対して同期され、ローカルの Active Directory 値を上書きすることを意味します。デフォルトでは、アカウントロックアウト属性は両方のドメインから同期されます。
    使用可能な値: both (デフォルト)、to_adto_dsnone
  • ipaWinSyncInactivatedFilter: 非アクティブ化された (無効にされた) ユーザーを保持するために使用されるグループの DN 検索用のフィルターを設定します。これは、ほとんどの実装では変更する必要はありません。
    デフォルト値: (&(cn=inactivated)(objectclass=groupOfNames))

グループのパラメーター

  • ipaWinSyncDefaultGroupAttr: ユーザーのデフォルトグループを確認するために参照する新規ユーザーアカウントの属性を設定します。その後、エントリーのグループ名がユーザーアカウントの gidNumber の検索に使用されます。
    デフォルト値: ipaDefaultPrimaryGroup
  • ipaWinSyncDefaultGroupFilter: ユーザーのデフォルトグループを確認するために参照する新規ユーザーアカウントの属性を設定します。その後、エントリーのグループ名がユーザーアカウントの gidNumber の検索に使用されます。
    デフォルト値: ipaDefaultPrimaryGroup

レルムのパラメーター

  • ipaWinSyncRealmAttr: レルムエントリーにレルム名を含む属性を設定します。
    デフォルト値: cn
  • ipaWinSyncRealmFilter: IdM レルム名を含むエントリーの検索に使用する検索フィルターを設定します。
    デフォルト値: (objectclass=krbRealmContainer)

6.5.3. 同期された Windows サブツリーの変更

同期契約を作成すると、同期されたユーザーデータベースとして使用する 2 つのサブツリーが自動的に設定されます。IdM の場合は、デフォルトは cn=users,cn=accounts,$SUFFIX となり、Active Directory の場合は、デフォルトは CN=Users,$SUFFIX となります。
Active Directory サブツリーの値は、--win-subtree オプションを使用して同期合意が作成される場合はデフォルト以外の値に設定できます。この合意の作成後に、ldapmodify コマンドを使用し、同期合意エントリー内の nsds7WindowsReplicaSubtree値を編集して Active Directory サブツリーを変更できます。
  1. ldapsearch を使用して同期合意の名前を取得します。この検索により、エントリー全体ではなく、 dn および nsds7WindowsReplicaSubtree 属性の値のみが返されます。
    [jsmith@ipaserver ~]$ ldapsearch -xLLL -D "cn=directory manager" -w password -p 389 -h ipaserver.example.com -b cn=config objectclass=nsdswindowsreplicationagreement dn nsds7WindowsReplicaSubtree
    
    dn: cn=meToWindowsBox.example.com,cn=replica,cn=dc\3Dexample\2Cdc\3Dcom,cn=mapping tree,cn=config
    nsds7WindowsReplicaSubtree: cn=users,dc=example,dc=com
    
    ... 8< ...
  2. 同期合意を変更します。
    [jsmith@ipaserver ~]$ ldapmodify -x -D "cn=directory manager" -W -p 389 -h ipaserver.example.com <<EOF
     dn: cn=meToWindowsBox.example.com,cn=replica,cn=dc\3Dexample\2Cdc\3Dcom,cn=mapping tree,cn=config
     changetype: modify
     replace: nsds7WindowsReplicaSubtree
     nsds7WindowsReplicaSubtree: cn=alternateusers,dc=example,dc=com
     EOF
    
     modifying entry "cn=meToWindowsBox.example.com,cn=replica,cn=dc\3Dexample\2Cdc\3Dcom,cn=mapping tree,cn=config"
新規のサブツリー設定は即時に有効になります。同期操作が実行中の場合は、現在の操作が完了するとすぐに有効になります。

6.5.4. 一方向同期の設定

デフォルトでは、すべての変更および削除は双方向で行われます。Active Directory の変更は Identity Management に対して行われ、Identity Management のエントリーの変更は Active Directory に対して同期されます。これは本質的に平等な複数マスター関係であり、Active Directory と Identity Management はどちらも同期におけるピアであり、どちらもデータマスターになります。
ただし一部のデータ構造または IT デザインでは、一方のドメインのみをデータマスターとし、他方のドメインでは更新を受け入れられるようにする必要があります。この場合、複数マスターの関係 (ピアサーバーが平等) からマスター対コンシュマーの関係に同期関係が変更されます。
これには、同期合意で oneWaySync パラメーターを設定します。許容値は、fromWindows (Active Directory から Identity Management への同期) および toWindows (Identity Management から Active Directory への同期) です。
たとえば、Active Directory から Identity Management に変更を同期するには、以下を実行します。
[jsmith@ipaserver ~]$ ldapmodify -x -D "cn=directory manager" -w password -p 389 -h ipaserver.example.com

dn: cn=meToWindowsBox.example.com,cn=replica,cn=dc\3Dexample\2Cdc\3Dcom,cn=mapping tree,cn=config
changetype: modify
add: oneWaySync
oneWaySync: fromWindows

重要

一方向の同期を有効にしても、一方向で同期されたサーバー上の変更を自動的に回避する訳ではないため、これにより同期更新における同期ピア間の不整合が生じる可能性があります。たとえば一方向の同期は、Active Directory から Identity Management の方向に設定されるため、Active Directory は (基本的には) データマスターになります。エントリーが Identity Management で変更されるか、または削除される場合に、Identity Management 情報は異なりますが、その情報および変更は Active Directory に移行されることはありません。次の同期更新時に、編集内容は Directory Server で上書きされ、エントリーを削除していても再び追加されます。

6.5.5. 同期合意の削除

同期は、 サーバーのIdM接続を解除するActive Directory、同期合意の削除によって停止することができます。同期合意を作成する場合とは逆に、同期合意の削除では ipa-replica-manage disconnect コマンドおよび Active Directory サーバーのホスト名が使用されます。
  1. 同期合意を削除します。
    # ipa-replica-manage disconnect adserver.ad.example.com
  2. IdM ディレクトリー証明書データベース内の証明書を一覧表示します。
    # certutil -L -d /etc/dirsrv/slapd-IDM-EXAMPLE-COM/
    Certificate Nickname                   Trust Attributes
                                           SSL,S/MIME,JAR/XPI
    
    IDM.EXAMPLE.COM IPA CA                 CT,C,C
    CN=adserver,DC=ad,DC=example,DC=com    C,,
    Server-Cert                            u,u,u
  3. Active Directory サーバーデータベースから IdM CA 証明書を削除します。
    # certutil -D -d /etc/dirsrv/slapd-IDM-EXAMPLE-COM/ -n "CN=adserver,DC=ad,DC=example,DC=com"

6.5.6. Winsync 契約のエラー

Active Directory サーバーに接続できないために、同期合意の作成に失敗する

同期合意における最も一般的なエラーの 1 つは、IdM サーバーが Active Directory サーバーに接続できないことです。

"Update failed! Status: [81  - LDAP error: Can't contact LDAP server]

これは、合意の作成時に正しくない Active Directory CA 証明書が指定される場合に生じる可能性があります。これにより、IdM LDAP データベース (/etc/dirsrv/slapd-DOMAIN/ ディレクトリー内) に Imported CA という名前で重複した証明書が作成されます。これは、certutil を使用して確認できます。
$ certutil -L -d /etc/dirsrv/slapd-DOMAIN/

Certificate Nickname                                         Trust Attributes
SSL,S/MIME,JAR/XPI

CA certificate                                               CTu,u,Cu
Imported CA                                                  CT,,C
Server-Cert                                                  u,u,u
Imported CA                                                  CT,,C
この問題を解決するには、証明書データベースから CA 証明書を削除します。
# certutil -d /etc/dirsrv/slapd-DOMAIN-NAME -D -n "Imported CA"
エントリーが存在するためパスワードが同期されないというエラーが出る

ユーザーデータベースの一部のエントリーについて、エントリーがすでに存在するためにパスワードはリセットされないという情報のエラーメッセージが表示される可能性があります。

"Windows PassSync entry exists, not resetting password"
これはエラーではありません。このメッセージは、適用除外ユーザー、パスワード同期ユーザーが変更されていない場合に生じます。パスワード同期ユーザーは、IdM でパスワードを変更するためにサービスで使用される操作上のユーザーです。