Aangepaste Azure-rollen maken of bijwerken met behulp van Azure PowerShell
Als de ingebouwde rollen van Azure niet voldoen aan de specifieke behoeften van uw organisatie, kunt u uw eigen aangepaste rollen maken. In dit artikel wordt beschreven hoe u aangepaste rollen kunt weergeven, maken, bijwerken of verwijderen met behulp van Azure PowerShell.
Zie Zelfstudie: Een aangepaste Azure-rol maken met behulp van Azure PowerShell voor een stapsgewijze zelfstudie over het maken van een aangepaste rol.
Notitie
Het wordt aanbevolen de Azure Az PowerShell-module te gebruiken om te communiceren met Azure. Zie Azure PowerShell installeren om aan de slag te gaan. Raadpleeg Azure PowerShell migreren van AzureRM naar Az om te leren hoe u naar de Azure PowerShell-module migreert.
Vereisten
Als u aangepaste rollen wilt maken, hebt u het volgende nodig:
- Machtigingen voor het maken van aangepaste rollen, zoals gebruikerstoegang Beheer istrator
- Azure Cloud Shell of Azure PowerShell
Aangepaste rollen opvragen
Gebruik de opdracht Get-AzRoleDefinition om de rollen weer te geven die beschikbaar zijn voor toewijzing in een bereik. In het volgende voorbeeld ziet u alle rollen die beschikbaar zijn voor toewijzing in het geselecteerde abonnement.
Get-AzRoleDefinition | FT Name, IsCustom
Name IsCustom
---- --------
Virtual Machine Operator True
AcrImageSigner False
AcrQuarantineReader False
AcrQuarantineWriter False
API Management Service Contributor False
...
In het volgende voorbeeld ziet u alleen de aangepaste rollen die beschikbaar zijn voor toewijzing in het geselecteerde abonnement.
Get-AzRoleDefinition -Custom | FT Name, IsCustom
Name IsCustom
---- --------
Virtual Machine Operator True
Als het geselecteerde abonnement zich niet in de AssignableScopes
rol bevindt, wordt de aangepaste rol niet weergegeven.
Een aangepaste roldefinitie weergeven
Als u een aangepaste roldefinitie wilt weergeven, gebruikt u Get-AzRoleDefinition. Dit is dezelfde opdracht als u gebruikt voor een ingebouwde rol.
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"
]
}
In het volgende voorbeeld ziet u alleen de acties van de rol:
(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/*"
Een aangepaste rol maken
Gebruik de opdracht New-AzRoleDefinition om een aangepaste rol te maken. Er zijn twee methoden voor het structureren van de rol, met behulp van PSRoleDefinition
een object of een JSON-sjabloon.
Bewerkingen ophalen voor een resourceprovider
Wanneer u aangepaste rollen maakt, is het belangrijk dat u alle mogelijke bewerkingen van de resourceproviders kent. U kunt de lijst met resourceproviderbewerkingen bekijken of u kunt de opdracht Get-AzProviderOperation gebruiken om deze informatie op te halen. Als u bijvoorbeeld alle beschikbare bewerkingen voor virtuele machines wilt controleren, gebruikt u deze opdracht:
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...
...
Een aangepaste rol maken met het PSRoleDefinition-object
Wanneer u PowerShell gebruikt om een aangepaste rol te maken, kunt u een van de ingebouwde rollen als uitgangspunt gebruiken of kunt u helemaal opnieuw beginnen. Het eerste voorbeeld in deze sectie begint met een ingebouwde rol en past deze vervolgens aan met meer machtigingen. Bewerk de kenmerken om de Actions
gewenste , NotActions
of AssignableScopes
gewenste kenmerken toe te voegen en sla de wijzigingen vervolgens op als een nieuwe rol.
Het volgende voorbeeld begint met de ingebouwde rol Inzender voor virtuele machines om een aangepaste rol met de naam Virtuele-machineoperator te maken. De nieuwe rol verleent toegang tot alle leesacties van Microsoft.Compute, Microsoft.Storage en Microsoft.Network-resourceproviders en verleent toegang tot het starten, opnieuw opstarten en bewaken van virtuele machines. De aangepaste rol kan worden gebruikt in twee abonnementen.
$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
In het volgende voorbeeld ziet u een andere manier om de aangepaste rol Virtuele-machineoperator te maken. Het begint met het maken van een nieuw PSRoleDefinition
object. De acties worden opgegeven in de perms
variabele en ingesteld op de Actions
eigenschap. De NotActions
eigenschap wordt ingesteld door de NotActions
ingebouwde rol Inzender voor virtuele machines te lezen. Omdat Inzender voor virtuele machines geen enkele regel heeft NotActions
, is deze regel niet vereist, maar wordt weergegeven hoe informatie kan worden opgehaald uit een andere rol.
$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
Een aangepaste rol maken met JSON-sjabloon
Een JSON-sjabloon kan worden gebruikt als de brondefinitie voor de aangepaste rol. In het volgende voorbeeld wordt een aangepaste rol gemaakt die leestoegang tot opslag- en rekenresources toestaat, toegang tot ondersteuning en die rol toevoegt aan twee abonnementen. Maak een nieuw bestand C:\CustomRoles\customrole1.json
met het volgende voorbeeld. De id moet worden ingesteld null
op het maken van de eerste rol, omdat er automatisch een nieuwe id wordt gegenereerd.
{
"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"
]
}
Voer de volgende PowerShell-opdracht uit om de rol toe te voegen aan de abonnementen:
New-AzRoleDefinition -InputFile "C:\CustomRoles\customrole1.json"
Een aangepaste rol bijwerken
Net als bij het maken van een aangepaste rol kunt u een bestaande aangepaste rol wijzigen met behulp van het PSRoleDefinition
object of een JSON-sjabloon.
Een aangepaste rol bijwerken met het PSRoleDefinition-object
Als u een aangepaste rol wilt wijzigen, gebruikt u eerst de opdracht Get-AzRoleDefinition om de roldefinitie op te halen. Breng ten tweede de gewenste wijzigingen aan in de roldefinitie. Gebruik ten slotte de opdracht Set-AzRoleDefinition om de gewijzigde roldefinitie op te slaan.
In het volgende voorbeeld wordt de Microsoft.Insights/diagnosticSettings/*
actie toegevoegd aan de aangepaste rol Virtuele-machineoperator .
$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}
In het volgende voorbeeld wordt een Azure-abonnement toegevoegd aan de toewijsbare bereiken van de aangepaste rol Virtual Machine Operator .
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}
In het volgende voorbeeld wordt een beheergroep toegevoegd aan AssignableScopes
de aangepaste rol Virtual Machine Operator .
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}
Een aangepaste rol bijwerken met een JSON-sjabloon
Met behulp van de vorige JSON-sjabloon kunt u eenvoudig een bestaande aangepaste rol wijzigen om acties toe te voegen of te verwijderen. Werk de JSON-sjabloon bij en voeg de leesactie voor netwerken toe, zoals wordt weergegeven in het volgende voorbeeld. De definities die in de sjabloon worden vermeld, worden niet cumulatief toegepast op een bestaande definitie, wat betekent dat de rol precies wordt weergegeven zoals u in de sjabloon opgeeft. U moet ook het veld Id bijwerken met de id van de rol. Als u niet zeker weet wat deze waarde is, kunt u de cmdlet Get-AzRoleDefinition gebruiken om deze informatie op te halen.
{
"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"
]
}
Voer de volgende PowerShell-opdracht uit om de bestaande rol bij te werken:
Set-AzRoleDefinition -InputFile "C:\CustomRoles\customrole1.json"
Een aangepaste rol verwijderen
Verwijder roltoewijzingen die gebruikmaken van de aangepaste rol. Zie Roltoewijzingen zoeken om een aangepaste rol te verwijderen voor meer informatie.
Gebruik de opdracht Remove-AzRoleDefinition om de aangepaste rol te verwijderen.
In het volgende voorbeeld wordt de aangepaste rol Operator voor virtuele machines verwijderd.
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