Azure アクセス管理を他者に委任します
Azure のロールベースのアクセス制御 (Azure RBAC)では、Azure リソースへのアクセスを許可するために、Azure ロールを割り当てます。 例えば、ユーザーがサブスクリプション内の Web サイトを作成および管理する必要がある場合は、Web サイト共同作成者ロールを割り当てます。
Azure リソースへのアクセスを許可するために Azure ロールを割り当てることは一般的なタスクです。 管理者は、他のユーザーに委任させたいアクセス権を付与する依頼をいくつか受ける場合があります。 ただし、代理人が自分のジョブを実行するために必要なアクセス許可のみを持っていることを確認する必要があります。 この記事では、ロールの割り当て管理を組織内の他のユーザーに委任するより安全な方法について説明します。
ロールの割り当て管理を委任する理由
ロールの割り当て管理を他のユーザーに委任することが必要になる理由の一部を次に示します。
- 組織でロールを割り当てる要求がいくつかあります。
- ユーザーは、必要なロールの割り当てを待機してブロックされます。
- それぞれの部門、チーム、またはプロジェクト内のユーザーは、アクセスが必要なユーザーに関するより多くの知識を持っています。
- ユーザーには Azure リソースを作成するためのアクセス許可がありますが、そのリソースを完全に使用するには追加のロールの割り当てが必要です。 例:
- 仮想マシンを作成するアクセス許可を持つユーザーは、仮想マシン管理者ログインロールまたは仮想マシン ユーザー ログイン ロールなしで仮想マシンにすぐにサインインすることはできません。 管理者を追跡してログイン ロールを割り当てる代わりに、ユーザーが自分にログイン ロールを割り当てることができる方がより効率的です。
- 開発者には、Azure Kubernetes Service (AKS) クラスターと Azure Container Registry (ACR) を作成するアクセス許可がありますが、ACR からイメージをプルできるように、マネージド ID に AcrPull ロールを割り当てる必要があります。 管理者を追跡して AcrPull ロールを割り当てる代わりに、開発者がロール自体を割り当てることができる方がより効率的です。
ロールの割り当て管理を委任できる現在の方法
所有者 ロールと ユーザー アクセス管理者 ロールは、ユーザーがロールの割り当てを作成できるようにする組み込みロールです。 これらのロールのメンバーは、サブスクリプション内の任意のリソースに対して書き込み、読み取り、削除のアクセス許可を持つユーザーを決定できます。 ロールの割り当て管理を別のユーザーに委任するには、所有者またはユーザー アクセス管理者のロールをユーザーに割り当てることができます。
次の図は、Alice がロールの割り当ての責任を Dara に委任する方法を示しています。 具体的な手順については、「Azure サブスクリプションの管理者としてユーザーを割り当てる」を参照してください。
- Alice は、ユーザー アクセス管理者ロールを Dara に割り当てます。
- Dara は、同じスコープの任意のユーザー、グループ、またはサービス プリンシパルに任意のロールを割り当てることができるようになりました。
現在の委任方法に関する問題は何ですか?
ロールの割り当て管理を組織内の他のユーザーに委任する現在の方法の主な問題を次に示します。
- 代理人は、ロールの割り当てスコープで無制限のアクセス権を持ちます。 これは最小特権の原則に違反し、より広い攻撃対象領域にさらされます。
- 代理人は、スコープ内の任意のユーザー (自分自身を含む) に任意のロールを割り当てることができます。
- 代理人は、所有者またはユーザー アクセス管理者ロールを別のユーザーに割り当てることができ、そのユーザーは他のユーザーにロールを割り当てることができます。
所有者またはユーザー アクセス管理者ロールを割り当てる代わりに、より安全な方法は、ロールの割り当てを作成する代理人の機能を制限することです。
より安全な方法: 条件付きでロールの割り当て管理を委任する
ロールの割り当て管理の条件付き委任は、ユーザーが作成できるロールの割り当てを制限する方法です。 前の例では、Alice は Dara が自分に代わってロールの割り当てを作成することを許可できますが、すべてのロールの割り当てを作成することはできません。 例えば、Alice は、Dara が割り当てることができるロールを制限し、Dara がロールを割り当てることができるプリンシパルを制約できます。 この条件付き委任は、"制約付き委任" と呼ばれる場合もあり、Azure 属性ベースのアクセス制御 (Azure ABAC) 条件を使用して実装されます。
次のビデオでは、ロールの割り当て管理の条件付き委任について概説しています。
条件付きでロールの割り当て管理を委任する理由
条件付きでロールの割り当て管理を他のユーザーに委任する方がより安全である理由の一部を次に示します。
- 代理人が作成できるロールの割り当てを制限できます。
- 代理人が別のユーザーにロールの割り当てを許可できないようにすることができます。
- 組織の最小特権ポリシーのコンプライアンスを強化できます。
- サービス アカウントに完全なアクセス許可を付与しなくても、Azure リソースの管理を自動化できます。
条件例
Alice がサブスクリプションのユーザー アクセス管理者ロールを持つ管理者である例を考えてみましょう。 Alice は、特定のグループに特定のロールを割り当てる機能を Dara に許可したいと考えています。 Alice は、Dara に他のロールの割り当てアクセス許可を持つことを望んでいません。 次の図は、Alice が条件付きでロールの割り当ての責任を Dara に委任する方法を示しています。
- Alice は、ロール ベースのアクセス制御管理者ロールを Dara に割り当てます。 Alice は、Dara がバックアップ共同作成者ロールまたはバックアップ閲覧者ロールのみをマーケティンググループと販売グループに割り当てることができるように条件を追加します。
- Dara は、バックアップ共同作成者またはバックアップ閲覧者ロールをマーケティンググループと販売グループに割り当てることができるようになりました。
- Dara が他のロールを割り当てたり、別のプリンシパル (ユーザーやマネージド ID など) にロールを割り当てたりしようとすると、ロールの割り当ては失敗します。
ロール ベースのアクセス制御管理者 ロール
ロール ベースのアクセス制御管理者ロールは、ロールの割り当て管理を他のユーザーに委任するために設計された組み込みロールです。 アクセス許可は、 ユーザー アクセス管理者よりも少なくなり、最小限の特権のベスト プラクティスに従います。 ロール ベースのアクセス制御管理者ロールには、次のアクセス許可があります:
- 指定されたスコープのロールの割り当てを作成します
- 指定したスコープにおけるロールの割り当てを削除します
- 機密データを除くあらゆる種類のリソースの読み取り
- サポート チケットの作成と更新
ロールの割り当てを制限する方法
ここでは、ロールの割り当てを条件で制限する方法を示します。 これらの条件をシナリオに合わせて組み合わせることもできます。
割り当て可能な ロール を制限します
ロールを割り当てることができるロールとプリンシパルの種類 (ユーザー、グループ、またはサービス プリンシパル) を制限します
ロールを割り当てることができるロールと特定のプリンシパルを制限します
ロールの割り当てアクションの追加と削除に別の条件を指定します
条件付きでロールの割り当て管理を委任する方法
条件付きでロールの割り当て管理を委任するには、現在行っているとおりにロールを割り当てますが、ロールの割り当て条件も追加します。
代理人が必要とするアクセス許可を決定します
- どのロールを代理人は割り当ててもよいか?
- 代理人はどの種類のプリンシパルにロールを割り当ててもよいか?
- 代理人はどのプリンシパルにロールを割り当ててもよいか?
- 代理人は任意のロールの割り当てを削除できるか?
新しいロールの割り当てを開始します
[ロール ベースのアクセス制御管理者] ロールを選択します
Microsoft.Authorization/roleAssignments/write
アクションを含む任意のロールを選択できますが、ロール ベースのアクセス制御管理者の方がアクセス許可が少なくなります。代理人を選択します
ロールの割り当て管理を委任するユーザーを選択します。
条件の追加
条件を追加する方法は 複数あります。 例えば、Azure portal の条件テンプレート、Azure portal の高度な条件エディター、Azure PowerShell、Azure CLI、Bicep、または REST API を使用できます。
条件テンプレートの一覧から選択します。 設定 を選択して、ロール、プリンシパルの種類、またはプリンシパルを指定します。
詳細については、「条件を使用して Azure ロールの割り当て管理を他のユーザーに委任する」を参照してください。
委任する条件付きでロールを割り当てます
条件を指定したら、ロールの割り当てを完了します。
代理人に連絡します
条件付きでロールを割り当てることができることを代理人に知らせます。
条件付き組み込みロール
Key Vault データ アクセス管理者 と仮想マシン データ アクセス管理者 (プレビュー) のロールには、ロールの割り当てを制限する組み込み条件が既に含まれています。
Key Vault データ アクセス管理者ロールを使用すると、Key Vault のシークレット、証明書、キーへのアクセスを管理できます。 所有者ロールやユーザー アクセス管理者ロールなどの特権ロールを割り当てることなく、アクセス制御に専念しています。 これにより、最小限の特権の原則にさらに準拠するために、データ サービス間で保存時の暗号化を管理するシナリオの職務をより適切に分離できます。 この条件により、ロールの割り当ては次の Azure Key Vault ロールに制限されます:
- Key Vault Administrator
- Key Vault Certificates Officer
- Key Vault Crypto Officer
- Key Vault Crypto Service Encryption User
- Key Vault Crypto User
- Key Vault Reader
- Key Vault Secrets Officer
- Key Vault Secrets User
Key Vault データ アクセス管理者ロールの割り当てをさらに制限する場合は、独自の条件を追加して、Key Vault ロールを割り当てることができる プリンシパルの種類 (ユーザー、グループ、またはサービス プリンシパル) または特定のプリンシパル を制限できます。
既知の問題
ロールの割り当て管理の条件付き委任に関連する既知の問題を次に示します。
- カスタム ロールについては、Privileged Identity Management を使用して、条件付きでロールの割り当て管理を委任することはできません。
- Microsoft.Storage データ アクションと GUID 比較演算子を使用する ABAC 条件を使用してロールを割り当てることはできません。 詳細については、「Azure RBAC のトラブルシューティング」を参照してください。
ライセンスの要件
この機能の使用は無料で、Azure サブスクリプションに含まれています。