Menetapkan peran Azure menggunakan Azure PowerShell

Kontrol akses berbasis peran Azure (Azure RBAC) adalah sistem otorisasi yang Anda gunakan untuk mengelola akses ke sumber daya Azure. Untuk memberikan akses, Anda menetapkan peran kepada pengguna, grup, perwakilan layanan, atau identitas terkelola pada cakupan tertentu. Artikel ini menjelaskan cara menetapkan peran menggunakan Azure PowerShell.

Catatan

Sebaiknya Anda menggunakan modul Azure Az PowerShell untuk berinteraksi dengan Azure. Lihat Menginstal Azure PowerShell untuk memulai. Untuk mempelajari cara bermigrasi ke modul Az PowerShell, lihat Memigrasikan Azure PowerShell dari AzureRM ke Az.

Prasyarat

Untuk menetapkan peran, Anda harus memiliki:

Langkah-langkah untuk menetapkan peran Microsoft Azure

Untuk menetapan peran yang terdiri atas tiga elemen: prinsip keamanan, penentuan peran, dan cakupan.

Langkah 1: Menentukan siapa yang membutuhkan akses

Anda dapat menetapkan peran ke pengguna, grup, perwakilan layanan, atau identitas terkelola. Untuk menetapkan peran, Anda mungkin perlu menentukan ID unik objek. ID memiliki format: 11111111-1111-1111-1111-111111111111. Anda bisa mendapatkan ID menggunakan portal Azure, Azure PowerShell.

Pengguna

Untuk pengguna Microsoft Entra, dapatkan nama utama pengguna, seperti patlong@contoso.com atau ID objek pengguna. Untuk mendapatkan ID objek, Anda dapat menggunakan Get-AzADUser.

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

Grup

Untuk grup Microsoft Entra, Anda memerlukan ID objek grup. Untuk mendapatkan ID objek, Anda dapat menggunakan Get-AzADGroup.

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

Prinsipal layanan

Untuk perwakilan layanan Microsoft Entra (identitas yang digunakan oleh aplikasi), Anda memerlukan ID objek perwakilan layanan. Untuk mendapatkan ID objek, Anda dapat menggunakan Get-AzADServicePrincipal. Untuk perwakilan layanan, gunakan ID objek dan bukan ID aplikasi.

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

Identitas terkelola

Untuk identitas terkelola yang ditetapkan sistem atau yang ditetapkan pengguna, Anda memerlukan ID objek. Untuk mendapatkan ID objek, Anda dapat menggunakan Get-AzADServicePrincipal.

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

Langkah 2: Pilih peran yang sesuai

Izin dikelompokkan bersama menjadi peran. Anda dapat memilih dari daftar beberapa peran bawaan Azure atau menggunakan peran kustom Anda sendiri. Ini adalah praktik terbaik untuk memberikan akses dengan hak istimewa paling sedikit yang diperlukan, jadi hindari menetapkan peran yang lebih luas.

Untuk mencantumkan peran dan mendapatkan ID peran unik, Anda dapat menggunakan Get-AzRoleDefinition.

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

Berikut ini adalah cara mencantumkan detail peran tertentu.

Get-AzRoleDefinition -Name <roleName>

Untuk informasi selengkapnya, lihat Membuat daftar definisi peran Azure.

Langkah 3: Mengidentifikasi cakupan yang diperlukan

Azure menyediakan empat tingkat cakupan: sumber daya, grup sumber daya, langganan, dan grup manajemen. Ini adalah praktik terbaik untuk memberikan akses dengan hak istimewa paling sedikit yang diperlukan untuk menghindari penetapan peran yang lebih luas. Untuk informasi selengkapnya tentang cakupan, lihat Memahami cakupan.

Cakupan sumber daya

Untuk cakupan sumber daya, Anda memerlukan ID sumber daya untuk sumber daya tersebut. Anda dapat menemukan ID sumber daya dengan melihat properti sumber daya di portal Microsoft Azure. ID sumber daya memiliki format berikut.

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

Cakupan grup sumber daya

