📌

Microsoft Entra ID (Azure AD)のAzureロール割り当て管理の委任機能(プレビュー)

2023/10/27に公開

はじめに

Azureでは、Azureロール(≒権限)を割り当てるユーザーに対して、「所有者」や「ユーザーアクセス管理者」というロールが必要でした。
「所有者」は言わずもがな、最上位の権限ですので何でもできますし、「ユーザーアクセス管理者」は自分を含めたユーザーに対してロールを割り振ることができるので「所有者」を割り振って最上位の権限を取ることができます。
つまり、いわゆる「特権」として守らなければいけない、扱い注意のロールです。

一方で、個別の開発者やアプリケーション単位で権限管理を考えると、「新しく作成したストレージアカウントに対して、このアプリケーションからの読み取り権限を付けたい」など権限を管理したい局面が出てきます。この「アプリケーション開発者に対して所有者権限を付与するのが果たして正しいでしょうか?」
もちろんNoです。いくら適切にスコープを絞っていたとしても、権限が強すぎでしょう。


※下記のブログ内の図を参考に改変

そこで今回プレビューで出てきたのが「Role Based Access Control Administrator」というロールと、そのロールへの「委任」という機能です。
https://techcommunity.microsoft.com/t5/microsoft-entra-azure-ad-blog/delegate-azure-role-assignment-management-using-conditions/ba-p/3954216

ブログは英語ですし、試してみながら日本語で解説していきたいと思います。

…なお、ここまでの範囲で、「用語レベルで分からん」な場合は、Azureの権限割り当ての基本的な考え方について書いた下記の記事が参考になると思います。ぜひ、見て見てください。
https://zenn.dev/tomot/articles/6528bccdfbe546

委任

今回のプレビューで、下記のような設定が可能になりました。

  • ①あらかじめ指定した特定のロールのみ、割り当て可能に
  • ②あらかじめ指定したプリンシパルにのみ、割り当て可能に
  • ③あらかじめ指定したプリンシパルタイプにのみ、割り当て可能に

このように次郎さんに限定された権限を割り当てる方式を、「条件付き」だとか「委任」とドキュメント上呼んでいるようです。

試してみた

それでは、具体的に下記のような設定を試してみます。

  • 設定できるのは「ストレージBLOBデータ所有者のみ」(それ以外のロールは設定できない)
  • 設定対象は「サービスプリンシパルのみ」(ユーザーやグループには設定できない)

設定してみた

まず、委任設定を試します。

  • ロールの割り当ての追加

  • 「特権ロール」の中から、「Role Based Access Control Administrator」を選択

  • 割り当て先のユーザー(要件の図でいう「次郎さん」)を指定する

  • 条件タブの「制約あり」をON→「条件を追加する」を進める

  • 条件を指定するテンプレートを選択する

    ※今回の要件の場合は、真ん中を選択します。ロールのみ指定できればよければ左、プリンシパルのタイプだけでなくユーザー単位で指定したい場合などは右を選択します。

  • 条件を設定します

あとは結果を確認して、保存します。

効果確認してみた

「次郎さん」でログインし直して、Azureロールの付与操作を試します。

  • IAM設定>ロール

    事前に指定していた「ストレージBLOBデータ所有者」しか表示されず、他のロールを設定できないことがわかります。

  • IAM設定>メンバー

    サービスプリンシパルしか表示されず、ログインしている「次郎さん」を含めユーザープリンシパルを設定することができません。

要件通り設定できていることが確認できました!

おわりに

冒頭に書いた通り、Azureでは権限操作系の権限を付与すると過剰になってしまうことがよくありましたが、今回のプレビュー機能によって、より適切に(最小権限の原則に従い)設定できるようになったことが確認できました。
例によって「早くプレビューが取れますように・・・」ですが期待して待ちたいと思います。

Discussion