次の方法で共有


Azure PowerShell を使用して Azure ロールを割り当てる

Azure ロールベースのアクセス制御 (Azure RBAC) は、Azure リソースへのアクセスを管理するために使用する承認システムです。 アクセス権を付与するには、特定のスコープでユーザー、グループ、サービス プリンシパル、またはマネージド ID にロールを割り当てます。 この記事では、Azure PowerShell を使用してロールを割り当てる方法について説明します。

Azure Az PowerShell モジュールを使用して Azure と対話することをお勧めします。 作業を始めるには、「Azure PowerShell をインストールする」を参照してください。 Az PowerShell モジュールに移行する方法については、「 Azure PowerShell を AzureRM から Az に移行する」を参照してください。

[前提条件]

ロールを割り当てるには、次が必要です。

Azure ロールを割り当てる手順

ロールを割り当てるには、セキュリティ プリンシパル、ロール定義、スコープの 3 つの要素で構成されます。

手順 1: アクセスが必要なユーザーを決定する

ユーザー、グループ、サービス プリンシパル、またはマネージド ID にロールを割り当てることができます。 ロールを割り当てるには、オブジェクトの一意の ID を指定することが必要になる場合があります。 ID の形式は 11111111-1111-1111-1111-111111111111 です。 この ID は、Azure portal または Azure PowerShell を使用して取得できます。

User

Microsoft Entra ユーザーの場合は、ユーザー プリンシパル名 ( patlong@contoso.com やユーザー オブジェクト ID など) を取得します。 オブジェクト ID を取得するには、 Get-AzADUser を使用します。

Get-AzADUser -StartsWith <userName>
(Get-AzADUser -DisplayName <userName>).id

グループ

Microsoft Entra グループの場合は、グループ オブジェクト ID が必要です。 オブジェクト ID を取得するには、 Get-AzADGroup を使用します。

Get-AzADGroup -SearchString <groupName>
(Get-AzADGroup -DisplayName <groupName>).id

サービス プリンシパル

Microsoft Entra サービス プリンシパル (アプリケーションで使用される ID) には、サービス プリンシパル オブジェクト ID が必要です。 オブジェクト ID を取得するには、 Get-AzADServicePrincipal を使用します。 サービス プリンシパルの場合は、アプリケーション ID ではなく オブジェクト ID を使用します。

Get-AzADServicePrincipal -SearchString <principalName>
(Get-AzADServicePrincipal -DisplayName <principalName>).id

マネージド ID

システム割り当てマネージド ID またはユーザー割り当てマネージド ID の場合は、オブジェクト ID が必要です。 オブジェクト ID を取得するには、 Get-AzADServicePrincipal を使用します。

Get-AzADServicePrincipal -SearchString <principalName>
(Get-AzADServicePrincipal -DisplayName <principalName>).id

手順 2: 適切なロールを選択する

権限はロールにグループ化されます。 複数の Azure 組み込みロール の一覧から選択することも、独自のカスタム ロールを使用することもできます。 必要最小限の特権でアクセス権を付与することをお勧めします。そのため、より広範なロールを割り当てないでください。

ロールを一覧表示し、一意のロール ID を取得するには、 Get-AzRoleDefinition を使用できます。

Get-AzRoleDefinition | Format-Table -Property Name, IsCustom, Id

特定のロールの詳細を一覧表示する方法を次に示します。

Get-AzRoleDefinition -Name <roleName>

詳細については、「 Azure ロール定義の一覧表示」を参照してください。

手順 3: 必要なスコープを特定する

Azure には、リソース、 リソース グループ、サブスクリプション、 管理グループの 4 つのレベルのスコープが用意されています。 必要最小限の特権でアクセス権を付与することをお勧めします。そのため、より広範なスコープでロールを割り当てないようにします。 スコープの詳細については、「 スコープについて」を参照してください。

リソース スコープ

リソース スコープの場合は、リソースのリソース ID が必要です。 リソース ID は、Azure portal でリソースのプロパティを確認することで確認できます。 リソース ID の形式は次のとおりです。

/subscriptions/<subscriptionId>/resourcegroups/<resourceGroupName>/providers/<providerName>/<resourceType>/<resourceSubType>/<resourceName>

リソース グループのスコープ

