Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Pokud integrované role Azure nesplňují konkrétní požadavky vaší organizace, můžete si vytvořit vlastní role. Tento článek popisuje, jak vypsat, vytvořit, aktualizovat nebo odstranit vlastní role pomocí Azure PowerShellu.
Podrobný kurz vytvoření vlastní role najdete v tématu Kurz: Vytvoření vlastní role Azure pomocíAzure PowerShellu.
Poznámka:
K interakci s Azure doporučujeme použít modul Azure Az PowerShell. Začněte tím, že si projdete téma Instalace Azure PowerShellu. Informace o tom, jak migrovat na modul Az PowerShell, najdete v tématu Migrace Azure PowerShellu z AzureRM na Az.
Požadavky
K vytváření vlastních rolí potřebujete:
- Oprávnění k vytváření vlastních rolí, jako je Správce přístupu uživatelů
- Azure Cloud Shell nebo Azure PowerShell
Výpis vlastních rolí
Pokud chcete zobrazit seznam rolí dostupných pro přiřazení v oboru, použijte příkaz Get-AzRoleDefinition. Následující příklad uvádí všechny role, které jsou k dispozici pro přiřazení ve vybraném předplatném.
Get-AzRoleDefinition | FT Name, IsCustom
Name IsCustom
---- --------
Virtual Machine Operator True
AcrImageSigner False
AcrQuarantineReader False
AcrQuarantineWriter False
API Management Service Contributor False
...
Následující příklad uvádí pouze vlastní role, které jsou k dispozici pro přiřazení ve vybraném předplatném.
Get-AzRoleDefinition -Custom | FT Name, IsCustom
Name IsCustom
---- --------
Virtual Machine Operator True
Pokud vybrané předplatné není u role AssignableScopes, vlastní role se nezobrazí.
Výpis definice vlastní role
Pokud chcete vypsat vlastní definici role, použijte Get-AzRoleDefinition. Jedná se o stejný příkaz jako u předdefinované role.
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"
]
}
Následující příklad uvádí pouze akce role:
(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/*"
Vytvoření vlastní role
K vytvoření vlastní role použijte příkaz New-AzRoleDefinition. Existují dvě metody strukturování role pomocí PSRoleDefinition objektu nebo šablony JSON.
Získejte operace pro poskytovatele prostředků
Při vytváření vlastních rolí je důležité znát všechny možné operace od poskytovatelů prostředků. Můžete zobrazit seznam operací poskytovatele prostředků nebo můžete k získání těchto informací použít příkaz Get-AzProviderOperation. Pokud například chcete zkontrolovat všechny dostupné operace pro virtuální počítače, použijte tento příkaz:
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...
...
Vytvoření vlastní role s objektem PSRoleDefinition
Když k vytvoření vlastní role použijete PowerShell, můžete použít některou z předdefinovaných rolí jako výchozí bod nebo můžete začít úplně od začátku. První příklad v této části začíná vestavěnou rolí a pak ji přizpůsobí s více oprávněními. Upravte atributy a přidejte Actions, NotActionsnebo AssignableScopes, které chcete, a uložte změny jako novou roli.
Následující příklad začíná přispěvatelem virtuálních počítačů předdefinované role pro vytvoření vlastní role s názvem Operátor virtuálního počítače. Nová role uděluje přístup ke všem čtecím akcím poskytovatelů prostředků Microsoft.Compute, Microsoft.Storagea Microsoft.Network a také umožňuje spuštění, restartování a monitorování virtuálních počítačů. Vlastní roli je možné použít v rámci dvou předplatných.
$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
Následující příklad ukazuje jiný způsob, jak vytvořit vlastní roli operátora virtuálního počítače . Začíná vytvořením nového objektu PSRoleDefinition. Akce jsou zadány v proměnné perms a jsou nastaveny na Actions vlastnost. Vlastnost NotActions je nastavena přečtením NotActions z předdefinované role Přispěvatel virtuálního počítače . Vzhledem k tomu, že Přispěvatel virtuálních počítačů nemá žádné NotActions, tento řádek není povinný, ale ukazuje, jak lze informace získat z jiné role.
$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
Vytvoření vlastní role pomocí šablony JSON
Šablonu JSON lze použít jako zdrojovou definici pro vlastní roli. Následující příklad vytvoří vlastní roli, která umožňuje přístup pro čtení k úložišti a výpočetním prostředkům, přístup k podpoře a přidá danou roli do dvou předplatných. Vytvořte nový soubor C:\CustomRoles\customrole1.json pomocí následujícího příkladu. Id by se mělo nastavit na null při počátečním vytvoření role, protože se automaticky vygeneruje nové ID.
{
"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"
]
}
Pokud chcete přidat roli do předplatných, spusťte následující příkaz PowerShellu:
New-AzRoleDefinition -InputFile "C:\CustomRoles\customrole1.json"
Aktualizace vlastní role
Podobně jako při vytváření vlastní role můžete existující vlastní roli upravit pomocí objektu PSRoleDefinition nebo šablony JSON.
Aktualizace vlastní role pomocí objektu PSRoleDefinition
Pokud chcete upravit vlastní roli, nejprve pomocí příkazu Get-AzRoleDefinition načtěte definici role. Za druhé proveďte požadované změny definice role. Nakonec pomocí příkazu Set-AzRoleDefinition uložte upravenou definici role.
Následující příklad přidá akci Microsoft.Insights/diagnosticSettings/* do vlastní role pro operátora virtuálního stroje.
$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}
Následující příklad přidá předplatné Azure do přiřaditelných oborů vlastní role operátor virtuálního počítače .
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}
Následující příklad přidá skupinu pro správu do vlastní role operátora virtuálního počítače u AssignableScopes.
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}
Aktualizace vlastní role pomocí šablony JSON
Pomocí předchozí šablony JSON můžete snadno upravit existující vlastní roli a přidat nebo odebrat akce. Aktualizujte šablonu JSON a přidejte akci čtení pro sítě, jak je znázorněno v následujícím příkladu. Definice uvedené v šabloně nejsou kumulativně aplikovány na existující definici, což znamená, že role se objeví přesně tak, jak zadáte v šabloně. Musíte také aktualizovat pole ID s ID role. Pokud si nejste jistí, jaká je tato hodnota, můžete k získání těchto informací použít příkaz Get-AzRoleDefinition.
{
"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"
]
}
Pokud chcete aktualizovat existující roli, spusťte následující příkaz PowerShellu:
Set-AzRoleDefinition -InputFile "C:\CustomRoles\customrole1.json"
Odstraňte vlastní roli
Odeberte všechna přiřazení rolí, která používají vlastní roli. Další informace naleznete v části Vyhledání přiřazení rolí pro odstranění vlastní role.
Pomocí příkazu Remove-AzRoleDefinition odstraňte vlastní roli.
Následující příklad odstraní vlastní roli operátora virtuálního počítače .
Get-AzRoleDefinition "Virtual Machine Operator" Get-AzRoleDefinition "Virtual Machine Operator" | Remove-AzRoleDefinitionPS 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