Active Directory memberOf 属性
CA Directory は、エントリを戻すかまたは検索する際に、Active Directory の機能をエミュレートして memberOf 属性に自動入力します。memberOf 属性には、エントリがメンバであるグループ識別名(DN)のすべてが含まれます。
cad140jp
CA Directory は、エントリを戻すかまたは検索する際に、Active Directory の機能をエミュレートして memberOf 属性に自動入力します。memberOf 属性には、エントリがメンバであるグループ識別名(DN)のすべてが含まれます。
エントリ DN が追加されるたび、またはグループから削除されるたびに、CA Directory は、エントリの memberOf 属性を更新します。
例: グループの memberOf 情報を表示する
以下の例は、
jsmith01
がメンバであるグループを返します。エントリが管理者およびバックアップ オペレータのグループにある場合、エントリ cn=jsmith01
が返されるときには jsmith01
がメンバになっているグループを含みます。dn: cn=Administrators,ou=Groups,o=CA,c=AU member: cn=jsmith01,ou=Users,o=CA,c=AU member: ... dn: cn=Backup Operators,ou=Groups,o=CA,c=AU member: cn=jsmith01,ou=Users,o=CA,c=AU member: ... dn: cn=jsmith01,ou=Users,o=CA,c=AU memberOf: cn=Administrators,ou=Groups,o=CA,c=AU memberOf: cn=Backup Operators,ou=Groups,o=CA,c=AU
memberOf の実装に関する考慮事項
新規ユーザがプロビジョニングされるとき、グループに割り当てる前にユーザ エントリを追加します。
参照整合性は保証できません。グループが削除されると同時に、グループが追加される場合、ユーザは存在しなくなったグループに残っている可能性があります。存在しないグループにユーザが残されないようにするには、単一のアプリケーションでグループ更新を処理します。
削除操作および追加操作を実行してグループ名を変更することを推奨します。それ以外の場合では、変更された名前が memberOf 属性に反映されません。このエラーが起きる場合、警告のアラームが発されます。
memberOf 属性の有効化
エントリが属しているグループを表示するには、memberOf 機能を有効にできます。
以下の手順に従います。
- memberOf グループおよびユーザ コンテナの下に 1 つ以上の DN を追加します。以下の設定を入力します。set memberof-user-containers = <DN>, ...; set memberof-group-containers = <DN>, ...;重要!両方のアイテムを設定する必要があります。それをしないと、DSA は重大なアラームおよびシャットダウンを起こします。
- 変更と設定を保存します。memberOf 機能が有効になっています。設定された値を表示するには、コンソール コマンドの 'get assoc;' 使用します。
注:
memberOf 属性スキーマは必要ですが、エントリ objectClass にそれを含める必要はありません。memberOf の直接の更新がデータ整合性の問題を引き起こす場合があるので、スキーマのこの ‘no-user-modification’ 属性にマーキングします。詳細については、「DXHOME/config/schema/sunone.dxc」を参照してください。アクセス制御
グループ更新はバインディング ユーザのクレデンシャルで実行されます。DSA は memberOf 更新のトリガとなるため、アクセス制御とスキーマ確認も省きます。
個別の DSA がユーザ サブツリーにサービスを提供する場合、DSA がグループの更新を処理するには、'trust-dsa-triggered-operations' 信頼フラグが必要です。
既存環境での memberOf の有効化
既存の展開において memberOf 機能を有効にするには、フロントエンドを通じてすべてのグループ エントリのダンプおよび再ロードによって memberOf データを入力します。これによって負荷が生じるので、オフピーク時、またはアプリケーションが Directory にアクセスしていないときに、それを実行してください。
既存環境で memberOf を有効化する方法
- エントリに memberOf 属性が含まれないことを確実にするために、以下のコマンドを実行します。dxsearch - h{host} - p{port} -b "ou=Users,o=CA,C=AU" "(memberOf=*)" memberOfmemberOf 属性を含むエントリが返されます。これらの返されたエントリから memberOf を削除します。
- グループを取得し、保存します。dxsearch -h{host} -p{port} -b "ou=Groups,o=CA,C=AU" "(member=*)" member objectClass > groups.ldif dxsearch -h{host} -p{port} -b "ou=Groups,o=CA,C=AU" "(uniqueMember=*)" uniqueMember objectClass >> groups.ldif
- groups.ldif を更新して、検索サマリを削除します。
- グループを削除します(memberOf が設定されていないことを確認します)。cat groups.ldif | grep "dn: " | awk '{print $2}' | dxdelete -h{host} -p{port}
- memberOf 機能を有効化し、DSA を再初期化/再起動します。
- グループを追加します。cat groups.ldif | dxmodify -h{host} -p{port} - a
例: 移行
この例の移行は、グループとユーザのコンテナをエクスポートする方法を示します。以下のコマンドを使用します。
set memberof-group-containers = <c AU><o CA><ou Groups>; set memberof-user-containers = <c AU><o CA><ou Users>;
memberOf Updates のトリガ方法
グループ エントリまたはメンバが更新されるとき、CA Directory が memberOf Update のトリガになります。以下の説明で、グループ エントリは groupOfNames または groupOfUniqueNames です。また、メンバには uniqueMember が含まれます。
memberOf 更新のトリガになりうる更新のタイプは以下の通りです。
- グループ エントリのメンバ属性に 1 つ以上の DN を追加する変更
- グループ エントリのメンバ属性から 1 つ以上の DN を削除する変更
- 1 つ以上の DN メンバ属性が含まれるグループ エントリの追加
- 1 つ以上の DN メンバ属性が含まれるグループ エントリの削除
データ DSA が変更リクエストを受け取ると、以下が実行されます。
- CA Directory はその内容を検証し、以下のすべての条件が true かどうかを決定します。
- 更新の baseObject が、設定された 'memberof-group-containers' リストからの DN の下位になる。
- baseObject は変更または削除リクエストに対して存在し、かつ追加リクエストに対しては存在しない。
- 更新はローカルに適用される。
- 更新を実行するユーザが、操作を実行するために適切な AC を持つ。
- メンバ属性が、設定済みの 'memberof-user-containers' リストからの DN の下位となる場合、それらの各属性について以下が実行されます。
- リクエストはユーザ エントリで実行されます。また、グループ DN は memberOf に追加または削除され、ロールバック変更が作成されます。
- ロールバック変更がロールバック リストに挿入された場合、リクエストは成功します。エラーになった場合、ロールバックが実行されます。
- memberOf 属性がすべてのユーザ エントリに対して更新された場合、以下が実行されます
- グループ更新が実行されます。
- エラーが発生する場合、memberOf 更新がロールバックされます。
Multi-write レプリケーション
Multi-write で受信されたグループ メンバシップの更新は、memberOf のトリガになりません。memberOf グループを実行する DSA はレプリケーションを処理します。