Udostępnij przez


Role niestandardowe platformy Azure

Jeśli wbudowane role platformy Azure nie spełniają specyficznych potrzeb Twojej organizacji, możesz tworzyć własne role niestandardowe. Podobnie jak w przypadku ról wbudowanych, można przypisywać role niestandardowe do użytkowników, grup i jednostek usługi w zakresach grup zarządzania, subskrypcji i grup zasobów.

Role niestandardowe mogą być współużytkowane między subskrypcjami, które ufają temu samemu dzierżawcy platformy Microsoft Entra. Istnieje limit 5000 ról niestandardowych na najemcę. (W przypadku platformy Microsoft Azure obsługiwanej przez firmę 21Vianet limit wynosi 2000 ról niestandardowych). Role niestandardowe można tworzyć przy użyciu witryny Azure Portal, programu Azure PowerShell, interfejsu wiersza polecenia platformy Azure lub interfejsu API REST.

Kroki tworzenia roli niestandardowej

Poniżej przedstawiono podstawowe kroki tworzenia roli niestandardowej.

  1. Określ potrzebne uprawnienia.

    Podczas tworzenia roli niestandardowej musisz znać akcje, które są dostępne do zdefiniowania uprawnień. Zazwyczaj zaczynasz od istniejącej wbudowanej roli, a następnie zmodyfikuj ją zgodnie z potrzebami. Dodasz akcje do właściwości Actions lub NotActions w definicji roli. Jeśli masz akcje danych, dodasz je do właściwości DataActions lub NotDataActions.

    Aby uzyskać więcej informacji, zobacz następną sekcję Jak określić potrzebne uprawnienia.

  2. Zdecyduj, w jaki sposób chcesz utworzyć niestandardową rolę.

    Role niestandardowe można tworzyć przy użyciu witryny Azure Portal, programu Azure PowerShell, interfejsu wiersza polecenia platformy Azure lub interfejsu API REST.

  3. Utwórz rolę niestandardową.

    Najprostszym sposobem jest użycie witryny Azure Portal. Aby uzyskać instrukcje dotyczące tworzenia roli niestandardowej przy użyciu witryny Azure Portal, zobacz Tworzenie lub aktualizowanie ról niestandardowych platformy Azure przy użyciu witryny Azure Portal.

  4. Przetestuj rolę niestandardową.

    Po utworzeniu roli niestandardowej należy ją przetestować, aby sprawdzić, czy działa zgodnie z oczekiwaniami. Jeśli musisz później wprowadzić korekty, możesz zaktualizować rolę niestandardową.

Jak określić potrzebne uprawnienia

Platforma Azure ma tysiące uprawnień, które potencjalnie można uwzględnić w roli niestandardowej. Poniżej przedstawiono niektóre metody, które mogą pomóc w określeniu uprawnień, które chcesz dodać do roli niestandardowej:

Przykład roli niestandardowej

Poniższy przykład pokazuje, jak rola niestandardowa jest wyświetlana w programie Azure PowerShell w formacie JSON. Ta rola niestandardowa może służyć do monitorowania i ponownego uruchamiania maszyn wirtualnych.

{
  "Name": "Virtual Machine Operator",
  "Id": "88888888-8888-8888-8888-888888888888",
  "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": [],
  "DataActions": [],
  "NotDataActions": [],
  "AssignableScopes": [
    "/subscriptions/{subscriptionId1}",
    "/subscriptions/{subscriptionId2}",
    "/providers/Microsoft.Management/managementGroups/{groupId1}"
  ]
}

Poniżej przedstawiono tę samą rolę niestandardową, jak wyświetlana za pomocą interfejsu wiersza polecenia platformy Azure.

