0
0

IAM Identity Center + Entra ID(P1なし)構成でグループを使う方法

Last updated at Posted at 2024-09-07

AWS IAM Identity Center(以下IdC)をEntra IDと組み合わせてSCIM連携を行いたいが、P1ライセンスがないために、グループやグループメンバーシップ(どのユーザーがどのグループに所属しているかの情報)の同期ができないケースがある。
そんな時、暫定措置となる方法について整理しておく。

背景

Entra ID(旧Azure AD)は無料で使用できるが、機能制約があり、解除するにはP1やP2といったライセンスの購入が必要になる。

やりたいこと 無償版 有償版(P1以上)
IdCのIdPとして設定し、認証に使用する
SCIM連携によってユーザーや属性をIdCに同期する
SCIM連携によってグループやグループメンバーシップをIdCに同期する ×

※他の機能は省略

検証環境でIAM Identity CenterやQuickSight、DataZoneなどと連携している分には問題ないのだが、本番運用を見据えた設計を行おうとすると、この機能制約が地味に効いてくる。規模が大きな環境では、ユーザー単位の認可設定を運用に載せることは現実的でないからだ。

人事異動や組織改編に伴う変更を、QuickSightをはじめとするアプリケーション側で個別に行うこともつらみがある。組織ごとに個別事情は当然あるとはいえ、Entra IDを管理する部門で(できれば人事データと自動連携させて)一元的に行い、個々の利用部門はその結果を享受する形が、やはり合理的である。

そうするとP1以上のライセンスを必要数分用意しなければならなくなるわけだが、有償ライセンスなので、大人の事情ですぐにはどうこうできない場合が多い。
せめて認証はEntra IDで一元化しつつ、P1ライセンスが準備できるまでの経過措置として、グループおよびグループメンバーシップをIdC側で管理できないか?というのが、ここでのモチベーションである。

解決策

AWS CLIを使って、IdC側でグループの作成・管理とグループメンバーシップの管理を行うことができる。SCIMで同期されたEntra IDユーザーをこれらのグループに参加させることも可能。
QuickSightやDataZoneはあくまで「IdC」と連携しているので、IdCにグループがあれば、ひとまずグループメンバーシップ問題には対処できる(一元管理を志向する場合、将来的にEntra IDグループへの移行は必要になる)。

なお、マネジメントコンソールではこれは実現できない。
マネジメントコンソール上は、IdPがEntra IDなど外部IdPの場合は「そちらで管理すべき」という基本姿勢を保っており、追加・修正系の操作ができないためだ。
もっとも、メンバーシップ管理が必要なユーザー数を考慮すれば、マネジメントコンソールでのマニュアル操作はそもそも現実的でないので、大勢に影響はないとも言える。

CLI

前置きが長くなったが、CLIは以下(IDは全てダミーです)。

グループ作成
aws identitystore create-group \
--identity-store-id d-1234567abc \
--display-name <グループ名> \
--profile <該当アカウントのSSOプロファイル> 
グループへの追加
aws identitystore create-group-membership \
--member-id UserId=1234ab56-7890-123a-1b23-45678901c2d3 \
--group-id a1b2cd34-56e7-8901-2345-6ab7c890123d \
--identity-store-id d-1234567abc \
--profile <該当アカウントのSSOプロファイル>

member-idは、IdCで保持しているID(Entra IDのIDではない点に注意)。マネジメントコンソールからも確認できるが、CLIで一覧表示したい場合は以下。

メンバーIDの列挙
aws identitystore list-users \
--identity-store-id d-1234567abc \
--profile <該当アカウントのSSOプロファイル> \
--output json

まとめ

Entra IDのP1ライセンスを入手するまでの経過措置として書いたが、P1の入手目処が立たない場合は恒久対策ともなり得る。その場合は、以下に注意して運用を組み立てる必要がある。

  • グループおよびメンバーシップをIdCで管理することの組織内合意
  • 誰が/どのように人事情報を反映するか
  • 属性を元にした自動管理の余地(例:DynamoDBで属性と対応グループを管理し、SCIMイベントをトリガーにLambdaでメンバーシップを操作する)
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0