どうも、Tです。
vSphere7において、外部の認証情報を使ってvSphere Clientへのログイン認証などを行えるAD Over LDAPSのSSO IDソースを試してみました。
目次
やりたいこと
概要
外部ソース(今回は、ADドメインのユーザーアカウント)を利用してvSphere Clientへのログインを行えるようにします。この構成として、Active Directory Over LDAPS(vSphere Clientの表示では、LDAPを介したActive Directory)を行います。
なぜAD over LDAPSなのか
今ままで、vcsaとADドメインアカウントの認証は、統合Windows認証を使っているのがほとんどだと思います。すごく簡単に設定できたので、ADでこれ以外を使う意図がありませんでしたが、この統合Windows認証がvSphere7で下記のように廃止予定のメッセージを出力するようになりました。
KBでは、廃止までの機能的影響がないアナウンスですが、今後のアップデートなどを考慮すると統合Windows認証は避けたいところです。
なぜ廃止なのかは下記のブログに記載されています。MicorosoftさんのLDAPの動作の変更によるものなんですが、もう1つ大切なことがあります。今回使うのはLDAPS(LDAP over SSL/TLS)ですが、ただのLDAPではだめなのか?というところです。
元々Microsoftの動作変更によって、統合Windows認証が廃止になりますが、LDAPの場合でも同様の影響を受けるため、LDAPSを使用する必要があります。
The red & green text has been added by us as an illustration. Sources using LDAP (ldap://, port 389) are likely to be affected. Sources using LDAPS (ldaps://, port 636) are likely fine if they are direct connections and not through proxies or load balancers.
下記は、MicrosoftさんのLDAPの動作変更に関する記事です。
環境
今回使う環境です。すべてESXi内の仮想マシンで構成しています。AD DSは確認だけなら1台でも大丈夫なのですが、複数ある場合のテストがしたかったのでAD DSを2台用意しました。
- vCenterServer:7.0.2 17958471
- vSphere ESXi: 7.0.2 17867351
- AD DS:Windows Server2019(1台目ホスト名:testad、2台目ホスト名:testad2)
- AD CS(エンタープライズCA&Web登録):Windows Server2019
- 確認用クライアント:Windows Server2019
AD CSの構築方法は、下記にまとめました。
AD LDAPSの設定は、下記にまとめました。
2021年9月17日追記
AD CSを使わずにPowerShellのコマンドから生成した自己署名証明書でもvCenterからの接続が行えました。
Power Shellを使った証明書の生成は、下記をご確認ください。
Single Sign-On ID ソース設定
下記のKB2041378を参考にSSOのIDソースを追加していきます。
AD DSの証明書取得(AD DS2台ともで実施)
この操作は、AD DSで行います。この操作は、2台のAD DSそれぞれで実施します。
vcsaからLDAPS接続するには、AD DS側のLDAPSに使用する証明書の取得が必要です。mmcから証明書(ローカルコンピューター)を開いて「個人」->「証明書」->「LDAPSで使用する証明書を右クリック」->「すべてのタスク」->「エクスポート」をクリックします。
「次へ」をクリックします。
「いいえ、秘密キーをエクスポートしません」を選択して、「次へ」をクリックします。
「Base 64 encoded X.509」を選択して、「次へ」をクリックします。
任意のファイル名をつけて「保存」をクリックします。
エクスポート先所を選択して「次へ」をクリックします。
「完了」をクリックするとエクスポートされるので、「OK」をクリックして閉じます。
1台目のAD DSとLDAPS通信を行うために必要な証明書ファイルを取得できました。
AD DSの2台目も同じ手順で証明書をエクスポートします。2つの証明書ファイルを取得できました。
AD DSが触れない場合は?
AD DSが触れない、もしくは担当違いで依頼するのが億劫な場合は、vcsaのshellから下記のコマンドを実施することにより、エクスポートした証明書の中身と同じものを取得することができます。下記コマンド結果のcertificateの部分を、コピペして.cerファイルで保存します。
$ openssl s_client -showcerts -host <AD DS の FQDN> -port 636
vcsaのADドメイン参加
ここからは、vSphere Clientが操作できる環境で行います。操作は、administrator@vsphere.localで行います。
IDソースを追加する前に、vcsaをAD参加する必要があります。
「Single Sign-On」->「設定」->「IDプロバイダ」->「Adtive Directoryドメイン」->「ACTIVE DIRECTORYに参加」をクリックします。
ADドメインの参加情報を入力して。「参加」をクリックします。組織単位(オプション)は、vcsaのコンピュータアカウントが作成される場所の指定です。デフォルトではComputersに作成されます。
「ノード「vcsaのFQDN」は、Active Directoryに正常に参加しました。変更を適用するため、ノードを再起動してください」が表示されるのでノードを再起動します。
ノードの再起動手順は、下記をご参照ください。
再起動しなくても認証できる
ADに参加するとComputersにvcsaのコンピュータアカウントが作成さます。また、そのまま認証も行えるような感じではありますが、下記の注意事項があるので必ず、ノード再起動をするようにしましょう。
重要:
vCenter Server を再起動しないと、 vSphere Client を使用しているときに問題が発生する場合があります。
IDソースの追加
ADへの参加がおわったので、IDソースを追加していきます。
「Single Sign-On」->「設定」->「IDプロバイダ」->「IDソース」->「追加」をクリックします。
IDソースタイプから「LDAPを介したActive Directory」を選択します。
下記のように入力欄が表示されるので、入力して「追加」をクリックします。
といっても、わかりにくい項目があったので抜き出しました。
ID ソース名
設定画面に表示される識別用の名前です。任意の名前を付けます。
ユーザーのベース・グループのベース識別名
ベースDN表記で記載します。今回は、事前に作成したOU「testUsers」「testGroups」を指定しています。
ベースDNがイメージしにくい場合は、mmcのADSIエディタを見るのがわかりやすいです。
なお、「ユーザーのベース識別名」「グループのベース識別名」に同じベースDNを指定することもできます。(ADのCN=Usersにユーザーもグループも作成できますよね。)
「ユーザー・グループベース識別名」を別々のOUで設定した場合・・・・
「ユーザー識別名」に指定した配下のセキュリティグループは、vSphere Client上で表示されません。
「グループ識別名」に指定した配下のADドメインユーザーは、vSphere Client上で表示されません。
接続先
ldapsで使うことを明示します。最後のポート番号もLDAPSを表しているのですべて入力します。
ldaps://<AD DSのホスト名、IPアドレス>:636
証明書(LDAPSの場合)
AD DSで取得した証明書を指定します。これがないとLDAPS接続が行えません。
これでIDソースが追加できました。
確認
IDソースに追加した、ユーザーアカウントでSSO認証が行えるのか確認していきます。テスト用にADアカウントを作成しました。
権限・ロール設定
ADドメインユーザーに権限付与を行います。今回は、簡素にするためグローバル権限にシステム管理者を割りてます。
「アクセスコントロール」->「グローバル権限」->「+」をクリックします。
ドメインに追加したIDソースを指定、ユーザー/グループにADドメインのものを指定、ロールにシステム管理者を設定、子へ伝達にチェックを入れて「OK」をクリックします。
グローバル権限に追加できました。
Windowsセッション認証
testuser001でWindowsにログインして、vSphere Clientに接続し拡張認証プラグインのダウンロードをクリックします。
いつからかわかりませんが、2021年8月前後のChromeでは、拡張認証プラグインをクリックしてもダウンロードできないようです。IE、Edge、Firefoxなどでダウンロードしてください。
ダウンロードしたファイルを実行してインストールを行います。(次へ次へへインストールできるので割愛します)
ブラウザを更新して、「Windowsセッション認証を使用」にチェックを入れて「ログイン」をクリックします。
確認のポップアップが表示されるので「Allow」をクリックします。
ADドメインユーザーのtestuser001でログインが行えました。
余談ではありますが、Administraotr@vsphere.local以外のアカウントでは、システム管理者が割り当たっていても(ローカルSSOアカウントでも)vCLS仮想マシンは表示されません。※ドキュメントが見つからないため、仕様なのか不具合なのかわかりませんが・・・おそらく仕様なのでしょう。
参考
まとめ
統合Windows認証よりも格段に面倒な手順が増えています。LDAPS以外のもう1つの方法としてAD FSがあります(僕は未検証ですが・・・)
こちらは、さらに面倒なので特に要望がなければ、今後はLDAPS接続が一般的になるのかなぁと考えています。