[
  {
    "assignableScopes": [
      "/subscriptions/{subscriptionId1}",
      "/subscriptions/{subscriptionId2}",
      "/providers/Microsoft.Management/managementGroups/{groupId1}"
    ],
    "description": "Can monitor and restart virtual machines.",
    "id": "/subscriptions/{subscriptionId1}/providers/Microsoft.Authorization/roleDefinitions/88888888-8888-8888-8888-888888888888",
    "name": "88888888-8888-8888-8888-888888888888",
    "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łaściwości roli niestandardowej

W poniższej tabeli opisano, co oznaczają właściwości roli niestandardowej.

Property Required Typ Description
Name
roleName
Yes String Nazwa wyświetlana roli niestandardowej. Chociaż definicja roli jest grupą zarządzania lub zasobem na poziomie subskrypcji, może być używana w wielu subskrypcjach, które współdzielą tę samą dzierżawę Microsoft Entra. Ta nazwa wyświetlana musi być unikatowa w obrębie dzierżawcy Microsoft Entra. Może zawierać litery, cyfry, spacje i znaki specjalne. Zalecana wartość maksymalna: 256 znaków.
Id
name
Yes String Unikalny identyfikator roli niestandardowej. W przypadku programu Azure PowerShell i interfejsu wiersza polecenia platformy Azure ten identyfikator jest generowany automatycznie podczas tworzenia nowej roli.
IsCustom
roleType
Yes String Wskazuje, czy jest to rola niestandardowa. Ustaw na true lub CustomRole dla ról niestandardowych. Ustaw na false lub BuiltInRole dla ról wbudowanych.
Description
description
Yes String Opis roli niestandardowej. Może zawierać litery, cyfry, spacje i znaki specjalne. Zalecana wartość maksymalna: 512 znaków.
Actions
actions
Yes String[] Tablica ciągów, która określa akcje płaszczyzny sterowania, które rola umożliwia wykonywać. Aby uzyskać więcej informacji, zobacz Akcje.
NotActions
notActions
No String[] Tablica ciągów, która określa akcje płaszczyzny sterowania, które są wyłączone z dozwolonej konfiguracji Actions. Aby uzyskać więcej informacji, zobacz NotActions .
DataActions
dataActions
No String[] Tablica ciągów, która określa akcje dotyczące płaszczyzny danych, jakie rola umożliwia wykonywać na danych wewnątrz danego obiektu. Jeśli tworzysz rolę niestandardową za pomocą DataActions polecenia, ta rola nie może być przypisana w zakresie grupy zarządzania. Aby uzyskać więcej informacji, zobacz DataActions.
NotDataActions
notDataActions
No String[] Tablica ciągów znakowych określająca akcje płaszczyzny danych, które są wykluczone z dozwolonego elementu DataActions. Aby uzyskać więcej informacji, zobacz NotDataActions.
AssignableScopes
assignableScopes
Yes String[] Tablica ciągów, która określa zakresy, dla których rola niestandardowa jest dostępna do przypisania. Maksymalna liczba AssignableScopes to 2000. Aby uzyskać więcej informacji, zobacz AssignableScopes.

Ciągi uprawnień są bez uwzględniania wielkości liter. Podczas tworzenia ról niestandardowych konwencja jest zgodna z przypadkiem widocznym dla uprawnień w operacjach dostawcy zasobów platformy Azure.

Uprawnienia z użyciem symboli wieloznacznych

Actions, , NotActionsDataActionsi NotDataActions obsługują symbole wieloznaczne (*) w celu zdefiniowania uprawnień. Symbol wieloznaczności (*) rozszerza uprawnienia na wszystkie elementy zgodne z określonym przez Ciebie ciągiem akcji. Załóżmy na przykład, że chcesz dodać wszystkie uprawnienia związane z usługą Microsoft Cost Management i eksportami. Możesz dodać wszystkie te ciągi akcji:

Microsoft.CostManagement/exports/action
Microsoft.CostManagement/exports/read
Microsoft.CostManagement/exports/write
Microsoft.CostManagement/exports/delete
Microsoft.CostManagement/exports/run/action

Zamiast dodawać wszystkie te ciągi, wystarczy dodać ciąg wieloznaczny. Na przykład następujący ciąg wieloznaczny jest odpowiednikiem poprzednich pięciu ciągów. Obejmuje to również wszelkie przyszłe uprawnienia eksportu, które mogą zostać dodane.

Microsoft.CostManagement/exports/*

Note

Zaleca się określenie Actions i DataActions jawnie zamiast używania symbolu wieloznakowego (*). Dodatkowy dostęp i uprawnienia przyznane w przyszłości Actions lub DataActions mogą być niepożądanym zachowaniem przy użyciu symbolu wieloznacznego.

Kto może tworzyć, usuwać, aktualizować lub wyświetlać rolę niestandardową

Podobnie jak role wbudowane, właściwość AssignableScopes określa zakresy, w których rola jest dostępna do przypisania. Właściwość AssignableScopes roli niestandardowej kontroluje również, kto może tworzyć, usuwać, aktualizować lub wyświetlać rolę niestandardową.

Task Action Description
Tworzenie/usuwanie roli niestandardowej Microsoft.Authorization/ roleDefinitions/write Użytkownicy, którym przyznano tę akcję dla wszystkich AssignableScopes ról niestandardowych, mogą tworzyć (lub usuwać) role niestandardowe do użycia w tych zakresach. Na przykład właściciele i administratorzy dostępu użytkowników grup zarządzania, subskrypcji i grup zasobów.
Aktualizacja roli niestandardowej Microsoft.Authorization/ roleDefinitions/write Użytkownicy, którym przyznano tę akcję dla wszystkich AssignableScopes ról niestandardowych, mogą aktualizować role niestandardowe w tych zakresach. Na przykład właściciele i administratorzy dostępu użytkowników grup zarządzania, subskrypcji i grup zasobów.
Wyświetl rolę niestandardową Microsoft.Authorization/ roleDefinitions/read Użytkownicy, którym przyznano tę akcję w zakresie, mogą wyświetlać role niestandardowe, które są dostępne do przypisania w tym zakresie. Wszystkie role wbudowane pozwalają na przypisywanie ról niestandardowych.

Note

Nawet jeśli nazwa roli zostanie zmieniona, identyfikator roli nie ulegnie zmianie. Jeśli używasz skryptów lub automatyzacji do tworzenia przypisań ról, najlepszym rozwiązaniem jest użycie unikatowego identyfikatora roli zamiast nazwy roli. W związku z tym, jeśli nazwa roli zostanie zmieniona, istnieje większe prawdopodobieństwo, że skrypty będą działać poprawnie.

Znajdowanie przypisań ról w celu usunięcia roli niestandardowej

Przed usunięciem roli niestandardowej należy usunąć wszystkie przypisania ról używające roli niestandardowej. Jeśli spróbujesz usunąć rolę niestandardową z przypisaniami ról, zostanie wyświetlony komunikat: There are existing role assignments referencing role (code: RoleDefinitionHasAssignments).

Poniżej przedstawiono kroki ułatwiające znalezienie przydzielonych ról, zanim usuniesz rolę niestandardową:

Aby uzyskać informacje na temat znajdowania nieużywanych ról niestandardowych, zobacz Objaw — nie można utworzyć więcej definicji ról.

Limity ról niestandardowych

Na poniższej liście opisano limity ról niestandardowych.

  • Każda dzierżawa może mieć maksymalnie 5000 ról niestandardowych.
  • Platforma Microsoft Azure, zarządzana przez 21Vianet, może mieć do 2000 ról niestandardowych dla każdego dzierżawcy.
  • Nie można ustawić AssignableScopes na zakres główny ("/").
  • Nie można używać symboli wieloznacznych (*) w pliku AssignableScopes. To ograniczenie symboli wieloznacznych pomaga zagwarantować, że użytkownik nie może potencjalnie uzyskać dostępu do zakresu, aktualizując definicję roli.
  • W łańcuchu akcji można mieć tylko jeden symbol wieloznaczny.
  • W niestandardowej roli można zdefiniować tylko jedną grupę zarządzania AssignableScopes.
  • Usługa Azure Resource Manager nie weryfikuje istnienia grupy zarządzania w definicji AssignableScopesroli .
  • Ról niestandardowych z DataActions nie można przypisać w zakresie grupy zarządzania.
  • Rolę niestandardową można utworzyć za pomocą polecenia DataActions i jedną grupę zarządzania w programie AssignableScopes. Nie można przypisać roli niestandardowej w samym zakresie grupy zarządzania; można jednak przypisać rolę niestandardową w zakresie subskrypcji w grupie zarządzania. Może to być przydatne, jeśli potrzebujesz utworzyć jedną spersonalizowaną rolę z DataActions, która musi być przypisana w wielu subskrypcjach, zamiast tworzyć osobne role niestandardowe dla każdej subskrypcji.

Aby uzyskać więcej informacji na temat ról niestandardowych i grup zarządzania, zobacz Co to są grupy zarządzania platformy Azure?.

Formaty danych wejściowych i wyjściowych

Aby utworzyć rolę niestandardową przy użyciu wiersza polecenia, zazwyczaj używasz formatu JSON do określania właściwości, które mają być używane dla roli niestandardowej. W zależności od używanych narzędzi formaty danych wejściowych i wyjściowych będą wyglądać nieco inaczej. W tej sekcji wymieniono formaty danych wejściowych i wyjściowych w zależności od narzędzia.

Azure PowerShell

Aby utworzyć rolę niestandardową przy użyciu programu Azure PowerShell, należy podać następujące dane wejściowe.

{
  "Name": "",
  "Description": "",
  "Actions": [],
  "NotActions": [],
  "DataActions": [],
  "NotDataActions": [],
  "AssignableScopes": []
}

Aby zaktualizować rolę niestandardową przy użyciu programu Azure PowerShell, należy podać następujące dane wejściowe. Należy pamiętać, że Id właściwość została dodana.

{
  "Name": "",
  "Id": "",
  "Description": "",
  "Actions": [],
  "NotActions": [],
  "DataActions": [],
  "NotDataActions": [],
  "AssignableScopes": []
}

Poniżej przedstawiono przykład danych wyjściowych wyświetlanych podczas wyświetlania listy roli niestandardowej przy użyciu programu Azure PowerShell i polecenia ConvertTo-Json .

{
  "Name": "",
  "Id": "",
  "IsCustom": true,
  "Description": "",
  "Actions": [],
  "NotActions": [],
  "DataActions": [],
  "NotDataActions": [],
  "AssignableScopes": []
}

Azure CLI

Aby utworzyć lub zaktualizować rolę niestandardową przy użyciu interfejsu wiersza polecenia platformy Azure, musisz podać następujące dane wejściowe. Ten format jest taki sam, gdy tworzysz rolę niestandardową przy użyciu programu Azure PowerShell.

{
  "Name": "",
  "Description": "",
  "Actions": [],
  "NotActions": [],
  "DataActions": [],
  "NotDataActions": [],
  "AssignableScopes": []
}

Poniżej przedstawiono przykład danych wyjściowych wyświetlanych podczas wyświetlania listy roli niestandardowej przy użyciu interfejsu wiersza polecenia platformy Azure.

[
  {
    "assignableScopes": [],
    "description": "",
    "id": "",
    "name": "",
    "permissions": [
      {
        "actions": [],
        "dataActions": [],
        "notActions": [],
        "notDataActions": []
      }
    ],
    "roleName": "",
    "roleType": "CustomRole",
    "type": "Microsoft.Authorization/roleDefinitions"
  }
]

interfejs API REST

Aby utworzyć lub zaktualizować rolę niestandardową przy użyciu interfejsu API REST, należy podać następujące dane wejściowe. Ten format jest tym samym formatem, który jest generowany podczas tworzenia roli niestandardowej przy użyciu witryny Azure Portal.

{
  "properties": {
    "roleName": "",
    "description": "",
    "assignableScopes": [],
    "permissions": [
      {
        "actions": [],
        "notActions": [],
        "dataActions": [],
        "notDataActions": []
      }
    ]
  }
}

Poniżej przedstawiono przykład danych wyjściowych podczas wyświetlania listy roli niestandardowej przy użyciu interfejsu API REST.

{
    "properties": {
        "roleName": "",
        "type": "CustomRole",
        "description": "",
        "assignableScopes": [],
        "permissions": [
            {
                "actions": [],
                "notActions": [],
                "dataActions": [],
                "notDataActions": []
            }
        ],
        "createdOn": "",
        "updatedOn": "",
        "createdBy": "",
        "updatedBy": ""
    },
    "id": "",
    "type": "Microsoft.Authorization/roleDefinitions",
    "name": ""
}

Dalsze kroki