第15章 LDAP グループの同期
dedicated-admin
ロールを持つ管理者は、グループを使用して、ユーザーの管理、権限の変更、連携の強化を行うことができます。組織ではユーザーグループをすでに作成し、それらを LDAP サーバーに保存している場合があります。OpenShift Dedicated は、これらの LDAP レコードを内部 OpenShift Dedicated レコードと同期できるため、管理者はグループを 1 カ所で管理できます。OpenShift Dedicated は現在、グループメンバーシップを定義するための 3 つの共通スキーマ (RFC 2307、Active Directory、拡張された Active Directory) を使用したグループと LDAP サーバーの同期をサポートしています。
LDAP の設定の詳細は、LDAP アイデンティティープロバイダーの設定 を参照してください。
グループを同期するには、dedicated-admin
権限が必要です。
15.1. LDAP 同期の設定について
LDAP 同期を実行するには、同期設定ファイルが必要です。このファイルには、以下の LDAP クライアント設定の詳細が含まれます。
- LDAP サーバーへの接続の設定。
- LDAP サーバーで使用されるスキーマに依存する同期設定オプション。
- OpenShift Dedicated のグループ名を LDAP サーバー内のグループにマッピングする、管理者が定義した名前マッピングのリスト。
設定ファイルの形式は、使用するスキーマ (RFC 2307、Active Directory、または拡張 Active Directory) によって異なります。
- LDAP クライアント設定
- 設定の LDAP クライアント設定セクションでは、LDAP サーバーへの接続を定義します。
設定の LDAP クライアント設定セクションでは、LDAP サーバーへの接続を定義します。
LDAP クライアント設定
url: ldap://10.0.0.0:389 1 bindDN: cn=admin,dc=example,dc=com 2 bindPassword: <password> 3 insecure: false 4 ca: my-ldap-ca-bundle.crt 5
- 1
- データベースをホストする LDAP サーバーの接続プロトコル、IP アドレス、および
scheme://host:port
としてフォーマットされる接続先のポートです。 - 2
- バインド DN として使用する任意の識別名 (DN) です。これは、同期操作のエントリーを取得するために昇格された特権が必要な場合、OpenShift Dedicated で使用されます。
- 3
- バインドに使用する任意のパスワードです。これは、同期操作のエントリーを取得するために昇格された特権が必要な場合、OpenShift Dedicated で使用されます。この値は環境変数、外部ファイル、または暗号化されたファイルでも指定できます。
- 4
false
の場合は、セキュアな LDAP (ldaps://
) URL は TLS を使用して接続し、非セキュアな LDAP (ldap://
) URL は TLS にアップグレードされます。true
の場合、サーバーへの TLS 接続は行われません。ldaps://
URL スキームは使用できません。- 5
- 設定された URL のサーバー証明書を検証するために使用する証明書バンドルです。空の場合、OpenShift Dedicated はシステムで信頼されたルートを使用します。
insecure
がfalse
に設定されている場合にのみ、これが適用されます。
- LDAP クエリー定義
- 同期設定は、同期に必要となるエントリーの LDAP クエリー定義で構成されています。LDAP クエリーの特定の定義は、LDAP サーバーにメンバーシップ情報を保存するために使用されるスキーマに依存します。
LDAP クエリー定義
baseDN: ou=users,dc=example,dc=com 1 scope: sub 2 derefAliases: never 3 timeout: 0 4 filter: (objectClass=person) 5 pageSize: 0 6
- 1
- すべての検索が開始されるディレクトリーのブランチの識別名 (DN) です。ディレクトリーツリーの上部を指定する必要がありますが、ディレクトリーのサブツリーを指定することもできます。
- 2
- 検索の範囲です。有効な値は
base
、one
、またはsub
です。これを定義しない場合、sub
の範囲が使用されます。範囲オプションは、以下の表で説明されています。 - 3
- LDAP ツリーのエイリアスに関連する検索の動作です。有効な値は
never
、search
、base
、またはalways
です。これを定義しない場合、デフォルトはalways
となり、エイリアスを逆参照します。逆参照の動作は以下の表で説明されています。 - 4
- クライアントによって検索に許可される時間制限です。
0
の値はクライアント側の制限がないことを意味します。 - 5
- 有効な LDAP 検索フィルターです。これを定義しない場合、デフォルトは
(objectClass=*)
になります。 - 6
- LDAP エントリーで測定される、サーバーからの応答ページの任意の最大サイズです。
0
に設定すると、応答ページのサイズ制限はなくなります。クライアントまたはサーバーがデフォルトで許可しているエントリー数より多いエントリーをクエリーが返す場合、ページングサイズの設定が必要となります。
LDAP 検索範囲 | 説明 |
---|---|
| クエリーに対して指定されるベース DN で指定するオブジェクトのみを考慮します。 |
| クエリーについてベース DN とツリー内の同じレベルにあるすべてのオブジェクトを考慮します。 |
| クエリーに指定されるベース DN のサブツリー全体を考慮します。 |
逆参照動作 | 説明 |
---|---|
| LDAP ツリーにあるエイリアスを逆参照しません。 |
| 検索中に見つかったエイリアスのみを逆参照します。 |
| ベースオブジェクトを検索中にエイリアスのみを逆参照します。 |
| LDAP ツリーにあるすべてのエイリアスを常に逆参照します。 |
- ユーザー定義の名前マッピング
- ユーザー定義の名前マッピングは、OpenShift Dedicated グループの名前を、LDAP サーバーでグループを検索する一意の識別子に明示的にマップします。マッピングは通常の YAML 構文を使用します。ユーザー定義のマッピングには LDAP サーバーのすべてのグループのエントリーを含めることも、それらのグループのサブセットのみを含めることもできます。ユーザー定義の名前マッピングを持たないグループが LDAP サーバーにある場合、同期時のデフォルトの動作では、OpenShift Dedicated グループの名前として指定された属性が使用されます。
ユーザー定義の名前マッピング
groupUIDNameMapping: "cn=group1,ou=groups,dc=example,dc=com": firstgroup "cn=group2,ou=groups,dc=example,dc=com": secondgroup "cn=group3,ou=groups,dc=example,dc=com": thirdgroup
15.1.1. RFC 2307 設定ファイルについて
RFC 2307 スキーマでは、ユーザーエントリーとグループエントリーの両方の LDAP クエリー定義と、内部 OpenShift Dedicated レコードでそれらのエントリーを表すのに使用する属性を指定する必要があります。
明確にするために、OpenShift Dedicated で作成するグループでは、ユーザーまたは管理者側のフィールドに識別名以外の属性を可能な限り使用する必要があります。たとえば、OpenShift Dedicated のユーザーをメールアドレスで識別し、グループの名前を一般名として使用します。以下の設定ファイルでは、このような関係を作成しています。
ユーザー定義名のマッピングを使用する場合は、設定ファイルが異なります。
RFC 2307 スキーマを使用する LDAP 同期設定: rfc2307_config.yaml
kind: LDAPSyncConfig apiVersion: v1 url: ldap://LDAP_SERVICE_IP:389 1 insecure: false 2 bindDN: cn=admin,dc=example,dc=com bindPassword: file: "/etc/secrets/bindPassword" rfc2307: groupsQuery: baseDN: "ou=groups,dc=example,dc=com" scope: sub derefAliases: never pageSize: 0 groupUIDAttribute: dn 3 groupNameAttributes: [ cn ] 4 groupMembershipAttributes: [ member ] 5 usersQuery: baseDN: "ou=users,dc=example,dc=com" scope: sub derefAliases: never pageSize: 0 userUIDAttribute: dn 6 userNameAttributes: [ mail ] 7 tolerateMemberNotFoundErrors: false tolerateMemberOutOfScopeErrors: false
- 1
- このグループのレコードが保存される LDAP サーバーの IP アドレスとホストです。
- 2
false
の場合は、セキュアな LDAP (ldaps://
) URL は TLS を使用して接続し、非セキュアな LDAP (ldap://
) URL は TLS にアップグレードされます。true
の場合、サーバーへの TLS 接続は行われません。ldaps://
URL スキームは使用できません。- 3
- LDAP サーバーのグループを一意に識別する属性です。
groupUIDAttribute
に DN を使用している場合は、groupsQuery
フィルターを指定できません。詳細なフィルターを実行するには、ホワイトリスト/ブラックリストの方法を使用します。 - 4
- グループの名前として使用する属性。
- 5
- メンバーシップ情報を保存するグループの属性です。
- 6
- LDAP サーバーでユーザーを一意に識別する属性です。userUIDAttribute に DN を使用している場合は、
usersQuery
フィルターを指定できません。詳細なフィルターを実行するには、ホワイトリスト/ブラックリストの方法を使用します。 - 7
- OpenShift Dedicated グループレコードでユーザーの名前として使用する属性。
15.1.2. Active Directory 設定ファイルについて
Active Directory スキーマでは、ユーザーエントリーの LDAP クエリー定義と、内部 OpenShift Dedicated グループレコードでそれらのエントリーを表すのに使用する属性を指定する必要があります。
明確にするために、OpenShift Dedicated で作成するグループでは、ユーザーまたは管理者側のフィールドに識別名以外の属性を可能な限り使用する必要があります。たとえば、OpenShift Dedicated グループのユーザーをメールアドレスで識別し、グループ名を LDAP サーバーのグループ名で定義します。以下の設定ファイルでは、このような関係を作成しています。
Active Directory スキーマを使用する LDAP 同期設定: active_directory_config.yaml
kind: LDAPSyncConfig apiVersion: v1 url: ldap://LDAP_SERVICE_IP:389 activeDirectory: usersQuery: baseDN: "ou=users,dc=example,dc=com" scope: sub derefAliases: never filter: (objectclass=person) pageSize: 0 userNameAttributes: [ mail ] 1 groupMembershipAttributes: [ memberOf ] 2
15.1.3. 拡張された Active Directory 設定ファイルについて
拡張された Active Directory スキーマでは、ユーザーエントリーとグループエントリーの両方の LDAP クエリー定義と、内部 OpenShift Dedicated グループレコードでそれらのエントリーを表すのに使用する属性を指定する必要があります。
明確にするために、OpenShift Dedicated で作成するグループでは、ユーザーまたは管理者側のフィールドに識別名以外の属性を可能な限り使用する必要があります。たとえば、OpenShift Dedicated のユーザーをメールアドレスで識別し、グループの名前を一般名として使用します。以下の設定ファイルではこのような関係を作成しています。
拡張された Active Directory スキーマを使用する LDAP 同期設定: augmented_active_directory_config.yaml
kind: LDAPSyncConfig apiVersion: v1 url: ldap://LDAP_SERVICE_IP:389 augmentedActiveDirectory: groupsQuery: baseDN: "ou=groups,dc=example,dc=com" scope: sub derefAliases: never pageSize: 0 groupUIDAttribute: dn 1 groupNameAttributes: [ cn ] 2 usersQuery: baseDN: "ou=users,dc=example,dc=com" scope: sub derefAliases: never filter: (objectclass=person) pageSize: 0 userNameAttributes: [ mail ] 3 groupMembershipAttributes: [ memberOf ] 4