[Azure AD]テナント間同期されたユーザーに自動的に権限を与えたい
はじめに
先日、「Azure AD のテナント間同期」機能を設定して動きを確認しました。
その際の課題として、下のようなことを書いています。
ということで今回は、「同期されたユーザーを動的グループで管理して、あらかじめその動的グループに権限を割り当てしておこうね」という問題を考えてみます。
動的グループの作成
グループ作成
Azure AD>グループ>新しいグループ から新規グループを作成します。
「メンバーシップの種類」を「割り当て済み(デフォルト値)」から「動的ユーザー」に変更します。
動的メンバーシップの条件
続けて、「動的クエリの追加」から、動的グループに所属させる条件を考えます。
ここでは、以下のような条件で設定してみます。
ゲスト招待された外部ユーザーは下記のようなネーミングルールになっていますので、
<user名>_<home_tenant>.onmicrosoft.com#EXT#@<target_tenant>.onmicrosoft.com
UserPrincipalNameに含まれる「ホームテナント」のドメイン名を条件に引っかけることにします。
以上で、「同期設定をしたホームテナントからのゲストユーザーが自動的に含まれる動的グループ」が作成されます。
権限設定
動的グループであっても、通常のグループやユーザーと同様に、サブスクリプションやリソースグループのIAM設定で権限を割り当てます。
以上で完了です。簡単ですね…
グループに入れるユーザーを精査したい
先ほど書いた通り、ゲストユーザーの判定条件がドメイン名だと、「同期されたユーザー」という判定条件に使うには無理な部分があります。
もうちょっと…と考えると、下記のようなところがあり得るかなと思います。
テナント間同期設定の見直し
前回の記事で記載した「属性マッピング」の設定では、デフォルトで「ホームテナントのユーザー属性(プロパティ)をだいたい全部ターゲットテナントに設定します」という条件になっています。
ここでは、1つカスタマイズを行い、ユーザーの「拡張属性」に対して設定を行います。
この設定により、ユーザーの拡張属性(extensionAttribute1)に対して、好きな文字列を設定でき「このルールで同期されたユーザー」を一意に識別できるようになります。
同期されるデータ内容のリストに下記のように追加され、
これを保存すると下記のような確認を求められます。
これにより、ホームテナントのユーザーの属性に何か変更を加えなくても、改めての同期対象になるようです。
同期が成功したことを確認した後、各ユーザーのプロパティを確認すると「拡張属性」の「表示」リンクが活性化されており、
中身を見るとちゃんと「extensionAttribute1」に指定した値が設定されていることが分かります。
動的グループのメンバーシップ条件の見直し
続けて、条件を下記のように指定し直します。
単純に「extentionAttribute1」属性の値が「指定した文字列であること」です。
このような同期条件を駆使すれば、
-
管理者ユーザ
・ホームテナントでAdministratorsグループに所属するユーザーは、同期時に拡張属性に「Administrator」という名称を設定する
・ターゲットテナントで「Administrators」を条件に動的グループを作る
・この動的グループには、サブスクリプションに対して「所有者ロール」を付与する -
開発者ユーザ
・ホームテナントでDedvelopersグループに所属するユーザーは、同期時に拡張属性に「Dedvelopers」という名称を設定する
・ターゲットテナントで「Dedvelopers」を条件に動的グループを作る
・この動的グループには、サブスクリプションに対して「共同作成者ロール」を付与する
といった運用が可能になります。
おわりに
今回は、Azure ADのテナント間同期機能と組み合わせて、自動的に権限を付与する方法を検討しました。
動的グループを使うことで、Azure(サブスクリプション)に対するロール付与まで実現できることが分かり、AzureにおいてもマルチAAD・マルチサブスクリプションな構成においてSSOに近いことがほぼほぼマネージドに実装できるということが分かりました。
残念ながらAzureADロールは現時点(2023/3)では実装できないようですが、これは今後のAzureの機能拡張に期待ですね。
もっとスマートなやり方を思いつくようでしたらぜひ教えてください!お待ちしてます。
Discussion