Untuk cakupan grup sumber daya, Anda memerlukan nama grup sumber daya. Anda dapat menemukan nama di halaman Grup sumber daya di portal Azure atau menggunakan Get-AzResourceGroup.

Get-AzResourceGroup

Cakupan langganan

Untuk cakupan langganan, Anda memerlukan ID langganan. Anda dapat menemukan ID pada halaman Langganan portal Azure atau menggunakan Get-AzSubscription.

Get-AzSubscription

Cakupan grup manajemen

Untuk cakupan grup manajemen, Anda memerlukan nama grup manajemen. Anda dapat menemukan nama di halaman Grup manajemen di portal Azure atau menggunakan Get-AzManagementGroup.

Get-AzManagementGroup

Langkah 4: Tetapkan peran

Untuk menetapkan peran, gunakan perintah New-AzRoleAssignment. Bergantung pada cakupannya, perintah biasanya memiliki salah satu format berikut.

Cakupan sumber daya

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>

Cakupan grup sumber daya

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

Cakupan langganan

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

Cakupan grup manajemen

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

Menetapkan contoh peran

Menetapkan peran untuk semua kontainer blob dalam cakupan sumber daya akun penyimpanan

Menetapkan peran Kontributor Data Blob Penyimpanan ke perwakilan layanan dengan ID objek 555555555-5555-5555-5555-55555555555555 ID Aplikasi 66666666-6666-6666-6666-6666666666666 pada cakupan sumber daya untuk akun penyimpanan bernama 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

Menetapkan peran untuk cakupan sumber daya kontainer blob tertentu

Menetapkan peran Kontributor Data Blob Penyimpanan ke perwakilan layanan dengan ID objek 55555555-5555-5555-5555-5555555555555 dan ID Aplikasi 66666666-6666-6666-6666-66666666666 pada cakupan sumber daya untuk kontainer blob bernama 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

Menetapkan peran untuk grup dalam cakupan sumber daya jaringan virtual tertentu

Menetapkan peran Kontributor Mesin Virtual ke grup Admin Penjualan Farmasi dengan ID aaaaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaa pada cakupan sumber daya untuk jaringan virtual bernama 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

Memberikan akses untuk pengguna di cakupan grup sumber daya

Menetapkan peran Kontributor Komputer Virtual untuk patlong@contoso.com pengguna di cakupan grup sumber daya penjualan farmasi.

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

Secara bergantian, Anda dapat menentukan grup sumber daya yang sepenuhnya memenuhi syarat dengan parameter -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

Menetapkan peran untuk pengguna menggunakan ID peran unik di cakupan grup sumber daya

Nama peran dapat berubah beberapa kali, misalnya:

  • Anda menggunakan peran kustom Anda sendiri dan Anda memutuskan untuk mengubah namanya.
  • Anda menggunakan peran pratinjau yang memiliki (Pratinjau) dalam namanya. Ketika peran dirilis, nama peran diganti.

Meskipun peran diganti namanya, ID peran tidak berubah. Jika Anda menggunakan skrip atau otomasi untuk membuat tugas peran, ini adalah praktik terbaik untuk menggunakan ID peran unik, alih-alih nama peran. Oleh karena itu, jika peran diganti namanya, skrip Anda kemungkinan akan berfungsi.

Contoh berikut menetapkan peran Kontributor Komputer Virtual kepada patlong@contoso.com pengguna di cakupan grup sumber daya penjualan farmasi.

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

Menetapkan peran untuk aplikasi di cakupan grup sumber daya

Menetapkan peran Kontributor Mesin Virtual ke aplikasi dengan ID objek perwakilan layanan 77777777-7777-7777-7777-777777777777 di cakupan grup sumber daya 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

Menetapkan peran untuk pengguna di cakupan langganan

Menetapkan peran Pembaca kepada annm@example.com pengguna di cakupan langganan.

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

Menetapkan peran untuk pengguna di cakupan grup manajemen

Menetapkan peran Pembaca Penagihan kepada alain@example.com pengguna di cakupan grup manajemen.

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

Langkah berikutnya