前回の続きとなる記事です。
OpenShift はmasterのAPIへのアクセス(Webのポータル画面含む)にいくつかの認証方法を選べます。認証のプロバイダにAADを使いたい場合はOpenID Connectが使えます。ただ、どうしてもAADに定義したグループ、ユーザーを使ってLDAP認証したいという場合は、AAD DSを使えば、LDAPのプロバイダーとなれるので、他のLDAPプロバイダー同様に利用することが可能になります。
というわけで、AAD DSを使う場合の設定方法です。
master-config.yamlの設定
AAD DSのIPアドレスがXXX.XX.XX.XX
、AAD DSに設定したドメインがexample.onmicrosoft.com
、管理ユーザーがadadmin
、AADに定義したocpgroup
というグループに属するユーザーが利用可能となる設定例です。
- name: "aad_ds_provider" challenge: true login: true mappingMethod: claim provider: apiVersion: v1 kind: LDAPPasswordIdentityProvider attributes: id: - dn email: - userPrincipalName name: - cn preferredUsername: - cn bindDN: "cn=adadmin,ou=AADDC Users,DC=example,DC=onmicrosoft,DC=com" bindPassword: "<adadminユーザーのパスワード>" insecure: true url: "ldap://XXX.XX.XX.XX/OU=AADDC Users,DC=example,DC=onmicrosoft,DC=com?userPrincipalName?sub?(memberof=CN=ocpgroup,OU=AADDC Users,DC=example,DC=onmicrosoft,DC=com)"
bindDN
とbindPassword
のところにLDAPに接続しにいくユーザーとパスワードを記述します。この書き方だとパスワードが平文としてテキストに記述されますが、環境変数や外部の平文ファイルおよび暗号化された外部の暗号化ファイルに記載することができます。
Master and Node Configuration | Installation and Configuration | OpenShift Container Platform 3.5
他の注意事項としては、前回も記載した通り、AADのユーザーやグループはAADDC Users OU
に所属すること、EメールアドレスはuserPrincipalName
で取得できること、特定のグループに属するユーザーを利用できる対象とする場合はLDAP URLのフィルタの部分に記述できること、が挙げられます。
LDAP URLのattributeの部分にuserPrincipalName
を指定しているのでログイン画面ではeメールアドレスを入力してログインできるようになります。実際にLDAPに投げられるクエリはLDAP URLのフィルターとattribute=(ログインフォームのUsernameに入力した値)
を組み合わせたクエリになります。
あとは要件にあわせて適宜設定ファイルを変更すればいいでしょう。
Syncing Groups with LDAP
ついでに、Syncing GroupsでのAAD DSの設定例もまとめておきます。Syncing Groupsは事前にLDAPのクエリで拾ったグループと属するユーザーをOpenShiftのグループにマッピングしておく機能です。先程と同じ前提で、ocpgroupをOpenShift上ではusergroup1
としてマッピングする例です。
kind: LDAPSyncConfig apiVersion: v1 groupUIDNameMapping: "CN=ocpgroup,OU=AADDC Users,DC=example,DC=onmicrosoft,DC=com": usergroup1 url: ldap://XXX.XX.XX.XX insecure: true bindDN: "cn=adadmin,ou=AADDC Users,DC=example,DC=onmicrosoft,DC=com" bindPassword: "<adadminユーザーのパスワード>" rfc2307: groupsQuery: baseDN: "OU=AADDC Users,DC=example,DC=onmicrosoft,DC=com" scope: sub derefAliases: never filter: (CN=ocpgroup) pageSize: 1000 groupUIDAttribute: dn groupNameAttributes: [ cn ] groupMembershipAttributes: [ member ] usersQuery: baseDN: "OU=AADDC Users,DC=example,DC=onmicrosoft,DC=com" scope: sub derefAliases: never pageSize: 1000 userUIDAttribute: dn userNameAttributes: [ sAMAccountName ]
これでocpgroupに属するユーザーをマッピングさせることができます。
$ oadm groups sync --sync-config=ldapsync.yaml --confirm