Aangepaste Azure-rollen maken of bijwerken met behulp van een ARM-sjabloon
Als de ingebouwde Azure-rollen niet voldoen aan de specifieke behoeften van uw organisatie, kunt u uw eigen aangepaste rollen maken. In dit artikel wordt beschreven hoe u een aangepaste rol maakt of bijwerkt met behulp van een ARM-sjabloon (Azure Resource Manager).
Een Azure Resource Manager-sjabloon is een JSON-bestand (JavaScript Object Notation) dat de infrastructuur en configuratie voor uw project definieert. Voor de sjabloon is declaratieve syntaxis vereist. U beschrijft de beoogde implementatie zonder de reeks programmeeropdrachten te schrijven om de implementatie te maken.
Als u een aangepaste rol wilt maken, geeft u een rolnaam, machtigingen en waar de rol kan worden gebruikt. In dit artikel maakt u een rol met de naam Aangepaste rol - RG Reader met resourcemachtigingen die kunnen worden toegewezen aan een abonnementsbereik of lager.
Als uw omgeving voldoet aan de vereisten en u benkend bent met het gebruik van ARM-sjablonen, selecteert u de knop Implementeren naar Azure. De sjabloon wordt in Azure Portal geopend.
Vereisten
Als u een aangepaste rol wilt maken, moet u het volgende hebben:
- Machtigingen voor het maken van aangepaste rollen, zoals Administrator voor gebruikerstoegang.
U moet de volgende versie gebruiken:
2018-07-01
of hoger
Zie API-versies van Azure RBAC REST API's voor meer informatie.
De sjabloon controleren
De sjabloon die in dit artikel wordt gebruikt, is afkomstig van Azure-quickstartsjablonen. De sjabloon heeft vier parameters en een sectie resources. De vier parameters zijn:
- Matrix van acties met een standaardwaarde van
["Microsoft.Resources/subscriptions/resourceGroups/read"]
. - Matrix van
notActions
met een lege standaardwaarde. - Rolnaam met een standaardwaarde van
Custom Role - RG Reader
. - Rolbeschrijving met een standaardwaarde van
Subscription Level Deployment of a Role Definition
.
Het bereik waaraan deze aangepaste rol kan worden toegewezen, is ingesteld op het huidige abonnement.
{
"$schema": "https://schema.management.azure.com/schemas/2018-05-01/subscriptionDeploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"metadata": {
"_generator": {
"name": "bicep",
"version": "0.25.53.49325",
"templateHash": "16704138909949665309"
}
},
"parameters": {
"actions": {
"type": "array",
"defaultValue": [
"Microsoft.Resources/subscriptions/resourceGroups/read"
],
"metadata": {
"description": "Array of actions for the roleDefinition"
}
},
"notActions": {
"type": "array",
"defaultValue": [],
"metadata": {
"description": "Array of notActions for the roleDefinition"
}
},
"roleName": {
"type": "string",
"defaultValue": "Custom Role - RG Reader",
"metadata": {
"description": "Friendly name of the role definition"
}
},
"roleDescription": {
"type": "string",
"defaultValue": "Subscription Level Deployment of a Role Definition",
"metadata": {
"description": "Detailed description of the role definition"
}
}
},
"variables": {
"roleDefName": "[guid(parameters('roleName'))]"
},
"resources": [
{
"type": "Microsoft.Authorization/roleDefinitions",
"apiVersion": "2022-04-01",
"name": "[variables('roleDefName')]",
"properties": {
"roleName": "[parameters('roleName')]",
"description": "[parameters('roleDescription')]",
"type": "customRole",
"permissions": [
{
"actions": "[parameters('actions')]",
"notActions": "[parameters('notActions')]"
}
],
"assignableScopes": [
"[subscription().id]"
]
}
}
]
}
De resource die is gedefinieerd in de sjabloon:
De sjabloon implementeren
Volg deze stappen om de vorige sjabloon te implementeren.
Meld u aan bij het Azure-portaal.
Open Azure Cloud Shell voor PowerShell.
Kopieer en plak het volgende script in Cloud Shell.
$location = Read-Host -Prompt "Enter a location (i.e. centralus)" [string[]]$actions = Read-Host -Prompt "Enter actions as a comma-separated list (i.e. action1,action2)" $actions = $actions.Split(',') $templateUri = "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/subscription-deployments/create-role-def/azuredeploy.json" New-AzDeployment -Location $location -TemplateUri $templateUri -actions $actions
Voer een locatie in voor de implementatie, zoals
centralus
.Voer een lijst met acties voor de aangepaste rol in als een door komma's gescheiden lijst, zoals
Microsoft.Resources/resources/read,Microsoft.Resources/subscriptions/resourceGroups/read
.Druk zo nodig op Enter om de
New-AzDeployment
opdracht uit te voeren.Met de opdracht New-AzDeployment wordt de sjabloon geïmplementeerd om de aangepaste rol te maken.
De uitvoer ziet er als volgt uit:
PS> New-AzDeployment -Location $location -TemplateUri $templateUri -actions $actions Id : /subscriptions/{subscriptionId}/providers/Microsoft.Resources/deployments/azuredeploy DeploymentName : azuredeploy Location : centralus ProvisioningState : Succeeded Timestamp : 6/25/2020 8:08:32 PM Mode : Incremental TemplateLink : Uri : https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/subscription-deployments/create-role-def/azuredeploy.json ContentVersion : 1.0.0.0 Parameters : Name Type Value ================= ========================= ========== actions Array [ "Microsoft.Resources/resources/read", "Microsoft.Resources/subscriptions/resourceGroups/read" ] notActions Array [] roleName String Custom Role - RG Reader roleDescription String Subscription Level Deployment of a Role Definition Outputs : DeploymentDebugLogLevel :
Geïmplementeerde resources bekijken
Volg deze stappen om te controleren of de aangepaste rol is gemaakt.
Voer de opdracht Get-AzRoleDefinition uit om de aangepaste rol weer te geven.
Get-AzRoleDefinition "Custom Role - RG Reader" | ConvertTo-Json
De uitvoer ziet er als volgt uit:
{ "Name": "Custom Role - RG Reader", "Id": "11111111-1111-1111-1111-111111111111", "IsCustom": true, "Description": "Subscription Level Deployment of a Role Definition", "Actions": [ "Microsoft.Resources/resources/read", "Microsoft.Resources/subscriptions/resourceGroups/read" ], "NotActions": [], "DataActions": [], "NotDataActions": [], "AssignableScopes": [ "/subscriptions/{subscriptionId}" ] }
Open uw abonnement in Azure Portal.
Selecteer toegangsbeheer (IAM) in het linkermenu.
Selecteer het tabblad Rollen.
Stel de lijst Type in op CustomRole.
Controleer of de rol Aangepaste rol - RG Reader wordt vermeld.
Een aangepaste rol bijwerken
Net als bij het maken van een aangepaste rol kunt u een bestaande aangepaste rol bijwerken met behulp van een sjabloon. Als u een aangepaste rol wilt bijwerken, moet u de rol opgeven die u wilt bijwerken.
Dit zijn de wijzigingen die u moet aanbrengen in de vorige quickstart-sjabloon om de aangepaste rol bij te werken.
Neem de rol-id op als parameter.
... "roleDefName": { "type": "string", "metadata": { "description": "ID of the role definition" } ...
Neem de parameter rol-id op in de roldefinitie.
... "resources": [ { "type": "Microsoft.Authorization/roleDefinitions", "apiVersion": "2022-04-01", "name": "[parameters('roleDefName')]", "properties": { ...
Hier volgt een voorbeeld van het implementeren van de sjabloon.
$location = Read-Host -Prompt "Enter a location (i.e. centralus)"
[string[]]$actions = Read-Host -Prompt "Enter actions as a comma-separated list (i.e. action1,action2)"
$actions = $actions.Split(',')
$roleDefName = Read-Host -Prompt "Enter the role ID to update"
$templateFile = "rg-reader-update.json"
New-AzDeployment -Location $location -TemplateFile $templateFile -actions $actions -roleDefName $roleDefName
Resources opschonen
Volg deze stappen om de aangepaste rol te verwijderen.
Voer de volgende opdracht uit om de aangepaste rol te verwijderen.
Get-AzRoleDefinition -Name "Custom Role - RG Reader" | Remove-AzRoleDefinition
Voer Y in om te bevestigen dat u de aangepaste rol wilt verwijderen.