リソース グループ スコープの場合は、リソース グループの名前が必要です。 この名前は、Azure portal の [リソース グループ ] ページで確認することも、 Get-AzResourceGroup を使用することもできます。

Get-AzResourceGroup

サブスクリプション スコープ

サブスクリプション スコープの場合は、サブスクリプション ID が必要です。 この ID は、Azure portal の [サブスクリプション ] ページで確認することも、 Get-AzSubscription を使用することもできます。

Get-AzSubscription

管理グループのスコープ

管理グループスコープの場合は、管理グループ名が必要です。 この名前は、Azure portal の [管理グループ ] ページで確認するか、 Get-AzManagementGroup を使用できます。

Get-AzManagementGroup

手順 4: ロールを割り当てる

ロールを割り当てるには、 New-AzRoleAssignment コマンドを 使用します。 スコープに応じて、通常、コマンドの形式は次のいずれかになります。

リソース スコープ

New-AzRoleAssignment -ObjectId <objectId> `
-RoleDefinitionName <roleName> `
-Scope /subscriptions/<subscriptionId>/resourcegroups/<resourceGroupName>/providers/<providerName>/<resourceType>/<resourceSubType>/<resourceName>
New-AzRoleAssignment -ObjectId <objectId> `
-RoleDefinitionId <roleId> `
-ResourceName <resourceName> `
-ResourceType <resourceType> `
-ResourceGroupName <resourceGroupName>

リソース グループのスコープ

New-AzRoleAssignment -SignInName <emailOrUserprincipalname> `
-RoleDefinitionName <roleName> `
-ResourceGroupName <resourceGroupName>
New-AzRoleAssignment -ObjectId <objectId> `
-RoleDefinitionName <roleName> `
-ResourceGroupName <resourceGroupName>

サブスクリプション スコープ

New-AzRoleAssignment -SignInName <emailOrUserprincipalname> `
-RoleDefinitionName <roleName> `
-Scope /subscriptions/<subscriptionId>
New-AzRoleAssignment -ObjectId <objectId> `
-RoleDefinitionName <roleName> `
-Scope /subscriptions/<subscriptionId>

管理グループのスコープ

New-AzRoleAssignment -SignInName <emailOrUserprincipalname> `
-RoleDefinitionName <roleName> `
-Scope /providers/Microsoft.Management/managementGroups/<groupName>
New-AzRoleAssignment -ObjectId <objectId> `
-RoleDefinitionName <roleName> `
-Scope /providers/Microsoft.Management/managementGroups/<groupName>

ロールの割り当ての例

ストレージ アカウント リソース スコープ内のすべての BLOB コンテナーにロールを割り当てる

オブジェクト ID 55555555-5555-5555-5555-555555555555 とアプリケーション ID 66666666-6666-6666-6666-666666666666 を持つサービス プリンシパルに、ストレージ BLOB データ共同作成者 ロールを、storage12345 という名前のストレージ アカウントのリソース スコープで割り当てます。

PS C:\> New-AzRoleAssignment -ApplicationId 66666666-6666-6666-6666-666666666666 `
-RoleDefinitionName "Storage Blob Data Contributor" `
-Scope "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/Example-Storage-rg/providers/Microsoft.Storage/storageAccounts/storage12345"

RoleAssignmentId   : /subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/Example-Storage-rg/providers/Microsoft.Storage/storageAccounts/storage12345/providers/Microsoft.Authorization/roleAssignments/cccccccc-cccc-cccc-cccc-cccccccccccc
Scope              : /subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/Example-Storage-rg/providers/Microsoft.Storage/storageAccounts/storage12345
DisplayName        : example-identity
SignInName         :
RoleDefinitionName : Storage Blob Data Contributor
RoleDefinitionId   : ba92f5b4-2d11-453d-a403-e96b0029c9fe
ObjectId           : 55555555-5555-5555-5555-555555555555
ObjectType         : ServicePrincipal
CanDelegate        : False

特定の BLOB コンテナー リソース スコープにロールを割り当てる

オブジェクト ID 55555555-5555-5555-5555-555555555555 とアプリケーション ID 66666666-6666-6666-6666-666666666666 を持つサービス プリンシパルに ストレージ BLOB データ寄稿者 ロールを BLOB コンテナー blob-container-01 のスコープで割り当てます。

