Przypisywanie ról platformy Azure przy użyciu Azure PowerShell

Kontrola dostępu oparta na rolach (RBAC) platformy Azure to system autoryzacji używany do zarządzania dostępem do zasobów platformy Azure. Aby udzielić dostępu, należy przypisać role do użytkowników, grup, jednostek usług lub tożsamości zarządzanych w określonym zakresie. W tym artykule opisano sposób przypisywania ról przy użyciu programu Azure PowerShell.

Uwaga

Do interakcji z platformą Azure zalecamy używanie modułu Azure Az w programie PowerShell. Zobacz Instalowanie programu Azure PowerShell, aby rozpocząć. Aby dowiedzieć się, jak przeprowadzić migrację do modułu Az PowerShell, zobacz Migracja programu Azure PowerShell z modułu AzureRM do modułu Az.

Wymagania wstępne

Aby przypisać role, musisz mieć następujące elementy:

Kroki przypisywania roli platformy Azure

Aby przypisać rolę, składa się z trzech elementów: podmiot zabezpieczeń, definicja roli i zakres.

Krok 1. Określanie, kto potrzebuje dostępu

Rolę można przypisać do użytkownika, grupy, jednostki usługi lub tożsamości zarządzanej. Aby przypisać rolę, może być konieczne określenie unikatowego identyfikatora obiektu. Identyfikator ma format: 11111111-1111-1111-1111-111111111111. Identyfikator można uzyskać przy użyciu witryny Azure Portal lub programu Azure PowerShell.

Użytkownik

W przypadku użytkownika Entra firmy Microsoft pobierz główną nazwę użytkownika, taką jak patlong@contoso.com lub identyfikator obiektu użytkownika. Aby uzyskać identyfikator obiektu, możesz użyć polecenia Get-AzADUser.

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

Grupa

W przypadku grupy Entra firmy Microsoft potrzebny jest identyfikator obiektu grupy. Aby uzyskać identyfikator obiektu, możesz użyć polecenia Get-AzADGroup.

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

Jednostka usługi

W przypadku jednostki usługi Entra firmy Microsoft (tożsamości używanej przez aplikację) potrzebny jest identyfikator obiektu jednostki usługi. Aby uzyskać identyfikator obiektu, możesz użyć polecenia Get-AzADServicePrincipal. W przypadku jednostki usługi użyj identyfikatora obiektu, a nie identyfikatora aplikacji.

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

Tożsamość zarządzana

W przypadku tożsamości zarządzanej przypisanej przez system lub przypisanej przez użytkownika potrzebny jest identyfikator obiektu. Aby uzyskać identyfikator obiektu, możesz użyć polecenia Get-AzADServicePrincipal.

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

Krok 2. Wybieranie odpowiedniej roli

Uprawnienia są grupowane razem w role. Możesz wybrać z listy kilku wbudowanych ról platformy Azure lub użyć własnych ról niestandardowych. Najlepszym rozwiązaniem jest udzielanie dostępu z najniższymi wymaganymi uprawnieniami, dlatego należy unikać przypisywania szerszej roli.

Aby wyświetlić listę ról i uzyskać unikatowy identyfikator roli, możesz użyć polecenia Get-AzRoleDefinition.

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

Poniżej przedstawiono sposób wyświetlania listy szczegółów określonej roli.

Get-AzRoleDefinition -Name <roleName>

Aby uzyskać więcej informacji, zobacz Wyświetlanie listy definicji ról platformy Azure.

Krok 3. Identyfikowanie wymaganego zakresu

Platforma Azure oferuje cztery poziomy zakresu: zasób, grupę zasobów, subskrypcję i grupę zarządzania. Najlepszym rozwiązaniem jest udzielanie dostępu z najniższymi wymaganymi uprawnieniami, dlatego należy unikać przypisywania roli w szerszym zakresie. Aby uzyskać więcej informacji na temat zakresu, zobacz Omówienie zakresu.

Zakres zasobów

W przypadku zakresu zasobów potrzebny jest identyfikator zasobu dla zasobu. Identyfikator zasobu można znaleźć, przeglądając właściwości zasobu w witrynie Azure Portal. Identyfikator zasobu ma następujący format.

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

Zakres grupy zasobów

