Share via


Egyéni Azure-szerepkörök létrehozása vagy frissítése ARM-sablon használatával

Ha az Azure beépített szerepkörei nem felelnek meg a szervezet adott igényeinek, létrehozhat saját egyéni szerepköröket. Ez a cikk bemutatja, hogyan hozhat létre vagy frissíthet egyéni szerepköröket egy Azure Resource Manager-sablon (ARM-sablon) használatával.

Az Azure Resource Manager-sablon egy JavaScript Object Notation (JSON) fájl, amely meghatározza a projekt infrastruktúráját és konfigurációját. A sablon deklaratív szintaxist használ. Az üzembe helyezés létrehozásához szükséges programozási parancsok sorozatának megírása nélkül írhatja le a tervezett üzembe helyezést.

Egyéni szerepkör létrehozásához meg kell adnia egy szerepkörnevet, engedélyeket és a szerepkör használható helyét. Ebben a cikkben létrehoz egy Egyéni szerepkör – RG-olvasó nevű szerepkört, amely erőforrás-engedélyekkel rendelkezik, amelyek előfizetési hatókörben vagy annál alacsonyabban rendelhetők hozzá.

Ha a környezet megfelel az előfeltételeknek, és már ismeri az ARM-sablonokat, kattintson az Üzembe helyezés az Azure-ban gombra. A sablon az Azure Portalon fog megnyílni.

Button to deploy the Resource Manager template to Azure.

Előfeltételek

Egyéni szerepkör létrehozásához a következővel kell rendelkeznie:

A következő verziót kell használnia:

  • 2018-07-01 vagy újabb

További információkért tekintse meg az Azure RBAC REST API-k API-verzióit.

A sablon áttekintése

A cikkben használt sablon az Azure rövid útmutatósablonjaiból származik. A sablon négy paraméterrel és egy erőforrásszakaszsal rendelkezik. A négy paraméter a következő:

  • Műveletek tömbje az alapértelmezett értékkel ["Microsoft.Resources/subscriptions/resourceGroups/read"].
  • notActions Üres alapértelmezett értékkel rendelkező tömb.
  • Szerepkör neve alapértelmezett értékével Custom Role - RG Reader: .
  • Szerepkör leírása alapértelmezett értékével Subscription Level Deployment of a Role Definition.

Az egyéni szerepkör hozzárendelhető hatóköre az aktuális előfizetésre van állítva.

{
  "$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]"
        ]
      }
    }
  ]
}

A sablonban definiált erőforrás a következő:

A sablon üzembe helyezése

Az előző sablon üzembe helyezéséhez kövesse az alábbi lépéseket.

  1. Jelentkezzen be az Azure Portalra.

  2. Nyissa meg a PowerShellhez készült Azure Cloud Shellt.

  3. Másolja és illessze be a következő szkriptet a Cloud Shellbe.

    $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. Adja meg az üzembe helyezés helyét, például centralus.

  5. Adja meg az egyéni szerepkör műveleteinek listáját vesszővel tagolt listaként, például Microsoft.Resources/resources/read,Microsoft.Resources/subscriptions/resourceGroups/read.

  6. Ha szükséges, nyomja le az Enter billentyűt a New-AzDeployment parancs futtatásához.

    A New-AzDeployment parancs üzembe helyezi a sablont az egyéni szerepkör létrehozásához.

    A következőhöz hasonló kimenetnek kell megjelennie:

    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 :
    

Üzembe helyezett erőforrások áttekintése

Kövesse az alábbi lépéseket az egyéni szerepkör létrehozásának ellenőrzéséhez.

  1. Futtassa a Get-AzRoleDefinition parancsot az egyéni szerepkör listázásához.

    Get-AzRoleDefinition "Custom Role - RG Reader" | ConvertTo-Json
    

    A következőhöz hasonló kimenetnek kell megjelennie:

    {
      "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. Nyissa meg az előfizetést az Azure Portalon.

  3. A bal oldali menüben válassza a Hozzáférés-vezérlés (IAM) lehetőséget.

  4. Válassza a Szerepkörök lapot.

  5. A Típuslista beállítása CustomRole értékre.

  6. Ellenőrizze, hogy az Egyéni szerepkör – RG-olvasó szerepkör szerepel-e a listában.

    New custom role in Azure portal

Egyéni szerepkörök frissítése

Az egyéni szerepkörök létrehozásához hasonlóan egy meglévő egyéni szerepkört is frissíthet sablon használatával. Egyéni szerepkör frissítéséhez meg kell adnia a frissíteni kívánt szerepkört.

Az alábbi módosításokat kell elvégeznie az előző rövid útmutatósablonon az egyéni szerepkör frissítéséhez.

  • Adja meg paraméterként a szerepkör-azonosítót.

        ...
        "roleDefName": {
          "type": "string",
          "metadata": {
            "description": "ID of the role definition"
          }
        ...
    
  • Adja meg a szerepkör-azonosító paramétert a szerepkör-definícióban.

      ...
      "resources": [
        {
          "type": "Microsoft.Authorization/roleDefinitions",
          "apiVersion": "2022-04-01",
          "name": "[parameters('roleDefName')]",
          "properties": {
            ...
    

Íme egy példa a sablon üzembe helyezésére.

$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

Az erőforrások eltávolítása

Az egyéni szerepkör eltávolításához kövesse az alábbi lépéseket.

  1. Futtassa a következő parancsot az egyéni szerepkör eltávolításához.

    Get-AzRoleDefinition -Name "Custom Role - RG Reader" | Remove-AzRoleDefinition
    
  2. Írja be az Y értéket az egyéni szerepkör eltávolításának megerősítéséhez.

Következő lépések