rootで入るのなんとなく気持ちが悪いな(あと面倒くさい)と思い、AzureのEntraIDの勉強がてらハンズオンをしてみます。

環境イメージ
個人でサブスクリプションしているAzureのEntraIDを使います。
Azureにログインしているアカウントで、ホームラボとして使っているProxmoxの管理画面にSSOでアクセスできるようにしていきます。

構築
EntraID
Azure PortalにログインしてEntra IDの管理画面を開きます。
管理からアプリの登録を押下すると以下のような画面になります。
新規登録を押下します。

名前:ProxmoxVE
サポートされるアカウントの種類:シングルテナントのみ
リダイレクトURI
Web:https://<ProxmoxVEのIPアドレス>:8006/
このように設定を入れて、登録を押下します。

画面左の管理から証明書とシークレットを押下します。
クライアントシークレットタブから新しいクライアントシークレットを押下します。

説明:ProxmoxVESSO
有効期限:180日
これで追加します。

作成出来たことを確認します。
値は使用するため控えておきましょう。(シークレットIDはAzure側が管理する用の識別子)

概容に戻ります。
アプリケーションIDをコピーしてメモ帳か何かに控えます。
画面上のエンドポイントを押下します。

OpenID Connectメタデータ ドキュメントをコピーします。
https://login.microsoftonline.com/<テナントID>/v2.0/.well-known/openid-configuration
というURLを
https://login.microsoftonline.com/<テナントID>/v2.0
としてメモ帳か何かに控えます。

Proxmoxでの設定
ログインして、データセンターからアクセス権限 > レルムと下ります。
追加ボタンからOpenID Connectサーバを押下します。

以下の内容を設定します。
| PVEの設定項目 | 入力する内容 | 注意点 |
|---|---|---|
| Issuer URL | https://login.microsoftonline.com/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/v2.0 |
末尾に /.well-known/... を含めないこと。 |
| Client ID | yyyyyyyy-yyyy-yyyy-yyyy-yyyyyyyyyyyy |
Entra IDの「アプリケーション (クライアント) ID」を入力。 |
| Client Key | **************************************** |
Entra IDで発行したシークレットの「値」を入力。 |
| Realm ID |
EntraID (任意) |
ログイン画面のドロップダウンに表示される識別子です。 |
| 自動作成ユーザ | チェックを入れる |
初回ログイン時に、Proxmox上にユーザーアカウントを自動生成します。 |
動作確認と環境微修正
ユーザを作成します。
EntraIDの画面からユーザの管理画面に移動して、新しいユーザーを押下します。

エンタープライズアプリケーションの管理画面を開きます。
先ほど作成したProxmoxVEがあることを確認し押下します。

先ほど作成したユーザにチェックボタンを押下して、割り当てます。

セキュリティのアクセス許可タブを押下します。
Grant admin consent for Default Directoryを押下します。

Proxmoxでログインしてみます。
レルムをEntraIDにしてログインボタンを押下します。

どのユーザでログインしたのか少し気になったので確認してみたところ先ほど作成したユーザではなく、AzureのRootユーザでした。ブラウザでキャッシュしている情報を元にProxmoxにログインしたようです。アプリケーションに割り当てていないユーザなのに・・・

先ほど登録してなかったのですが、Proxmoxでログインした後に自動で登録されてました。

エンタープライズアプリケーションからProxmoxVEを押下して、プロパティを開きます。
割り当てが必要ですか?がいいえになっているので、Entra IDにログイン可能な組織内のユーザーであれば、誰でも認証を通過してProxmoxへ戻されてしまうようです。今回割り当ててないユーザでログインできてしまったのはこの設定が原因でした。
気になるので、はいに変更しました。

割り当てをはいにして、割り当ててないユーザでログインをしようとしたらはじかれました。
セキュリティ的にはこちらの方が良いでしょう。

先ほど手動で紐づけたユーザでProxmoxVEにログイン出来るか確認します。
シークレットウィンドウでProxmoxのURLにアクセスします。
※Azure PortalにログインしていないWebブラウザであればシークレットでなくても良いです。

ログインが求められますので、先ほど作成したユーザ名を入力します。
次へボタンを押下します。

Azureで設定したパスワードを入力します。
サインインを押下します。サインインが出来ると2要素認証の設定を求められるので、設定をします。

設定後、Proxmoxにログインが出来るようになると思います。
ログイン直後ではProxmoxでの権限が何もあたっておりませんので、割り当てていきます。

rootユーザでログインしなおして、
データセンター > アクセス権限を押下します。追加ボタンを押下します。
ユーザのアクセス権限を押下します。

パス:/
ユーザ:SSOでログインしたユーザ
ロール:PVEAdmin
これで追加します。ユーザ分追加します。

EntraIDでProxmoxにログインして、Proxmoxの操作が出来る環境を構築できました。
疲れた。。。
これでAzureにログインしているブラウザでProxmoxホームラボにアクセスしたら、パスワードなどを入力せずにログインできます。













