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

Knop voor het implementeren van de Resource Manager-sjabloon in Azure.

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.

  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.

    Nieuwe aangepaste rol 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