説明
Microsoft.Authorization/roleDefinitions/writeは、権限がある範囲でカスタムロールを作成・変更するための操作です。そのロールのすべてのassignableScopesでこの権限が必要です。actions: ['*']も、除外がなければこの権限を含む広範な管理操作を許可します。
ロール定義の作成と主体へのロール割り当ては別の操作です。ただし、割り当て済みロールの権限を拡張すると利用者の権限も増える可能性があるため、ロール管理権限の委任は慎重に行ってください。
想定される影響
- 不要なロール変更権限を使い、既存ロールに過剰な権限が追加される可能性があります。
- 広い割り当て可能範囲と過剰なロール割り当てが組み合わさると、影響するリソースが増える可能性があります。
対処方法
- ロール管理が不要な主体に
Microsoft.Authorization/roleDefinitions/writeを付与せず、*の代わりに必要な操作を列挙してください。 actions、notActions、データ操作、ロール割り当てを併せて確認してください。assignableScopesは割り当て可能な範囲であり、それ自体がアクセス権限を付与する設定ではありません。- ロールの作成・変更・割り当ては必要な管理者だけに委任し、変更後の実際の権限と必要な業務の動作を確認してください。
例
サブスクリプションスコープでデプロイし、GUID形式のロールIDを使う例です。主体へのロール割り当ては含みません。既存ロールの更新時は実際のIDを維持し、テナント内で一意のロール名を使ってください。
変更前
bicep
targetScope = 'subscription'
resource roleDef 'Microsoft.Authorization/roleDefinitions@2018-01-01-preview' = {
name: guid(subscription().id, 'my-custom-role')
properties: {
roleName: 'my-custom-role'
description: 'This is a custom role'
permissions: [
{
actions: ['*']
}
]
assignableScopes: [subscription().id]
}
}
除外なしですべての管理操作を含みます。このロールを割り当てると、ロール定義の管理など広範な権限が付与されます。
変更後
bicep
targetScope = 'subscription'
resource roleDef 'Microsoft.Authorization/roleDefinitions@2018-01-01-preview' = {
name: guid(subscription().id, 'my-custom-role')
properties: {
roleName: 'my-custom-role'
description: 'This is a custom role'
permissions: [
{
actions: ['Microsoft.Authorization/roleDefinitions/read']
}
]
assignableScopes: [subscription().id]
}
}
ロール定義の読み取りだけを含みます。実際の要件が読み取りだけで満たせる場合の例であり、ほかのロールによる権限を削除するものではありません。