Membuat atau memperbarui peran kustom Azure menggunakan Azure PowerShell
Jika peran bawaan Microsoft Azure tidak memenuhi kebutuhan spesifik organisasi, Anda dapat membuat peran kustom sendiri. Artikel ini menjelaskan cara mencantumkan, membuat, memperbarui, atau menghapus peran kustom menggunakan Azure PowerShell.
Untuk tutorial langkah demi langkah tentang cara membuat peran kustom, lihat Tutorial: Membuat peran kustom Azure 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 membuat peran kustom, Anda perlu:
- Izin untuk membuat peran kustom, seperti Administrator Akses Pengguna
- Azure Cloud Shell atau Azure PowerShell
Mencantumkan peran kustom
Untuk mencantumkan peran yang tersedia untuk penugasan pada cakupan, gunakan perintah Get-AzRoleDefinition. Contoh berikut mencantumkan semua peran yang tersedia untuk penugasan dalam langganan yang dipilih.
Get-AzRoleDefinition | FT Name, IsCustom
Name IsCustom
---- --------
Virtual Machine Operator True
AcrImageSigner False
AcrQuarantineReader False
AcrQuarantineWriter False
API Management Service Contributor False
...
Contoh berikut ini hanya mencantumkan peran kustom yang tersedia untuk penugasan dalam langganan yang dipilih.
Get-AzRoleDefinition -Custom | FT Name, IsCustom
Name IsCustom
---- --------
Virtual Machine Operator True
Jika langganan yang dipilih tidak berperan di AssignableScopes
, peran kustom tidak akan dicantumkan.
Mencantumkan definisi peran kustom
Untuk mencantumkan definisi peran kustom, gunakan Get-AzRoleDefinition. Ini adalah perintah yang sama seperti yang digunakan untuk peran bawaan.
Get-AzRoleDefinition <role_name> | ConvertTo-Json
PS C:\> Get-AzRoleDefinition "Virtual Machine Operator" | ConvertTo-Json
{
"Name": "Virtual Machine Operator",
"Id": "00000000-0000-0000-0000-000000000000",
"IsCustom": true,
"Description": "Can monitor and restart virtual machines.",
"Actions": [
"Microsoft.Storage/*/read",
"Microsoft.Network/*/read",
"Microsoft.Compute/*/read",
"Microsoft.Compute/virtualMachines/start/action",
"Microsoft.Compute/virtualMachines/restart/action",
"Microsoft.Authorization/*/read",
"Microsoft.ResourceHealth/availabilityStatuses/read",
"Microsoft.Resources/subscriptions/resourceGroups/read",
"Microsoft.Insights/alertRules/*",
"Microsoft.Support/*"
],
"NotActions": [],
"DataActions": [],
"NotDataActions": [],
"AssignableScopes": [
"/subscriptions/11111111-1111-1111-1111-111111111111"
]
}
Contoh berikut mencantumkan, hanya tindakan dari peran:
(Get-AzRoleDefinition <role_name>).Actions
PS C:\> (Get-AzRoleDefinition "Virtual Machine Operator").Actions
"Microsoft.Storage/*/read",
"Microsoft.Network/*/read",
"Microsoft.Compute/*/read",
"Microsoft.Compute/virtualMachines/start/action",
"Microsoft.Compute/virtualMachines/restart/action",
"Microsoft.Authorization/*/read",
"Microsoft.ResourceHealth/availabilityStatuses/read",
"Microsoft.Resources/subscriptions/resourceGroups/read",
"Microsoft.Insights/alertRules/*",
"Microsoft.Insights/diagnosticSettings/*",
"Microsoft.Support/*"
Membuat peran kustom
Untuk membuat peran kustom, gunakan perintah New-AzRoleDefinition. Ada dua metode penataan peran, menggunakan objek PSRoleDefinition
atau templat JSON.
Mendapatkan operasi untuk penyedia sumber
Ketika membuat peran kustom, penting untuk mengetahui semua operasi yang mungkin dari penyedia sumber. Anda dapat melihat daftar operasi penyedia sumber atau menggunakan perintah Get-AzProviderOperation untuk mendapatkan informasi ini. Misalnya, jika ingin memeriksa semua operasi yang tersedia untuk komputer virtual, gunakan perintah ini:
Get-AzProviderOperation <operation> | FT OperationName, Operation, Description -AutoSize
PS C:\> Get-AzProviderOperation "Microsoft.Compute/virtualMachines/*" | FT OperationName, Operation, Description -AutoSize
OperationName Operation Description
------------- --------- -----------
Get Virtual Machine Microsoft.Compute/virtualMachines/read Get the propertie...
Create or Update Virtual Machine Microsoft.Compute/virtualMachines/write Creates a new vir...
Delete Virtual Machine Microsoft.Compute/virtualMachines/delete Deletes the virtu...
Start Virtual Machine Microsoft.Compute/virtualMachines/start/action Starts the virtua...
...
Membuat peran kustom dengan objek PSRoleDefinition
Saat menggunakan PowerShell untuk membuat peran kustom, Anda dapat menggunakan salah satu peran bawaan sebagai titik awal, atau memulai dari awal. Contoh pertama di bagian ini dimulai dengan peran bawaan lalu menyesuaikannya dengan lebih banyak izin. Edit atribut untuk menambahkan Actions
, NotActions
atau AssignableScopes
yang diinginkan, lalu simpan perubahan sebagai peran baru.
Contoh berikut dimulai dengan peran bawaan Kontributor Komputer Virtual untuk membuat peran kustom bernama Operator Virtual Mesin. Peran baru ini memberikan akses ke semua operasi penyedia sumber Microsoft.Compute, Microsoft.Storage, dan Microsoft.Network, serta memberikan akses ke mesin virtual untuk memulai, menghidupkan ulang, dan memantau. Peran kustom dapat digunakan dalam dua langganan.
$role = Get-AzRoleDefinition "Virtual Machine Contributor"
$role.Id = $null
$role.Name = "Virtual Machine Operator"
$role.Description = "Can monitor and restart virtual machines."
$role.Actions.Clear()
$role.Actions.Add("Microsoft.Storage/*/read")
$role.Actions.Add("Microsoft.Network/*/read")
$role.Actions.Add("Microsoft.Compute/*/read")
$role.Actions.Add("Microsoft.Compute/virtualMachines/start/action")
$role.Actions.Add("Microsoft.Compute/virtualMachines/restart/action")
$role.Actions.Add("Microsoft.Authorization/*/read")
$role.Actions.Add("Microsoft.ResourceHealth/availabilityStatuses/read")
$role.Actions.Add("Microsoft.Resources/subscriptions/resourceGroups/read")
$role.Actions.Add("Microsoft.Insights/alertRules/*")
$role.Actions.Add("Microsoft.Support/*")
$role.AssignableScopes.Clear()
$role.AssignableScopes.Add("/subscriptions/00000000-0000-0000-0000-000000000000")
$role.AssignableScopes.Add("/subscriptions/11111111-1111-1111-1111-111111111111")
New-AzRoleDefinition -Role $role
Contoh berikut menunjukkan cara lain untuk membuat peran kustom Operator Komputer Virtual. Dimulai dengan membuat objek PSRoleDefinition
baru. Tindakan ditentukan dalam variabel perms
dan diatur ke properti Actions
. Properti NotActions
diatur dengan membaca NotActions
dari peran bawaan Kontributor Komputer Virtual. Karena Kontributor Komputer Virtual tidak memiliki NotActions
, baris ini tidak diperlukan, tetapi menunjukkan bagaimana informasi dapat diambil dari peran lain.
$role = [Microsoft.Azure.Commands.Resources.Models.Authorization.PSRoleDefinition]::new()
$role.Name = 'Virtual Machine Operator 2'
$role.Description = 'Can monitor and restart virtual machines.'
$role.IsCustom = $true
$perms = 'Microsoft.Storage/*/read','Microsoft.Network/*/read','Microsoft.Compute/*/read'
$perms += 'Microsoft.Compute/virtualMachines/start/action','Microsoft.Compute/virtualMachines/restart/action'
$perms += 'Microsoft.Authorization/*/read'
$perms += 'Microsoft.ResourceHealth/availabilityStatuses/read'
$perms += 'Microsoft.Resources/subscriptions/resourceGroups/read'
$perms += 'Microsoft.Insights/alertRules/*','Microsoft.Support/*'
$role.Actions = $perms
$role.NotActions = (Get-AzRoleDefinition -Name 'Virtual Machine Contributor').NotActions
$subs = '/subscriptions/00000000-0000-0000-0000-000000000000','/subscriptions/11111111-1111-1111-1111-111111111111'
$role.AssignableScopes = $subs
New-AzRoleDefinition -Role $role
Membuat peran kustom dengan templat JSON
Templat JSON dapat digunakan sebagai definisi sumber untuk peran kustom. Contoh berikut membuat peran kustom yang mengizinkan akses baca ke penyimpanan dan sumber daya komputasi, akses dukungan, dan menambahkan peran tersebut ke dua langganan. Buat file baru C:\CustomRoles\customrole1.json
dengan contoh berikut. Id harus diatur ke null
dalam pembuatan peran awal sebagai ID baru dibuat secara otomatis.
{
"Name": "Custom Role 1",
"Id": null,
"IsCustom": true,
"Description": "Allows for read access to Azure storage and compute resources and access to support",
"Actions": [
"Microsoft.Compute/*/read",
"Microsoft.Storage/*/read",
"Microsoft.Support/*"
],
"NotActions": [],
"AssignableScopes": [
"/subscriptions/00000000-0000-0000-0000-000000000000",
"/subscriptions/11111111-1111-1111-1111-111111111111"
]
}
Untuk menambahkan peran ke langganan, jalankan perintah PowerShell berikut:
New-AzRoleDefinition -InputFile "C:\CustomRoles\customrole1.json"
Perbarui peran kustom
Mirip dengan membuat peran kustom, Anda dapat memodifikasi peran kustom yang ada menggunakan objek PSRoleDefinition
atau templat JSON.
Memperbarui peran kustom dengan objek PSRoleDefinition
Untuk memodifikasi peran kustom, gunakan perintah Get-AzRoleDefinition terlebih dahulu untuk mengambil definisi peran. Kedua, buat perubahan yang diinginkan pada definisi peran. Terakhir, gunakan perintah Set-AzRoleDefinition untuk menyimpan definisi peran yang dimodifikasi.
Contoh berikut menambahkan tindakan Microsoft.Insights/diagnosticSettings/*
ke peran khusus Operator Mesin Virtual.
$role = Get-AzRoleDefinition "Virtual Machine Operator"
$role.Actions.Add("Microsoft.Insights/diagnosticSettings/*")
Set-AzRoleDefinition -Role $role
PS C:\> $role = Get-AzRoleDefinition "Virtual Machine Operator"
PS C:\> $role.Actions.Add("Microsoft.Insights/diagnosticSettings/*")
PS C:\> Set-AzRoleDefinition -Role $role
Name : Virtual Machine Operator
Id : 88888888-8888-8888-8888-888888888888
IsCustom : True
Description : Can monitor and restart virtual machines.
Actions : {Microsoft.Storage/*/read, Microsoft.Network/*/read, Microsoft.Compute/*/read,
Microsoft.Compute/virtualMachines/start/action...}
NotActions : {}
AssignableScopes : {/subscriptions/00000000-0000-0000-0000-000000000000,
/subscriptions/11111111-1111-1111-1111-111111111111}
Contoh berikut menambahkan langganan Azure ke cakupan yang dapat ditetapkan dari peran kustom Operator Komputer Virtual.
Get-AzSubscription -SubscriptionName Production3
$role = Get-AzRoleDefinition "Virtual Machine Operator"
$role.AssignableScopes.Add("/subscriptions/22222222-2222-2222-2222-222222222222")
Set-AzRoleDefinition -Role $role
PS C:\> Get-AzSubscription -SubscriptionName Production3
Name : Production3
Id : 22222222-2222-2222-2222-222222222222
TenantId : 99999999-9999-9999-9999-999999999999
State : Enabled
PS C:\> $role = Get-AzRoleDefinition "Virtual Machine Operator"
PS C:\> $role.AssignableScopes.Add("/subscriptions/22222222-2222-2222-2222-222222222222")
PS C:\> Set-AzRoleDefinition -Role $role
Name : Virtual Machine Operator
Id : 88888888-8888-8888-8888-888888888888
IsCustom : True
Description : Can monitor and restart virtual machines.
Actions : {Microsoft.Storage/*/read, Microsoft.Network/*/read, Microsoft.Compute/*/read,
Microsoft.Compute/virtualMachines/start/action...}
NotActions : {}
AssignableScopes : {/subscriptions/00000000-0000-0000-0000-000000000000,
/subscriptions/11111111-1111-1111-1111-111111111111,
/subscriptions/22222222-2222-2222-2222-222222222222}
Contoh berikut menambahkan grup manajemen ke AssignableScopes
dari peran kustom Operator Komputer Virtual.
Get-AzManagementGroup
$role = Get-AzRoleDefinition "Virtual Machine Operator"
$role.AssignableScopes.Add("/providers/Microsoft.Management/managementGroups/{groupId1}")
Set-AzRoleDefinition -Role $role
PS C:\> Get-AzManagementGroup
Id : /providers/Microsoft.Management/managementGroups/marketing-group
Type : /providers/Microsoft.Management/managementGroups
Name : marketing-group
TenantId : 99999999-9999-9999-9999-999999999999
DisplayName : Marketing group
PS C:\> $role = Get-AzRoleDefinition "Virtual Machine Operator"
PS C:\> $role.AssignableScopes.Add("/providers/Microsoft.Management/managementGroups/marketing-group")
PS C:\> Set-AzRoleDefinition -Role $role
Name : Virtual Machine Operator
Id : 88888888-8888-8888-8888-888888888888
IsCustom : True
Description : Can monitor and restart virtual machines.
Actions : {Microsoft.Storage/*/read, Microsoft.Network/*/read, Microsoft.Compute/*/read,
Microsoft.Compute/virtualMachines/start/action...}
NotActions : {}
AssignableScopes : {/subscriptions/00000000-0000-0000-0000-000000000000,
/subscriptions/11111111-1111-1111-1111-111111111111,
/subscriptions/22222222-2222-2222-2222-222222222222,
/providers/Microsoft.Management/managementGroups/marketing-group}
Memperbarui peran kustom dengan templat JSON
Menggunakan templat JSON sebelumnya, Anda dapat dengan mudah memodifikasi peran kustom yang ada untuk menambahkan atau menghapus Tindakan. Perbarui templat JSON dan tambahkan tindakan baca untuk jaringan seperti yang ditunjukkan dalam contoh berikut. Definisi yang tercantum dalam templat tidak diterapkan secara kumulatif ke definisi yang ada, yang berarti bahwa peran yang muncul persis seperti yang ditentukan dalam templat. Anda juga perlu memperbarui bidang Id dengan ID dari peran. Jika tidak yakin dengan nilai ini, Anda dapat menggunakan cmdlet Get-AzRoleDefinition untuk mendapatkan informasi ini.
{
"Name": "Custom Role 1",
"Id": "acce7ded-2559-449d-bcd5-e9604e50bad1",
"IsCustom": true,
"Description": "Allows for read access to Azure storage and compute resources and access to support",
"Actions": [
"Microsoft.Compute/*/read",
"Microsoft.Storage/*/read",
"Microsoft.Network/*/read",
"Microsoft.Support/*"
],
"NotActions": [],
"AssignableScopes": [
"/subscriptions/00000000-0000-0000-0000-000000000000",
"/subscriptions/11111111-1111-1111-1111-111111111111"
]
}
Untuk memperbarui peran yang sudah ada, jalankan perintah PowerShell berikut:
Set-AzRoleDefinition -InputFile "C:\CustomRoles\customrole1.json"
Menghapus peran kustom
Hapus penetapan peran apa pun yang menggunakan peran kustom. Untuk informasi selengkapnya, lihat Menemukan penetapan peran untuk menghapus peran kustom.
Gunakan perintah Remove-AzRoleDefinition untuk menghapus peran kustom.
Contoh berikut menghapus peran kustom Operator Komputer Virtual.
Get-AzRoleDefinition "Virtual Machine Operator" Get-AzRoleDefinition "Virtual Machine Operator" | Remove-AzRoleDefinition
PS C:\> Get-AzRoleDefinition "Virtual Machine Operator" Name : Virtual Machine Operator Id : 88888888-8888-8888-8888-888888888888 IsCustom : True Description : Can monitor and restart virtual machines. Actions : {Microsoft.Storage/*/read, Microsoft.Network/*/read, Microsoft.Compute/*/read, Microsoft.Compute/virtualMachines/start/action...} NotActions : {} AssignableScopes : {/subscriptions/00000000-0000-0000-0000-000000000000, /subscriptions/11111111-1111-1111-1111-111111111111} PS C:\> Get-AzRoleDefinition "Virtual Machine Operator" | Remove-AzRoleDefinition Confirm Are you sure you want to remove role definition with name 'Virtual Machine Operator'. [Y] Yes [N] No [S] Suspend [?] Help (default is "Y"): Y