W przypadku zakresu grupy zasobów potrzebna jest nazwa grupy zasobów. Nazwę można znaleźć na stronie Grupy zasobów w witrynie Azure Portal lub użyć polecenia Get-AzResourceGroup.

Get-AzResourceGroup

Zakres subskrypcji

W przypadku zakresu subskrypcji potrzebny jest identyfikator subskrypcji. Identyfikator można znaleźć na stronie Subskrypcje w witrynie Azure Portal lub użyć polecenia Get-AzSubscription.

Get-AzSubscription

Zakres grupy zarządzania

W przypadku zakresu grupy zarządzania potrzebna jest nazwa grupy zarządzania. Nazwę można znaleźć na stronie Grupy zarządzania w witrynie Azure Portal lub użyć polecenia Get-AzManagementGroup.

Get-AzManagementGroup

Krok 4. Przypisywanie roli

Aby przypisać rolę, użyj polecenia New-AzRoleAssignment . W zależności od zakresu polecenie zwykle ma jeden z następujących formatów.

Zakres zasobów

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>

Zakres grupy zasobów

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

Zakres subskrypcji

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

Zakres grupy zarządzania

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

Przypisywanie przykładów ról

Przypisywanie roli dla wszystkich kontenerów obiektów blob w zakresie zasobów konta magazynu

Przypisuje rolę Współautor danych obiektu blob magazynu do jednostki usługi z identyfikatorem obiektu 555555555-5555-5555-55555-5555555555555555555555 i aplikacją IDENTYFIKATOR 666666666-6666-6666-6666-6666666666666666 dla konta magazynu o nazwie 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

Przypisywanie roli dla określonego zakresu zasobów kontenera obiektów blob

Przypisuje rolę Współautor danych obiektu blob magazynu do jednostki usługi z identyfikatorem obiektu 555555555-5555-5555-55555-5555555555555555555 i identyfikatorem aplikacji 55555566666666-6666-6666-6666-666666666666 w zakresie zasobów dla kontenera obiektów blob o nazwie 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

Przypisywanie roli dla grupy w określonym zakresie zasobów sieci wirtualnej

Przypisuje rolę Współautor maszyny wirtualnej do grupy Pharma Sales Administracja s z identyfikatorem aaaa-a-a-a-aaa w zakresie zasobów dla sieci wirtualnej o nazwie pharma-sales-project-network.

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

Przypisywanie roli użytkownika w zakresie grupy zasobów

Przypisuje użytkownikowi rolę patlong@contoso.com Współautor maszyny wirtualnej w zakresie grupy zasobów pharma-sales.

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

Alternatywnie możesz określić w pełni kwalifikowaną grupę zasobów za pomocą parametru -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

Przypisywanie roli dla użytkownika przy użyciu unikatowego identyfikatora roli w zakresie grupy zasobów

Istnieje kilka razy, gdy nazwa roli może ulec zmianie, na przykład:

  • Używasz własnej roli niestandardowej i decydujesz się zmienić nazwę.
  • Używasz roli w wersji zapoznawczej z nazwą (wersja zapoznawcza). Gdy rola zostanie zwolniona, nazwa roli zostanie zmieniona.

Nawet jeśli nazwa roli zostanie zmieniona, identyfikator roli nie ulegnie zmianie. Jeśli używasz skryptów lub automatyzacji do tworzenia przypisań ról, najlepszym rozwiązaniem jest użycie unikatowego identyfikatora roli zamiast nazwy roli. W związku z tym jeśli nazwa roli zostanie zmieniona, skrypty będą działać częściej.

Poniższy przykład przypisuje użytkownikowi rolę Współautor maszyny wirtualnej w zakresie grupy zasobów pharma-sales.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

Przypisywanie roli dla aplikacji w zakresie grupy zasobów

Przypisuje rolę Współautor maszyny wirtualnej do aplikacji z obiektem jednostki usługi o identyfikatorze 77777777-7777-7777-7777-777777777777 w zakresie grupy zasobów pharma-sales.

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

Przypisywanie roli użytkownika w zakresie subskrypcji

Przypisuje użytkownikowi rolę annm@example.com Czytelnik w zakresie subskrypcji.

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

Przypisywanie roli użytkownika w zakresie grupy zarządzania

Przypisuje użytkownikowi alain@example.com rolę Czytelnik rozliczeń w zakresie grupy zarządzania.

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

Następne kroki