Tworzenie lub aktualizowanie ról niestandardowych platformy Azure przy użyciu interfejsu wiersza polecenia platformy Azure

Jeśli wbudowane role platformy Azure nie spełniają konkretnych potrzeb organizacji, możesz utworzyć własne role niestandardowe. W tym artykule opisano sposób tworzenia, aktualizowania lub usuwania ról niestandardowych przy użyciu interfejsu wiersza polecenia platformy Azure.

Aby zapoznać się z samouczkiem krok po kroku dotyczącym tworzenia roli niestandardowej, zobacz Samouczek: tworzenie roli niestandardowej platformy Azure przy użyciu interfejsu wiersza polecenia platformy Azure.

Wymagania wstępne

Aby utworzyć role niestandardowe, potrzebne są następujące elementy:

Wyświetlanie ról niestandardowych

Aby wyświetlić listę ról niestandardowych dostępnych do przypisania, użyj polecenia az role definition list. W poniższym przykładzie wymieniono wszystkie role niestandardowe w bieżącej subskrypcji.

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

Wyświetlanie listy definicji roli niestandardowej

Aby wyświetlić listę definicji roli niestandardowej, użyj polecenia az role definition list. To polecenie jest tym samym poleceniem, którego można użyć dla wbudowanej roli.

az role definition list --name {roleName}

W poniższym przykładzie wymieniono definicję roli Operator maszyny wirtualnej:

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

W poniższym przykładzie przedstawiono tylko akcje roli Operator maszyny wirtualnej:

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/*"
  ]
]

Tworzenie roli niestandardowej

Aby utworzyć rolę niestandardową, użyj polecenia az role definition create. Definicja roli może być opisem JSON lub ścieżką do pliku zawierającego opis JSON.

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

Poniższy przykład tworzy rolę niestandardową o nazwie Virtual Machine Operator. Ta rola niestandardowa przypisuje dostęp do wszystkich akcji odczytu dostawców zasobów Microsoft.Compute, Microsoft.Storage i Microsoft.Network oraz przypisuje dostęp do uruchamiania, ponownego uruchamiania i monitorowania maszyn wirtualnych. Tej roli niestandardowej można używać w dwóch subskrypcjach. W tym przykładzie użyto pliku JSON jako danych wejściowych.

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

Aktualizacja roli niestandardowej

Aby zaktualizować rolę niestandardową, najpierw użyj polecenia az role definition list , aby pobrać definicję roli. Po drugie wprowadź żądane zmiany w definicji roli. Na koniec użyj polecenia az role definition update , aby zapisać zaktualizowaną definicję roli.

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

Poniższy przykład dodaje microsoft.Szczegółowe informacje /diagnostic Ustawienia/ action do Actions i dodaje grupę zarządzania do AssignableScopes roli niestandardowej Operator maszyny wirtualnej.

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

Usuwanie roli niestandardowej

  1. Usuń wszystkie przypisania ról, które używają roli niestandardowej. Aby uzyskać więcej informacji, zobacz Znajdowanie przypisań ról w celu usunięcia roli niestandardowej.

  2. Użyj polecenia az role definition delete , aby usunąć rolę niestandardową. Aby określić rolę do usunięcia, użyj nazwy roli lub identyfikatora roli. Aby określić identyfikator roli, użyj polecenia az role definition list.

    az role definition delete --name {roleNameOrId}
    

    W poniższym przykładzie usunięto rolę niestandardową Operator maszyny wirtualnej.

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

Następne kroki