PS C:\> New-AzRoleAssignment -ApplicationId 66666666-6666-6666-6666-666666666666 `
-RoleDefinitionName "Storage Blob Data Contributor" `
-Scope "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/Example-Storage-rg/providers/Microsoft.Storage/storageAccounts/storage12345/blobServices/default/containers/blob-container-01"

RoleAssignmentId   : /subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/Example-Storage-rg/providers/Microsoft.Storage/storageAccounts/storage12345/blobServices/default/containers/blob-container-01/providers/Microsoft.Authorization/roleAssignm
                     ents/dddddddd-dddd-dddd-dddd-dddddddddddd
Scope              : /subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/Example-Storage-rg/providers/Microsoft.Storage/storageAccounts/storage12345/blobServices/default/containers/blob-container-01
DisplayName        : example-identity
SignInName         :
RoleDefinitionName : Storage Blob Data Contributor
RoleDefinitionId   : ba92f5b4-2d11-453d-a403-e96b0029c9fe
ObjectId           : 55555555-5555-5555-5555-555555555555
ObjectType         : ServicePrincipal
CanDelegate        : False

特定の仮想ネットワーク リソース スコープ内のグループにロールを割り当てる

仮想マシン共同作成者ロールを、pharma-sales-project-network という名前の仮想ネットワークのリソース スコープで ID aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaa を持つPharma Sales Admins グループに割り当てます。

PS C:\> New-AzRoleAssignment -ObjectId aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa `
-RoleDefinitionName "Virtual Machine Contributor" `
-ResourceName pharma-sales-project-network `
-ResourceType Microsoft.Network/virtualNetworks `
-ResourceGroupName MyVirtualNetworkResourceGroup

RoleAssignmentId   : /subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/MyVirtualNetworkResourceGroup
                     /providers/Microsoft.Network/virtualNetworks/pharma-sales-project-network/providers/Microsoft.Authorizat
                     ion/roleAssignments/bbbbbbbb-bbbb-bbbb-bbbb-bbbbbbbbbbbb
Scope              : /subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/MyVirtualNetworkResourceGroup
                     /providers/Microsoft.Network/virtualNetworks/pharma-sales-project-network
DisplayName        : Pharma Sales Admins
SignInName         :
RoleDefinitionName : Virtual Machine Contributor
RoleDefinitionId   : 9980e02c-c2be-4d73-94e8-173b1dc7cf3c
ObjectId           : aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa
ObjectType         : Group
CanDelegate        : False

リソース グループ スコープでユーザーのロールを割り当てる

仮想マシン共同作成者ロールをpatlong@contoso.comリソース グループ スコープユーザーに割り当てます。

PS C:\> New-AzRoleAssignment -SignInName patlong@contoso.com `
-RoleDefinitionName "Virtual Machine Contributor" `
-ResourceGroupName pharma-sales

RoleAssignmentId   : /subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/pharma-sales/pr
                     oviders/Microsoft.Authorization/roleAssignments/55555555-5555-5555-5555-555555555555
Scope              : /subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/pharma-sales
DisplayName        : Pat Long
SignInName         : patlong@contoso.com
RoleDefinitionName : Virtual Machine Contributor
RoleDefinitionId   : 9980e02c-c2be-4d73-94e8-173b1dc7cf3c
ObjectId           : 44444444-4444-4444-4444-444444444444
ObjectType         : User
CanDelegate        : False

または、 -Scope パラメーターを使用して完全修飾リソース グループを指定することもできます。

PS C:\> New-AzRoleAssignment -SignInName patlong@contoso.com `
-RoleDefinitionName "Virtual Machine Contributor" `
-Scope "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/pharma-sales"

RoleAssignmentId   : /subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/pharma-sales/providers/Microsoft.Authorization/roleAssignments/55555555-5555-5555-5555-555555555555
Scope              : /subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/pharma-sales
DisplayName        : Pat Long
SignInName         : patlong@contoso.com
RoleDefinitionName : Virtual Machine Contributor
RoleDefinitionId   : 9980e02c-c2be-4d73-94e8-173b1dc7cf3c
ObjectId           : 44444444-4444-4444-4444-444444444444
ObjectType         : User
CanDelegate        : False

リソース グループ スコープで一意のロール ID を使用してユーザーにロールを割り当てる

