チュートリアル:Azure PowerShell を使用して Azure リソースへのアクセス権をグループに付与する
Azure ロールベースのアクセス制御 (Azure RBAC) は、Azure のリソースに対するアクセスを管理するための手法です。 このチュートリアルでは、Azure PowerShell を使用して、サブスクリプション内のすべてを表示し、リソース グループ内のすべてを管理するためのアクセス権をグループに付与します。
このチュートリアルでは、以下の内容を学習します。
- さまざまなスコープでのグループへのアクセス権の付与
- アクセス権の表示
- アクセス権の削除
Azure サブスクリプションをお持ちでない場合は、開始する前に 無料アカウント を作成してください。
Note
Azure を操作するには、Azure Az PowerShell モジュールを使用することをお勧めします。 作業を開始するには、「Azure PowerShell のインストール」を参照してください。 Az PowerShell モジュールに移行する方法については、「AzureRM から Az への Azure PowerShell の移行」を参照してください。
前提条件
このチュートリアルを完了するには、次の要件があります。
- Microsoft Entra ID でグループを作成する (または既存のグループを所有する) ためのアクセス許可
- Azure Cloud Shell
- Microsoft Graph PowerShell SDK
ロールの割り当て
Azure RBAC でアクセス権を付与するには、ロールの割り当てを作成します。 ロールの割り当ては、セキュリティ プリンシパル、ロールの定義、スコープの 3 つの要素で構成されています。 このチュートリアルで実行するロールの割り当ては次の 2 つです。
セキュリティ プリンシパル | ロール定義 | Scope |
---|---|---|
グループ (RBAC チュートリアル グループ) |
Reader | サブスクリプション |
グループ (RBAC チュートリアル グループ) |
Contributor | Resource group (rbac-tutorial-resource-group) |
グループの作成
ロールを割り当てるには、ユーザー、グループ、またはサービス プリンシパルが必要です。 グループがない場合は、作成します。
Azure Cloud Shell で、New-MgGroup コマンドを使用して、新しいグループを作成します。
New-MgGroup -DisplayName "RBAC Tutorial Group" -MailEnabled:$false ` -SecurityEnabled:$true -MailNickName "NotSet"
DisplayName Id MailNickname Description GroupTypes ----------- -- ------------ ----------- ---------- RBAC Tutorial Group aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb NotSet {}
グループを作成するアクセス許可がない場合は、代わりに「チュートリアル: Azure PowerShell を使用して Azure リソースへのアクセス権をユーザーに付与する」をお試しください。
リソース グループを作成する
リソース グループを使用して、リソース グループ スコープでロールを割り当てる方法を示すことができます。
Get-AzLocation コマンドを使用して、リージョンの場所の一覧を取得します。
Get-AzLocation | select Location
近くの場所を選択し、変数に割り当てます。
$location = "westus"
New-AzResourceGroup コマンドを使用して、新しいリソース グループを作成します。
New-AzResourceGroup -Name "rbac-tutorial-resource-group" -Location $location
ResourceGroupName : rbac-tutorial-resource-group Location : westus ProvisioningState : Succeeded Tags : ResourceId : /subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/rbac-tutorial-resource-group
アクセス権の付与
グループにアクセス権を付与するには、New-AzRoleAssignment コマンドを使用してロールを割り当てます。 セキュリティ プリンシパル、ロールの定義、およびスコープを指定する必要があります。
Get-MgGroup コマンドを使用して、グループのオブジェクト ID を取得します。
Get-MgGroup -Filter "DisplayName eq 'RBAC Tutorial Group'"
DisplayName Id MailNickname Description GroupTypes ----------- -- ------------ ----------- ---------- RBAC Tutorial Group aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb NotSet {}
グループのオブジェクト ID を変数に保存します。
$groupId = "aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb"
Get-AzSubscription コマンドを使用して、サブスクリプションの ID を取得します。
Get-AzSubscription
Name : Pay-As-You-Go Id : 00000000-0000-0000-0000-000000000000 TenantId : aaaabbbb-0000-cccc-1111-dddd2222eeee State : Enabled
サブスクリプション スコープを変数に保存します。
$subScope = "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e"
閲覧者ロールをサブスクリプション スコープでグループに割り当てます。
New-AzRoleAssignment -ObjectId $groupId ` -RoleDefinitionName "Reader" ` -Scope $subScope
RoleAssignmentId : /subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/providers/Microsoft.Authorization/roleAssignments/00000000-0000-0000-0000-000000000000 Scope : /subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e DisplayName : RBAC Tutorial Group SignInName : RoleDefinitionName : Reader RoleDefinitionId : acdd72a7-3385-48ef-bd42-f606fba81ae7 ObjectId : aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb ObjectType : Group CanDelegate : False
共同作成者ロールをリソース グループ スコープでグループに割り当てます。
New-AzRoleAssignment -ObjectId $groupId ` -RoleDefinitionName "Contributor" ` -ResourceGroupName "rbac-tutorial-resource-group"
RoleAssignmentId : /subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/rbac-tutorial-resource-group/providers/Microsoft.Authorization/roleAssignments/00000000-0000-0000-0000-000000000000 Scope : /subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/rbac-tutorial-resource-group DisplayName : RBAC Tutorial Group SignInName : RoleDefinitionName : Contributor RoleDefinitionId : b24988ac-6180-42a0-ab88-20f7382dd24c ObjectId : aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb ObjectType : Group CanDelegate : False
アクセス権の表示
サブスクリプションのアクセス権を確認するには、Get-AzRoleAssignment コマンドを使用して、ロールの割り当てを一覧表示します。
Get-AzRoleAssignment -ObjectId $groupId -Scope $subScope
RoleAssignmentId : /subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/providers/Microsoft.Authorization/roleAssignments/ffffffff-eeee-dddd-cccc-bbbbbbbbbbb0 Scope : /subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e DisplayName : RBAC Tutorial Group SignInName : RoleDefinitionName : Reader RoleDefinitionId : acdd72a7-3385-48ef-bd42-f606fba81ae7 ObjectId : aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb ObjectType : Group CanDelegate : False
出力では、閲覧者ロールが、サブスクリプション スコープで RBAC チュートリアル グループに割り当てられていることを確認できます。
リソース グループのアクセス権を確認するには、Get-AzRoleAssignment コマンドを使用して、ロールの割り当てを一覧表示します。
Get-AzRoleAssignment -ObjectId $groupId -ResourceGroupName "rbac-tutorial-resource-group"
RoleAssignmentId : /subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/rbac-tutorial-resource-group/providers/Microsoft.Authorization/roleAssignments/00000000-0000-0000-0000-000000000000 Scope : /subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/rbac-tutorial-resource-group DisplayName : RBAC Tutorial Group SignInName : RoleDefinitionName : Contributor RoleDefinitionId : b24988ac-6180-42a0-ab88-20f7382dd24c ObjectId : aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb ObjectType : Group CanDelegate : False RoleAssignmentId : /subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/providers/Microsoft.Authorization/roleAssignments/ffffffff-eeee-dddd-cccc-bbbbbbbbbbb0 Scope : /subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e DisplayName : RBAC Tutorial Group SignInName : RoleDefinitionName : Reader RoleDefinitionId : acdd72a7-3385-48ef-bd42-f606fba81ae7 ObjectId : aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb ObjectType : Group CanDelegate : False
出力では、共同作成者ロールと閲覧者ロールの両方が、RBAC チュートリアル グループに割り当てられていることを確認できます。 共同作成者ロールは rbac-tutorial-resource-group スコープです。また、閲覧者ロールは、サブスクリプション スコープに継承されます。
(省略可能) Azure portal を使用したアクセス権の表示
Azure portal で、ロールの割り当てがどのように表示されるかを確認するには、サブスクリプションの [アクセス制御 (IAM)] ブレードを表示します。
リソース グループの [アクセス制御 (IAM)] ブレードを表示します。
アクセス権の削除
ユーザー、グループ、アプリケーションのアクセス権を削除するには、Remove-AzRoleAssignment を使用して、ロールの割り当てを削除します。
次のコマンドを使用して、リソース グループ スコープでグループの共同作成者ロールの割り当てを削除します。
Remove-AzRoleAssignment -ObjectId $groupId ` -RoleDefinitionName "Contributor" ` -ResourceGroupName "rbac-tutorial-resource-group"
次のコマンドを使用して、サブスクリプション スコープでグループの閲覧者ロールの割り当てを削除します。
Remove-AzRoleAssignment -ObjectId $groupId ` -RoleDefinitionName "Reader" ` -Scope $subScope
リソースをクリーンアップする
このチュートリアルで作成したリソースをクリーンアップするには、リソース グループとグループを削除します。
Remove-AzResourceGroup コマンドを使用して、リソース グループを削除します。
Remove-AzResourceGroup -Name "rbac-tutorial-resource-group"
Confirm Are you sure you want to remove resource group 'rbac-tutorial-resource-group' [Y] Yes [N] No [S] Suspend [?] Help (default is "Y"):
確認を求められたら、「Y」と入力します。削除には数秒かかります。
Remove-MgGroup コマンドを使用して、グループを削除します。
Remove-MgGroup -GroupID $groupId
グループを削除しようしたときにエラーが発生する場合は、ポータルでもグループを削除できます。