Role niestandardowe platformy Azure

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

Role niestandardowe mogą być współużytkowane między subskrypcjami, które ufają tej samej dzierżawie firmy Microsoft Entra. Istnieje limit 5000 ról niestandardowych na dzierżawę. (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. Akcje zostaną dodane do Actions właściwości lub NotActions definicji roli. Jeśli masz akcje danych, dodasz je do DataActions właściwości lub NotDataActions .

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

  2. Zdecyduj, jak chcesz utworzyć rolę niestandardową.

    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ć wymagane 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:

  • Przyjrzyj się istniejącym wbudowanym rolam.

    Możesz zmodyfikować istniejącą rolę lub połączyć uprawnienia używane w wielu rolach.

  • Wyświetl listę usług platformy Azure, do których chcesz udzielić dostępu.

  • Określ dostawców zasobów mapujących na usługi platformy Azure.

    Usługi platformy Azure udostępniają swoje funkcje i uprawnienia za pośrednictwem dostawców zasobów. Na przykład dostawca zasobów Microsoft.Compute dostarcza zasoby maszyn wirtualnych, a dostawca zasobów Microsoft.Billing dostarcza zasoby subskrypcji i rozliczeń. Znajomość dostawców zasobów może pomóc w zawężaniu i określaniu uprawnień potrzebnych do roli niestandardowej.

    Podczas tworzenia roli niestandardowej przy użyciu witryny Azure Portal można również określić dostawców zasobów, wyszukując słowa kluczowe. Ta funkcja wyszukiwania została opisana w temacie Tworzenie lub aktualizowanie ról niestandardowych platformy Azure przy użyciu witryny Azure Portal.

    Add permissions pane with resource provider

  • Wyszukaj dostępne uprawnienia, aby znaleźć uprawnienia, które chcesz uwzględnić.

    Podczas tworzenia roli niestandardowej przy użyciu witryny Azure Portal możesz wyszukać uprawnienia według słowa kluczowego. Możesz na przykład wyszukać uprawnienia dotyczące maszyny wirtualnej lub rozliczeń . Możesz również pobrać wszystkie uprawnienia jako plik CSV, a następnie wyszukać ten plik. Ta funkcja wyszukiwania została opisana w temacie Tworzenie lub aktualizowanie ról niestandardowych platformy Azure przy użyciu witryny Azure Portal.

    Add permissions list

Przykład roli niestandardowej

Poniżej pokazano, jak wygląda rola niestandardowa, jak pokazano przy użyciu programu 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ą, co wyświetlana przy użyciu 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 ról niestandardowych

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

Właściwości Wymagania Pisz Opis
Name
roleName
Tak String Nazwa wyświetlana roli niestandardowej. Chociaż definicja roli jest grupą zarządzania lub zasobem na poziomie subskrypcji, definicja roli może być używana w wielu subskrypcjach, które współdzielą tę samą dzierżawę firmy Microsoft Entra. Ta nazwa wyświetlana musi być unikatowa w zakresie dzierżawy firmy Microsoft Entra. Może zawierać litery, cyfry, spacje i znaki specjalne. Maksymalna liczba znaków to 512.
Id
name
Tak String Unikatowy 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
Tak String Wskazuje, czy jest to rola niestandardowa. Ustaw wartość lub trueCustomRole dla ról niestandardowych. Ustaw wartość lub falseBuiltInRole dla ról wbudowanych.
Description
description
Tak String Opis roli niestandardowej. Może zawierać litery, cyfry, spacje i znaki specjalne. Maksymalna liczba znaków to 2048.
Actions
actions
Tak Ciąg[] Tablica ciągów, która określa akcje płaszczyzny sterowania, które umożliwia wykonywanie roli. Aby uzyskać więcej informacji, zobacz Akcje.
NotActions
notActions
Nie. Ciąg[] Tablica ciągów, która określa akcje płaszczyzny sterowania, które są wykluczone z dozwolonego Actionselementu . Aby uzyskać więcej informacji, zobacz NotActions .
DataActions
dataActions
Nie. Ciąg[] Tablica ciągów, która określa akcje płaszczyzny danych, które rola umożliwia wykonywanie danych w tym obiekcie. Jeśli tworzysz rolę niestandardową za pomocą DataActionspolecenia , ta rola nie może być przypisana w zakresie grupy zarządzania. Aby uzyskać więcej informacji, zobacz DataActions.
NotDataActions
notDataActions
Nie. Ciąg[] Tablica ciągów, która określa akcje płaszczyzny danych, które są wykluczone z dozwolonego DataActionselementu . Aby uzyskać więcej informacji, zobacz NotDataActions.
AssignableScopes
assignableScopes
Tak Ciąg[] Tablica ciągów, która określa zakresy, które 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 wieloznaczny (*) rozszerza uprawnienie do wszystkich elementów pasujących do podanego ciągu akcji. Załóżmy na przykład, że chcesz dodać wszystkie uprawnienia związane z usługą Azure 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/*

Uwaga

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 może być niepożądanym zachowaniem przy użyciu symbolu wieloznakowego.

Kto może utworzyć, usunąć, zaktualizować lub wyświetlić rolę niestandardową

Podobnie jak role wbudowane, właściwość określa zakresy, AssignableScopes które 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ą.

Zadanie Czynność opis
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 dostęp użytkowników Administracja istratory 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 dostęp użytkowników Administracja istratory grup zarządzania, subskrypcji i grup zasobów.
Wyświetlanie roli niestandardowej 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 umożliwiają udostępnianie ról niestandardowych do przypisania.

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 przypisań ról przed usunięciem roli niestandardowej:

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 obsługiwana przez firmę 21Vianet może mieć do 2000 ról niestandardowych dla każdej dzierżawy.
  • Nie można ustawić AssignableScopes zakresu głównego ("/").
  • Nie można używać symboli wieloznacznych (*) w pliku AssignableScopes. Ograniczenie stosowania symboli wieloznacznych pomaga zapobiec uzyskaniu dostępu do zakresu przez użytkownika w wyniku aktualizacji definicji roli.
  • Ciąg akcji może zawierać tylko jeden symbol wieloznaczny.
  • We właściwości AssignableScopes roli niestandardowej można zdefiniować tylko jedną grupę zarządzania.
  • Usługa Azure Resource Manager nie weryfikuje istnienia grupy zarządzania w definicji AssignableScopesroli .
  • Ról niestandardowych z elementem DataActions nie można przypisywać do zakresu 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 musisz utworzyć jedną rolę niestandardową z DataActions tą rolą, która musi być przypisana w wielu subskrypcjach, zamiast tworzyć oddzielną rolę niestandardową 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": []
}

Interfejs wiersza polecenia platformy Azure

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

Następne kroki