Share via


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.

Button to deploy the Resource Manager template to Azure.

Vereisten

Als u een aangepaste rol wilt maken, moet u het volgende hebben:

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.

  1. Meld u aan bij het Azure-portaal.

  2. Open Azure Cloud Shell voor PowerShell.

  3. 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
    
  4. Voer een locatie in voor de implementatie, zoals centralus.

  5. 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.

  6. 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.

  1. 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}"
      ]
    }
    
  2. Open uw abonnement in Azure Portal.

  3. Selecteer toegangsbeheer (IAM) in het linkermenu.

  4. Selecteer het tabblad Rollen .

  5. Stel de lijst Type in op CustomRole.

  6. Controleer of de rol Aangepaste rol - RG Reader wordt vermeld.

    New custom role in Azure portal

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.

  1. Voer de volgende opdracht uit om de aangepaste rol te verwijderen.

    Get-AzRoleDefinition -Name "Custom Role - RG Reader" | Remove-AzRoleDefinition
    
  2. Voer Y in om te bevestigen dat u de aangepaste rol wilt verwijderen.

Volgende stappen