Skapa eller uppdatera anpassade Azure-roller med Hjälp av Azure CLI

Om de inbyggda Azure-rollerna inte uppfyller organisationens specifika behov kan du skapa egna anpassade roller. I den här artikeln beskrivs hur du listar, skapar, uppdaterar eller tar bort anpassade roller med hjälp av Azure CLI.

En stegvis självstudie om hur du skapar en anpassad roll finns i Självstudie: Skapa en anpassad Azure-roll med Hjälp av Azure CLI.

Förutsättningar

Om du vill skapa anpassade roller behöver du:

Lista anpassade roller

Om du vill visa en lista över anpassade roller som är tillgängliga för tilldelning använder du az role definition list. I följande exempel visas alla anpassade roller i den aktuella prenumerationen.

az role definition list --custom-role-only true --output json --query '[].{roleName:roleName, roleType:roleType}'
[
  {
    "roleName": "My Management Contributor",
    "type": "CustomRole"
  },
  {
    "roleName": "My Service Reader Role",
    "type": "CustomRole"
  },
  {
    "roleName": "Virtual Machine Operator",
    "type": "CustomRole"
  }
]

Visa en lista över en anpassad rolldefinition

Om du vill visa en lista över en anpassad rolldefinition använder du az role definition list. Det här kommandot är samma kommando som du skulle använda för en inbyggd roll.

az role definition list --name {roleName}

I följande exempel visas rolldefinitionen För virtuell datoroperatör :

az role definition list --name "Virtual Machine Operator"
[
  {
    "assignableScopes": [
      "/subscriptions/{subscriptionId}"
    ],
    "description": "Can monitor and restart virtual machines.",
    "id": "/subscriptions/{subscriptionId}/providers/Microsoft.Authorization/roleDefinitions/00000000-0000-0000-0000-000000000000",
    "name": "00000000-0000-0000-0000-000000000000",
    "permissions": [
      {
        "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/*"
        ],
        "dataActions": [],
        "notActions": [],
        "notDataActions": []
      }
    ],
    "roleName": "Virtual Machine Operator",
    "roleType": "CustomRole",
    "type": "Microsoft.Authorization/roleDefinitions"
  }
]

I följande exempel visas bara åtgärderna för rollen Virtuell datoroperator :

az role definition list --name "Virtual Machine Operator" --output json --query '[].permissions[0].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/*"
  ]
]

Skapa en anpassad roll

Om du vill skapa en anpassad roll använder du az role definition create. Rolldefinitionen kan vara en JSON-beskrivning eller en sökväg till en fil som innehåller en JSON-beskrivning.

az role definition create --role-definition {roleDefinition}

I följande exempel skapas en anpassad roll med namnet Virtual Machine Operator. Den här anpassade rollen tilldelar åtkomst till alla läsåtgärder för Microsoft.Compute-, Microsoft.Storage- och Microsoft.Network-resursproviders och tilldelar åtkomst för att starta, starta om och övervaka virtuella datorer. Den här anpassade rollen kan användas i två prenumerationer. I det här exemplet används en JSON-fil som indata.

vmoperator.json

{
  "Name": "Virtual Machine Operator",
  "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": [

  ],
  "AssignableScopes": [
    "/subscriptions/{subscriptionId1}",
    "/subscriptions/{subscriptionId2}"
  ]
}
az role definition create --role-definition ~/roles/vmoperator.json

Uppdatera en anpassad roll

Om du vill uppdatera en anpassad roll använder du först az role definition list för att hämta rolldefinitionen. För det andra gör du önskade ändringar i rolldefinitionen. Använd slutligen az role definition update för att spara den uppdaterade rolldefinitionen.

az role definition update --role-definition {roleDefinition}

I följande exempel läggs åtgärden Microsoft.Insights/diagnostic Inställningar/ till och en hanteringsgrupp läggs till ActionsAssignableScopes för den anpassade rollen Virtual Machine Operator.

vmoperator.json

{
  "Name": "Virtual Machine Operator",
  "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.Insights/diagnosticSettings/*",
    "Microsoft.Support/*"
  ],
  "NotActions": [

  ],
  "AssignableScopes": [
    "/subscriptions/{subscriptionId1}",
    "/subscriptions/{subscriptionId2}",
    "/providers/Microsoft.Management/managementGroups/marketing-group"
  ]
}
az role definition update --role-definition ~/roles/vmoperator.json

Ta bort en anpassad roll

  1. Ta bort alla rolltilldelningar som använder den anpassade rollen. Mer information finns i Hitta rolltilldelningar för att ta bort en anpassad roll.

  2. Använd az role definition delete för att ta bort den anpassade rollen. Om du vill ange vilken roll som ska tas bort använder du rollnamnet eller roll-ID:t. Använd az role definition list för att fastställa roll-ID :t.

    az role definition delete --name {roleNameOrId}
    

    I följande exempel tas den anpassade rollen Virtual Machine Operator bort.

    az role definition delete --name "Virtual Machine Operator"
    

Nästa steg