Nutanix Kubernetes Platform(NKP)v2.12 のダッシュボードで、LDAP の ID Provider として Active Directory(AD)を設定してみます。
今回の内容です。
ダッシュボードでの設定についてはドキュメントでいいかんじの手順がみつからず、ひとまず下記の情報を参考にしました。
- NKP|DKP: Configuring LDAP values
https://portal.nutanix.com/page/documents/kbs/details?targetId=kA0VO0000001mcT0AQ - 5 - Nutanix Kubernetes Platform - Configuring LDAP - YouTube
1. AD(LDAPS サーバー)の構築
今回は、Windows Server 2022 で Active Directory / LDAPS サーバーを構築します。Windows Server 2022 の OS はインストール済みです。
1-1. Active Directory Domain Services(AD DS)の構築
今回は、PowerShell で AD を構築します。
Windows Server 2022 に、Active Directory ドメイン サービスをインストールします。
Install-WindowsFeature -Name AD-Domain-Services -IncludeManagementTools
新規フォレストとして、「nxad.go-lab.jp」ドメインを作成します。このコマンドによって、DNS サーバーも自動インストールされます。
Install-ADDSForest ` -CreateDnsDelegation:$false ` -DatabasePath "C:\Windows\NTDS" ` -DomainMode "WinThreshold" ` -DomainName "nxad.go-lab.jp" ` -DomainNetbiosName "NXAD" ` -ForestMode "WinThreshold" ` -InstallDns:$true ` -LogPath "C:\Windows\NTDS" ` -NoRebootOnCompletion:$false ` -SysvolPath "C:\Windows\SYSVOL" ` -Force:$true
ディレクトリ サービス復元モードのAdministratorに設定するパスワードが要求されるので、2回入力します。そして、インストール処理中に、OS が自動的に再起動されます。
SafeModeAdministratorPassword: ******** SafeModeAdministratorPassword を確認してください: ********
1-2. 自己署名証明書の作成
AD は、信頼できるルート証明機関の証明書ストアに、ドメイン コントローラーの証明書がインストールされると、LDAPS でのアクセスが有効化されます。そこで今回は、自己証明の証明書を発行します。
この自宅ラボでは、このドメイン コントローラの DNS は使用せず、外部の DNS で名前解決しています。そこで、証明書にはドメインの nxad.go-lab.jp ドメイン以外の名前を「サブジェクト代替名」(SAN)に追加しています。
PowerShell で自己署名証明書を発行して、「個人」(Cert:\LocalMachine\My)という証明ストアに格納します。証明書には、次の名前を登録しています。先頭は、ドメイン名の FQDN の「lab-nxad-01.nxad.go-lab.jp」にしています。これは CN に登録されます。
- lab-nxad-01.nxad.go-lab.jp: CN と SAN に登録。このドメインの FQDN
- lab-nxad-01.go-lab.jp: SAN に登録。自宅ラボ DNS サーバーで名前解決する FQDN
- lab-nxad-01: SAN に登録。ホスト名
- 192.168.20.8:SAN に登録。本来は IP= で登録したかったが失敗。
PS> New-SelfSignedCertificate -DnsName @("lab-nxad-01.nxad.go-lab.jp","lab-nxad-01.go-lab.jp","lab-nxad-01","192.168.20.8") -CertStoreLocation Cert:\LocalMachine\My PSParentPath: Microsoft.PowerShell.Security\Certificate::LocalMachine\My Thumbprint Subject ---------- ------- 9FB8F84A41F47D369D484C7A995D5B7EAB87070E CN=lab-nxad-01.nxad.go-lab.jp
SAN に、複数の名前が登録できています。残念ながら、IP アドレスはこの方法ではうまく SAN に登録できませんでした。(期待していた SAN は IP=192.168.20.8)
PS> certutil -v -store My 9FB8F84A41F47D369D484C7A995D5B7EAB87070E | Select-String -Pattern "サブジェクト代替名" -Context 0,4 > サブジェクト代替名 DNS Name=lab-nxad-01.nxad.go-lab.jp DNS Name=lab-nxad-01.go-lab.jp DNS Name=lab-nxad-01 DNS Name=192.168.20.8
証明書を、ファイルとしてエクスポートしておきます。
- ファイル名: C:\work\selfsigncert.cer
PS> mkdir C:\work PS> Export-Certificate -Cert Cert:\LocalMachine\My\9FB8F84A41F47D369D484C7A995D5B7EAB87070E -FilePath C:\work\selfsigncert.cer
1-3. LDAPS の有効化(証明書のインストール)
信頼されたルート証明機関のストアは、下記のパスです。Cert:\LocalMachine\Root。発行した証明書を、Root 証明書ストアをインストールします。
PS> Import-Certificate -FilePath C:\work\selfsigncert.cer -CertStoreLocation Cert:\LocalMachine\Root PSParentPath: Microsoft.PowerShell.Security\Certificate::LocalMachine\Root Thumbprint Subject ---------- ------- 9FB8F84A41F47D369D484C7A995D5B7EAB87070E CN=lab-nxad-01.nxad.go-lab.jp
証明書のインストールは下記のように確認できます。
PS> ls Cert:\LocalMachine\Root\9FB8F84A41F47D369D484C7A995D5B7EAB87070E PSParentPath: Microsoft.PowerShell.Security\Certificate::LocalMachine\Root Thumbprint Subject ---------- ------- 9FB8F84A41F47D369D484C7A995D5B7EAB87070E CN=lab-nxad-01.nxad.go-lab.jp
すぐに、LDAPS が有効化されるので、接続可能になったことを確認します。
ドメイン コントローラーで、PowerShell ターミナルなどから、ldp.exe を起動します。
「接続」→「接続」を開きます。
接続先情報を入力して、「OK」をクリックします。
- サーバー: lab-nxad-01.go-lab.jp
※AD で go-lab.jp ドメインも名前解決できるようにしてあります。 - ポート:636
- SSL:チェック ON
LDAPS で接続できてそうです。
1-4. Base64 形式の CA ルート証明書の保存
今回発行した証明書は、NKP で LDAPS サーバーを登録する際にも使用します。ファイルとしてエクスポートしておいた証明書を、ダブルクリックなどで開きます。
- ファイル名: C:\work\selfsigncert.cer
証明書の「詳細」タブ→「ファイルにコピー」をクリックします。
ちなみに、この画面でも SAN(サブジェクト代替名)が確認できます。
そして、「Base 64 encoded X.509」を選択して、「次へ」をクリックします。
ファイル名を指定して、ウィザードに従って保存します。
- ファイル名: C:\work\selfsigncert_base64.cer
2. AD グループ / ユーザーの作成
今回は NKP 認証用に、OU とグループとユーザーを作成してあります。
2-1. OU(NKP OU)
AD に、「NKP」という名前の OU を作成して、ユーザーとグループを配置してあります。
ちなみに、「Acite Directory ユーザーとコンピューター」では、「表示」→「拡張機能」を有効化してあります。
2-2. AD ユーザー(nkp-admin ユーザー)
今回は、表示名を「NKP Admin」にしてあります。
実際にログイン時に指定するユーザー名は、「nkp-admin」です。
このユーザーは、「NKP-Admins」グループに所属しています。
「拡張機能」表示を有効化してあるので、「属性エディター」で LDAP の属性を確認できます。
2-3. AD グループ(NKP-Admins グループ)
NKP-Admins グループは、グローバル セキュリティ グループとして作成してあります。
NKP-Admins グループの LDAP 属性の様子です。
3. NKP ダッシュボードでの AD 認証設定
NKP ダッシュボードで、LDAP の ID Provider として AD を登録します。NKP の Management Cluster は、下記のように作成してあります。
3-1. NKP ダッシュボードでの ID Provider 追加
NKP ダッシュボードにログインして、「Global」→「Administration」→「Identity Providers」を開き、「Identity Providers」タブにある「Add Identity Provider」をクリックします。
「LDAP」を開きます。
LDAP サーバーのパラメータを入力して、下にスクロールしていきます。
- Workspace:All Workspaces ※デフォルトのまま
- Name:nxad.go-lab.jp
- Host:lab-nxad-01.go-lab.jp:636
ひきつづき、パラメータを入力してスクロールします。
- Bind DN:CN=Administrator,CN=Users,DC=nxad,DC=go-lab,DC=jp ※今回はとりあえずドメインの Administrator を使用
- Bind Password:ドメイン Administrator ユーザーのパスワード
- Root CA: 今回は、自己署名証明を入力。さきほど Base64 形式で保存した、 selfsigncert_base64.cer ファイルの内容をそのまま貼り付ける。
ひきつづき、パラメータを入力してスクロールします。
- User Search Base DN:OU=NKP,DC=nxad,DC=go-lab,DC=jp
- User Search Username:sAMAccountName
- User Search ID Attribute:sAMAccountName
- User Search E-Mail:userPrincipalName
「Group search queries for groups」のチェックを ON にして、パラメータを入力します。
- Group Search Base DN:OU=NKP,DC=nxad,DC=go-lab,DC=jp
- Group Search Filter:(objectClass=group)
- Group Search Name Attribute:cn
そして、「Add User Matcher」をクリックします。
のこりのパラメータを入力して、画面右上の「Save」をクリックします。
- Group Search Group Attribute:member
- Group Search Group Attribute:cn
これで、LDAP サーバーとして AD が登録できました。
3-2. NKP でのグループ作成
「Global」→「Administration」→「Identity Providers」にある、「Groups」タブにある「Create Group」をクリックします。
作成するグループの名前を入力して、「Save」をクリックします。
- Enter Name: NKP Admins
- Groups: oidc:NKP-Admins ※「Add Group」をクリックして入力
これで、AD グループが NKP のグループとして登録されました。
3-3. AD グループ(NKP グループ)へのロール割り当て
「Global」→「Administration」→「Access Control」→「Cluster Role Bindings」タブを開き、「NKP Admins」の「Add Roles」をクリックします。
ロールを選択して、「Save」をクリックします。
- Roles:Cluster Admin Role
これで、NKP グループにロールが割り当てられました。
これで、Management Cluster 側には下記のようにリソースが作成されます。
4. ダッシュボードへのログイン確認
いったんログアウトするか、Web ブラウザのシークレット モードなどでダッシュボードのログイン画面を開きなおすと、下記のようにログイン方式が選択できるようになっています。登録した LDAP の名前を選択します。
そして、AD ユーザーの情報を入力してログインします。
AD ユーザーでログインでき、画面右上にユーザーのメール アドレス(userPrincipalName)が表示されています。
設定を解除する手順については、こちらをどうぞ。
以上。