AzureCLIでRGにロールを割り当てる方法

AzureCLI AzureCLI
この記事は約9分で読めます。

AzureCLIではaz roleコマンドを利用することで、Azureリソースに対してロールの割り当ても実施することができます。

ここではRGに対してのロールの割り当て割り当て後の確認方法、また複数のロール割り当て時に利用できるスクリプトを紹介しています。

広告

1.AzureCLIでRGにロールを割り当てる

以下のコマンドでRGにロールを割り当てることができます。

今回はContributor(共同作成者)のロールを付与しています。

az role assignment create --assignee <オブジェクトID> `
 --role <付与したいロール名orID> `
 -g <RG名>

 # 記載例
az role assignment create --assignee 11111111-2222-3333-4444-555555555555 `
 --role Contributor `
 -g rg-test

[参考] よくある(?)ミス

このコマンドを利用する際にいつも間違えるのが手打ち時のスペルミスです。

私の場合 Contributer と打ってしまうことが多くその都度「Role ‘Contributer’ doesn’t exist.」と怒られました。

PS C:\> az role assignment create --assignee 11111111-2222-3333-4444-555555555555 `
>>  --role Contributer `
>>  -g rg-test
Role 'Contributer' doesn't exist.

逆に言うとこの出力が出たらスペルミスがあるということなのでもし出てしまったら見直しましょう。

1-1.権限付与を確認する

以下のコマンドで、RGに付与されたかどうかを確認できます。

az role assignment list -g の出力結果をそのまま利用すると不要な情報まで出てくるので最低限必要な「principalName」「roleDefinitionName」「updatedOn」に絞って出力させています。

az role assignment list `
 -g rg-test `
 --query "[].{principalName:principalName, roleDefinitionName:roleDefinitionName, updatedOn:updatedOn}" `
 --output table

実行結果↓

PS C:\> az role assignment list `
>>  -g rg-test `
>>  --query "[].{principalName:principalName, roleDefinitionName:roleDefinitionName, updatedOn:updatedOn}" `
>>  --output table
PrincipalName                          RoleDefinitionName    UpdatedOn
-------------------------------------  --------------------  --------------------------------
testuser001@testentra.onmicrosoft.com  Owner                 2025-11-14T04:27:43.515361+00:00
testuser002@testentra.onmicrosoft.com  Contributor           2025-11-28T04:31:03.483718+00:00

[参考]1-3.ロールの情報を取得する

ロールの一覧は以下のコマンドで取得できます。

個人的にはロールの正式名称のみの出力でよいかとは思います。

 # すべての情報を取得する
az role definition list 

 # ロールの正式名称のみを出力する
az role definition list --query "[].{roleName:roleName}"

[参考]2.複数のRGにロールを付与する場合

1つのRGにロールを付与するだけならいいですが、複数のRGに対して複数のユーザーの異なるロールを付与、、なんてことになると上記のスクリプトの用意だけでめんどくさいです。

なので以下、それぞれのユースケースでスクリプトを用意しているので参考にしてもらえればと思います。

2-1.権限とassigneeがすべて同じである場合

リストに入力する値がRG名だけなので比較的シンプルなスクリプトで実装できます。

 # 共通のAssigneeとRoleを指定
$assignee = "11111111-2222-3333-4444-555555555555"
$role     = "Contributor"

 # 割り当て対象のリソースグループ一覧
$resourceGroups = @(
    "rg-test",
    "rg-prod",
    "rg-dev"
)

foreach ($rg in $resourceGroups) {
    Write-Host "Creating role assignment for $assignee with role $role in RG $rg..."

    az role assignment create `
        --assignee $assignee `
        --role $role `
        --resource-group $rg
}

2-2.ロールのみが同じである場合

assigneeとRG名をリスト化し、ロールを固定の変数にします。

 # 共通ロールを指定
$role = "Contributor"

 # 割り当て対象の一覧(Assignee と ResourceGroupだけ定義)
$assignments = @(
    @{ Assignee = "11111111-2222-3333-4444-555555555555"; ResourceGroup = "rg-test" },
    @{ Assignee = "66666666-7777-8888-9999-000000000000"; ResourceGroup = "rg-test" },
    @{ Assignee = "aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee"; ResourceGroup = "rg-prod" }
)

foreach ($a in $assignments) {
    Write-Host "Creating role assignment for $($a.Assignee) with role $role in RG $($a.ResourceGroup)..."

    az role assignment create `
        --assignee $a.Assignee `
        --role $role `
        --resource-group $a.ResourceGroup
}

2-3.assigneeのみが同じである場合

上記と似たようなスクリプトです。

 # 共通のAssigneeを指定
$assignee = "11111111-2222-3333-4444-555555555555"

 # 割り当て対象の一覧(RoleとResourceGroupを組み合わせて定義)
$assignments = @(
    @{ Role = "Contributor"; ResourceGroup = "rg-test" },
    @{ Role = "Reader";      ResourceGroup = "rg-dev" },
    @{ Role = "Owner";       ResourceGroup = "rg-prod" }
)

foreach ($a in $assignments) {
    Write-Host "Creating role assignment for $assignee with role $($a.Role) in RG $($a.ResourceGroup)..."

    az role assignment create `
        --assignee $assignee `
        --role $a.Role `
        --resource-group $a.ResourceGroup
}

2-4.ロールとassigneeとRGすべてが異なる場合

ロールとassigneeとRGすべてをリスト化して変数として渡してループ処理させます。

 # 割り当て対象の一覧を定義
$assignments = @(
    @{ Assignee = "11111111-2222-3333-4444-555555555555"; Role = "Contributor"; ResourceGroup = "rg-test" },
    @{ Assignee = "66666666-7777-8888-9999-000000000000"; Role = "Reader";      ResourceGroup = "rg-test" },
    @{ Assignee = "aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee"; Role = "Owner";       ResourceGroup = "rg-prod" }
)

foreach ($a in $assignments) {
    Write-Host "Creating role assignment for $($a.Assignee) with role $($a.Role) in RG $($a.ResourceGroup)..."

    az role assignment create `
        --assignee $a.Assignee `
        --role $a.Role `
        --resource-group $a.ResourceGroup
}