この記事は
- Proxmoxのユーザー認証に,KeycloakのOIDCでSSOが使えるようにするための設定
- SSOユーザーに権限を与える方法
についてまとめる.
あらすじ
cloudflaredで公開しているKeycloakによる認証サービスを,他にも使えるところがないかと考えたところ,ProxmoxにOIDCのレルムを追加できる機能があったため試してみた.
作業内容
以下の記事を参考にした.
OIDCの設定手順
1. Keyclockのレルムの作成とクライアントの追加
これらに関しては,前回の記事が参考になるので,ここでは省略.
2. useridのMapperの追加
Proxmoxで用いるuseridが参照できるように設定する.Clientsで新たに作成したclientを選択し,その中のClient Scopeを選択する.
次に,<client-id>-dedicated (今回の場合はproxmox-dedicated)を選択し,Add Mapperを選択する.そして,From predefined mappersを選択し,その中からusernameを選択する.これで,Mapperを追加できる.
3. ユーザーの作成
Keycloakにユーザーを登録しておく.(GoogleなどのIdPを設定している場合は不要.前回の記事ではGoogleをIdPとしているため,この作業は省略した)
4. Proxmoxにkeycloak-OIDCを登録
Proxmoxのデータセンターから,アクセス権限内のレルムを選択する.そして,左上の追加をクリックし,OpenID Connectサーバーをクリックする.
そして,ポップアップが表示されたら,Issuer URLには,keyclockのURI/realms/<レルム名>
を入力し,レルムにはレルム名,クライアントIDにはkeyclockで新たに作成したclient名,そしてクライアントキーには,keyclockで取得したものを設定する.(前回の記事で取得方法を解説済みなので省略)
また,自動作成ユーザーにチェックを入れ,ユーザー名の要求をusernameに設定しておく.最後に,右下の追加をクリックすることで,追加される.
セキュリティ的観点から,目的のユーザーでサインインし,ユーザーが登録されたことを確認した後は,自動作成ユーザーのチェックを解除することを強く勧める.
SSOユーザーへの権限の設定
今回は,ユーザーを個別にグループへ追加することで,権限を設定する方法を取る.
1. Poolsとグループの作成
ユーザーに与える属性として,グループを作成し,そのグループに対して割り当てるVMと権限をつなぐPoolsを作成する.
まず,グループはデータセンターのグループタブから,作成をクリックし,任意の名前で作成できる.また,Poolsも同様にPoolsタブから任意の名前で作成できる.名前が一致している必要はない.
2. Poolsにグループと権限を割り当てる
Poolsを作成すると,データセンターの下部に[設定したPoolsの名前]のタブが現れる.このタブとクリックすると,以下の画像のようにサマリ,メンバ,そしてアクセス権限が設定できる.
このうち,まずはアクセス権限の追加を行う.アクセス権限タブの追加をクリックすると,グループ・ユーザー・APIのどれに割り当てるかを選択することができる.今回は,グループに対して割り当てを行う.
グループは,先ほど作成したものを選択する.そして,ロールに関しては規定で存在しているものが複数あるため,グループに対して割り当てたい権限レベルに相当するロールを選択する.
SSOユーザーそれぞれに対して所属するグループを設定できるため,操作権限レベルごと,もしくは部門など業務内容ごとにグループを作成し,それぞれに権限を設定するという運用が想定される.
3. Poolsにメンバ(VM)を割り当てる
次に,Poolsのメンバタブで,VMを割り当てる.ここで割り当てられたVMは,VMの閲覧権限が与えられたグループのユーザーに対して表示されるようになる.また,グループの権限に従った操作が可能となる.
追加は簡単で,メンバタブの追加をクリックし,追加したいVMを選択し,追加する.
4. 自動作成されたユーザーをグループに割り当てる
最後に,ユーザーをグループに割り当てる.まず,ログイン画面でkeycloakのレルムを選択し,SSOログインを行う.その後,データセンターのユーザータブから自動生成されたユーザーを確認することができる.
自動生成されたユーザーを選択し,上部の編集をクリックする.そして表示されるポップアップのグループに,先ほど作成したグループを選択し,OKをクリックする.これで,ユーザーをグループに割り当てることができた.
まとめ
こんな感じで,ProxmoxにkeycloakのOIDCを設定するのは簡単にできるので,みんなKeycloakを運用して便利にProxmoxライフを満喫しましょう!