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.

Nota

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

Prasyarat

Untuk membuat peran kustom, Anda perlu:

Mencantumkan peran kustom

Untuk mencantumkan peran yang tersedia untuk ditugaskan 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 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 berada dalam AssignableScopes dari peran, peran khusus tidak akan dicantumkan.

Daftar definisi peran khusus

Untuk mencantumkan definisi peran kustom, gunakan Get-AzRoleDefinition. Ini adalah perintah yang sama dengan yang Anda gunakan 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 hanya mencantumkan tindakan 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.

Memperoleh operasi untuk penyedia sumber daya

Saat Anda membuat peran kustom, penting untuk mengetahui semua kemungkinan operasi dari penyedia sumber daya. Anda dapat melihat daftar operasi penyedia sumber daya atau Anda dapat menggunakan perintah Get-AzProviderOperation untuk mendapatkan informasi ini. Misalnya, jika Anda 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 Anda menggunakan PowerShell untuk membuat peran kustom, Anda dapat menggunakan salah satu peran bawaan sebagai titik awal atau Anda dapat 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 Anda inginkan, lalu simpan perubahan sebagai peran baru.

Contoh berikut dimulai dengan peran bawaan Kontributor Komputer Virtual untuk membuat peran kustom bernama Operator Komputer Virtual. Peran baru memberikan akses ke semua tindakan baca Microsoft.Compute, Microsoft.Storage, dan penyedia sumber daya Microsoft.Network dan memberikan akses untuk memulai, memulai ulang, dan memantau komputer virtual. 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 Operator Komputer Virtual peran kustom. Ini 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 Mesin 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 memungkinkan akses baca ke penyimpanan dan sumber daya komputasi, akses ke dukungan, dan menambahkan peran tersebut ke dua langganan. Buat file baru C:\CustomRoles\customrole1.json dengan contoh berikut. Id harus diatur ke null pada pembuatan peran awal karena ID baru dihasilkan 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 ini:

New-AzRoleDefinition -InputFile "C:\CustomRoles\customrole1.json"

Memperbarui 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, pertama, gunakan perintah Get-AzRoleDefinition 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 kustom 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 ruang lingkup yang dapat ditetapkan dari peran khusus Operator Mesin 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 pada peran kustom Operator Mesin 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

Dengan 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 diperlihatkan dalam contoh berikut. Definisi yang tercantum dalam templat tidak diterapkan secara kumulatif ke definisi yang ada, yang berarti bahwa peran muncul persis seperti yang Anda tentukan dalam templat. Anda juga perlu memperbarui bidang Id dengan ID peran. Jika Anda tidak yakin apa 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 ini:

Set-AzRoleDefinition -InputFile "C:\CustomRoles\customrole1.json"

Menghapus sebuah peran kustom

  1. Hapus penetapan peran apa pun yang menggunakan peran kustom. Untuk informasi selengkapnya, lihat Cara menemukan penetapan peran untuk menghapus peran kustom.

  2. Gunakan perintah Remove-AzRoleDefinition untuk menghapus peran kustom.

    Contoh berikut menghapus Operator Komputer Virtual peran kustom.

    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
    

Langkah berikutnya