vHoge

VMwareのアレコレ備忘録。CLIでがんばるネタ多め。

vCenter で Okta を IdP として利用してみる(公式手順編)

こちらの投稿は vExperts Advent Calendar 2024 の 23 日目になります。
昨年が古のテクノロジーの話かと思えば今回は新しめの話と興味の赴くまま。。。 adventar.org そして、今回は長くなりすぎたので前後半に分かれています

vCenter での外部 IdP 利用

vCenter 8.0 U1 より Okta、8.0 U2 より Microsoft Entra ID、8.0 U3 より PingFederate と IDaaS を外部 IdP として利用できるようになりました。

docs.vmware.com

最近、セキュリティ的な話から多要素認証をやりたいというお話をチラホラ聞く機会がでてきました。vCenter での多要素認証というとその昔からスマートカードRSA SecurID があったのですが、わざわざ物理ソリューションを導入するのはなぁ…という状況において IDaaS の外部 IdP 対応が来たことで、多要素含めた認証周り(と SSO) は IDaaS におまかせして vCener のアカウント管理やセキュリティ強化をしてしまえそうということで、vCenter と IDaaS との連携がどんなものか検証してみる。

Okta Developer

実際にホームラボで検証してみようとなった場合、外部サービス利用となると利用料が発生しなかなか気軽にはいかないところ…ですが、Okta の場合は開発者向けにユーザー数や機能で制限つきではあるが無償で利用可能な Okta Developer が提供されているので、こちらを利用し検証してみる。

Home | Okta Developer

[Sign ip]からアカウント作成に進むと会社用メールアドレスが求められるが、[Log in] から進んでいくと Github アカウント or Google アカウントから Okta のアカウント作成ができる。

GithubGoogle での確認画面、Okta Verify(Okta の多要素認証アプリ)の登録を行うことでログインでき Okta 管理者のスタートページが表示される。

vCenter との連携設定を行う

前提条件や手順は以下の Doc.

Okta に対する vCenter Server ID プロバイダ フェデレーションの構成

細かい手順は以下の KB も参考に。

How to Enable Okta for vCenter Server

手順が動画でも公開されているので、画面操作とかはこちらが参考になる。

vCenter Authentication: Okta integration | vSphere 8

Okta 側のでアプリ作成

まず、Okta 側で連携するアプリの作成を行っておく。
メニューよりアプリケーションを開き、新しいアプリを作成。
作成アプリについてのモーダルが開くので、OIDC / ネイティブアプリケーションを選択。 適当なアプリ統合名を入力、付与タイプでは「リフレッシュトークン」と「リソース所有者のパスワード」についかでチェックを入れる。 画面下部、アクセス制御にて「今はグループの割り当てをスキップ」にて保存。
サインインリダイレクト URI も変更する必要があるが、それはのちほど。。。 作成したアプリの一般タブより、クライアントの資格情報にてクライアント認証を「クライアントシークレット」に入力、また PKCE 要求のチェックは外して保存。 新しいシークレットを生成する。

ユーザーの追加、割り当て

別に必須ではないが、検証用に Google アカウントで作成したユーザーとは別に Okta 内でユーザーを作成しておく。
(企業だとこの辺は Active Directory やどこかから連携したりとかかな…) さきほどの vCenter アプリより、割り当てタブより作成したユーザーを割り当てる。

vCenter 側の設定

vSphere Client にて [管理] → [Single Sign-On] → [設定] よりプロバイダの変更。 事前チェックを実行し、警告確認にチェックを入れて次へ。 ディレクトリ情報指定。ディレクトリ名はともかく、ドメイン名は Okta と合わせる必要があるのかな…? OpenID Connect 情報の入力、ここでデフォルトで表示されているリダイレクト URI はさきほどスキップしたサインインリダイレクト URI に指定する必要があるので、Okta 側に設定する。 vSphere Client 側に戻って空欄側を埋める。ID プロバイダ名は適当な名前、クライアント識別子/共有シークレットは Okta の作成したアプリの一般タブで出ている情報、OpenID アドレスは(調べたところによると) https://[okta テナント FQDN]/.well-known/openid-configuration らしい。 これで確認し、登録完了。 一応ここまで完了するとログイン画面が変化し、ログインが Okta 側に飛ばされるようになる。

一応これで認証は Okta に切り替わったが、認証後に vSphere Client に戻ってきた際、認証されたユーザーが vCenter 側にいないため vSphere Client が表示されることなくエラー画面に飛ばされてしまう。 そのため、Okta から vCenter に対しユーザープロビジョニングを行いユーザーを作成し、ロールを割り当てる必要がある…

が…

Okta からのユーザープロビジョニングは SCIM にて行われるが、そのためには Okta から vCenter に対し HTTPS での接続が必要
(ちなみに Okta ドメインのユーザーは vSphere Client から手動で作成はできないっぽい?)

改めて公式ドキュメントの要件を見ても…

会社でやるにおいても Okta から vCenter に対して HTTPS の到達性を確保するのは(セキュリティ的に)なかなか調整が大変気がしますが、我が家の場合ネットワーク環境的に外部公開は難しいので正攻法だとココで終了なワケですが、言うてもホームラボ、ここは力業で Okta からの到達性を確保しユーザープロビジョニングを行い、Okta ログインを完成させる。

vCenter で Okta を IdP として利用してみる(力業編) へ続く…!

vhoge.hateblo.jp