Red Hat Training

A Red Hat training course is available for OpenShift Container Platform

14.6. ネスト化されたメンバーシップ同期の例

OpenShift Container Platform の Group はネスト化しません。LDAP サーバーはデータが使用される前にグループメンバーシップを平坦化する必要があります。Microsoft の Active Directory Server は、LDAP_MATCHING_RULE_IN_CHAIN ルールによりこの機能をサポートしており、これには OID 1.2.840.113556.1.4.1941 が設定されています。さらに、このマッチングルールを使用すると、明示的に ホワイトリスト化された グループのみをを同期できます。

このセクションでは、拡張された Active Directory スキーマの例を取り上げ、1 名のユーザー Jane と 1 つのグループ otheradmins をメンバーとして持つ admins というグループを同期します。otheradmins グループには 1 名のユーザーメンバー Jim が含まれます。この例では以下のことを説明しています。

  • グループとユーザーが LDAP サーバーに追加される方法。
  • LDAP 同期設定ファイルの概観。
  • 同期後に生成される OpenShift Container Platform の Group レコード。

拡張された Active Directory スキーマでは、ユーザー (JaneJim) とグループの両方がファーストクラスエントリーとして LDAP サーバーに存在し、グループメンバーシップはユーザーまたはグループの属性に保存されます。以下の ldif のスニペットはこのスキーマのユーザーとグループを定義します。

ネスト化されたメンバーを持つ拡張された Active Directory スキーマを使用する LDAP エントリー: augmented_active_directory_nested.ldif

dn: ou=users,dc=example,dc=com
objectClass: organizationalUnit
ou: users

dn: cn=Jane,ou=users,dc=example,dc=com
objectClass: person
objectClass: organizationalPerson
objectClass: inetOrgPerson
objectClass: testPerson
cn: Jane
sn: Smith
displayName: Jane Smith
mail: jane.smith@example.com
memberOf: cn=admins,ou=groups,dc=example,dc=com 1

dn: cn=Jim,ou=users,dc=example,dc=com
objectClass: person
objectClass: organizationalPerson
objectClass: inetOrgPerson
objectClass: testPerson
cn: Jim
sn: Adams
displayName: Jim Adams
mail: jim.adams@example.com
memberOf: cn=otheradmins,ou=groups,dc=example,dc=com 2

dn: ou=groups,dc=example,dc=com
objectClass: organizationalUnit
ou: groups

dn: cn=admins,ou=groups,dc=example,dc=com 3
objectClass: group
cn: admins
owner: cn=admin,dc=example,dc=com
description: System Administrators
member: cn=Jane,ou=users,dc=example,dc=com
member: cn=otheradmins,ou=groups,dc=example,dc=com

dn: cn=otheradmins,ou=groups,dc=example,dc=com 4
objectClass: group
cn: otheradmins
owner: cn=admin,dc=example,dc=com
description: Other System Administrators
memberOf: cn=admins,ou=groups,dc=example,dc=com 5 6
member: cn=Jim,ou=users,dc=example,dc=com

1 2 5
ユーザーとグループのメンバーシップはオブジェクトの属性として一覧表示されます。
3 4
このグループは LDAP サーバーのファーストクラスエントリーです。
6
otheradmins グループは admins グループのメンバーです。

Active Directory を使用してネスト化されたグループを同期するには、ユーザーエントリーとグループエントリーの両方の LDAP クエリー定義と内部 OpenShift Container Platform Group レコードでそれらを表すのに使用する属性を指定する必要があります。さらに、この設定では特定の変更が必要となります。

  • oc adm groups sync コマンドはグループを明示的に ホワイトリスト化 する必要があります。
  • ユーザーの groupMembershipAttributes には "memberOf:1.2.840.113556.1.4.1941:" を含め、LDAP_MATCHING_RULE_IN_CHAIN ルールに従う必要があります。
  • groupUIDAttributedn に設定される必要があります。
  • groupsQuery:

    • filter を設定しないでください。
    • 有効な derefAliases を設定する必要があります。
    • baseDN を設定しないでください。 この値は無視されます。
    • scope を設定しないでください。 この値は無視されます。

明確にするために、OpenShift Container Platform で作成するグループは (可能な場合) ユーザーまたは管理者に表示されるフィールドに識別名以外の属性を使用する必要があります。たとえば、メールによって OpenShift Container Platform Group のユーザーを識別し、一般名としてグループの名前を使用します。以下の設定ファイルでは、このような関係を作成しています。

ネスト化されたメンバーを持つ拡張された Active Directory スキーマを使用する LDAP 同期設定です。 augmented_active_directory_config_nested.yaml

kind: LDAPSyncConfig
apiVersion: v1
url: ldap://LDAP_SERVICE_IP:389
augmentedActiveDirectory:
    groupsQuery: 1
        derefAliases: never
        pageSize: 0
    groupUIDAttribute: dn 2
    groupNameAttributes: [ cn ] 3
    usersQuery:
        baseDN: "ou=users,dc=example,dc=com"
        scope: sub
        derefAliases: never
        filter: (objectclass=inetOrgPerson)
        pageSize: 0
    userNameAttributes: [ uid ] 4
    groupMembershipAttributes: [ "memberOf:1.2.840.113556.1.4.1941:" ] 5

1
groupsQuery フィルターは指定できません。groupsQuery ベース DN およびスコープの値は無視されます。groupsQuery では有効な derefAliases を設定する必要があります。
2
LDAP サーバーのグループを一意に識別する属性です。dn に設定される必要があります。
3
Group の名前として使用する属性です。
4
OpenShift Container Platform Group レコードでユーザー名として使用される属性です。ほとんどのインストールでは、uid または sAMAccountName を使用することが推奨されます。
5
メンバーシップ情報を保存するユーザーの属性です。LDAP_MATCHING_RULE_IN_CHAIN を使用することに注意してください。

augmented_active_directory_config_nested.yaml ファイルを使用して同期するには、以下を実行します。

$ oc adm groups sync \
    'cn=admins,ou=groups,dc=example,dc=com' \
    --sync-config=augmented_active_directory_config_nested.yaml \
    --confirm
注記

cn=admins,ou=groups,dc=example,dc=com グループを明示的に ホワイトリスト化 する必要があります。

OpenShift Container Platform は、上記の同期操作の結果として以下のグループレコードを作成します。

augmented_active_directory_config_nested.yaml ファイルを使用して作成される OpenShift Group

apiVersion: user.openshift.io/v1
kind: Group
metadata:
  annotations:
    openshift.io/ldap.sync-time: 2015-10-13T10:08:38-0400 1
    openshift.io/ldap.uid: cn=admins,ou=groups,dc=example,dc=com 2
    openshift.io/ldap.url: LDAP_SERVER_IP:389 3
  creationTimestamp:
  name: admins 4
users: 5
- jane.smith@example.com
- jim.adams@example.com

1
この OpenShift Container Platform Group と LDAP サーバーが最後に同期された時間です。ISO 6801 形式を使用します。
2
LDAP サーバーのグループの固有識別子です。
3
このグループのレコードが保存される LDAP サーバーの IP アドレスとホストです。
4
同期ファイルが指定するグループ名です。
5
グループのメンバーのユーザーです。同期ファイルで指定される名前が使用されます。グループメンバーシップは Microsoft Active Directory Server によって平坦化されているため、ネスト化されたグループのメンバーが含まれることに注意してください。