ロール名が変更されることがあります。次に例を示します。

  • 独自のカスタム ロールを使用していて、名前を変更することにしました。
  • 名前に (プレビュー) を含む プレビュー ロールを使用している。 ロールが解放されると、ロールの名前が変更されます。

ロールの名前が変更されても、ロール ID は変更されません。 スクリプトまたは自動化を使用してロールの割り当てを作成する場合は、ロール名ではなく一意のロール ID を使用することをお勧めします。 そのため、ロールの名前が変更されると、スクリプトが機能する可能性が高くなります。

次の例では、製薬販売リソース グループ スコープのpatlong@contoso.com ユーザーに仮想マシン共同作成者ロールを割り当てます。

PS C:\> New-AzRoleAssignment -ObjectId 44444444-4444-4444-4444-444444444444 `
-RoleDefinitionId 9980e02c-c2be-4d73-94e8-173b1dc7cf3c `
-Scope "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/pharma-sales"

RoleAssignmentId   : /subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/pharma-sales/providers/Microsoft.Authorization/roleAssignments/55555555-5555-5555-5555-555555555555
Scope              : /subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/pharma-sales
DisplayName        : Pat Long
SignInName         : patlong@contoso.com
RoleDefinitionName : Virtual Machine Contributor
RoleDefinitionId   : 9980e02c-c2be-4d73-94e8-173b1dc7cf3c
ObjectId           : 44444444-4444-4444-4444-444444444444
ObjectType         : User
CanDelegate        : False

リソース グループ スコープでアプリケーションのロールを割り当てる

サービス プリンシパル オブジェクト ID 77777777-7777-7777-7777-7777-77777777777 を持つアプリケーションに、製薬販売リソース グループ スコープで仮想マシン共同作成者ロールを割り当てます。

PS C:\> New-AzRoleAssignment -ObjectId 77777777-7777-7777-7777-777777777777 `
-RoleDefinitionName "Virtual Machine Contributor" `
-ResourceGroupName pharma-sales

RoleAssignmentId   : /subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleAssignments/66666666-6666-6666-6666-666666666666
Scope              : /subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/pharma-sales
DisplayName        : MyApp1
SignInName         :
RoleDefinitionName : Virtual Machine Contributor
RoleDefinitionId   : 9980e02c-c2be-4d73-94e8-173b1dc7cf3c
ObjectId           : 77777777-7777-7777-7777-777777777777
ObjectType         : ServicePrincipal
CanDelegate        : False

サブスクリプション スコープでユーザーのロールを割り当てる

サブスクリプション スコープの ユーザーにannm@example.comロールを割り当てます。

PS C:\> New-AzRoleAssignment -SignInName annm@example.com `
-RoleDefinitionName "Reader" `
-Scope "/subscriptions/00000000-0000-0000-0000-000000000000"

RoleAssignmentId   : /subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleAssignments/66666666-6666-6666-6666-666666666666
Scope              : /subscriptions/00000000-0000-0000-0000-000000000000
DisplayName        : Ann M
SignInName         : annm@example.com
RoleDefinitionName : Reader
RoleDefinitionId   : acdd72a7-3385-48ef-bd42-f606fba81ae7
ObjectId           : 77777777-7777-7777-7777-777777777777
ObjectType         : ServicePrincipal
CanDelegate        : False

管理グループ スコープでユーザーのロールを割り当てる

管理グループ スコープの ユーザーにalain@example.comロールを割り当てます。

PS C:\> New-AzRoleAssignment -SignInName alain@example.com `
-RoleDefinitionName "Billing Reader" `
-Scope "/providers/Microsoft.Management/managementGroups/marketing-group"

RoleAssignmentId   : /providers/Microsoft.Management/managementGroups/marketing-group/providers/Microsoft.Authorization/roleAssignments/22222222-2222-2222-2222-222222222222
Scope              : /providers/Microsoft.Management/managementGroups/marketing-group
DisplayName        : Alain Charon
SignInName         : alain@example.com
RoleDefinitionName : Billing Reader
RoleDefinitionId   : fa23ad8b-c56e-40d8-ac0c-ce449e1d2c64
ObjectId           : 44444444-4444-4444-4444-444444444444
ObjectType         : User
CanDelegate        : False

次のステップ