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.
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 lubNotActions
definicji roli. Jeśli masz akcje danych, dodasz je doDataActions
właściwości lubNotDataActions
.Aby uzyskać więcej informacji, zobacz następną sekcję Jak określić potrzebne uprawnienia.
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.
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.
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.
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.
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 | Type | 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 true CustomRole dla ról niestandardowych. Ustaw wartość lub false BuiltInRole 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 Actions elementu . 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ą DataActions polecenia , 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 DataActions elementu . 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
, , NotActions
DataActions
i 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 | Akcja | 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 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ś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. |
Uwaga
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, skrypty będą działać częściej.
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:
- Wyświetl listę definicji roli niestandardowej.
- W sekcji AssignableScopes pobierz grupy zarządzania, subskrypcje i grupy zasobów.
- Iteruj na liście
AssignableScopes
i przypisań ról. - Usuń przypisania ról, które używają roli niestandardowej.
- Jeśli używasz usługi Microsoft Entra Privileged Identity Management, usuń kwalifikujące się przypisania ról niestandardowych.
- Usuń 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 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 plikuAssignableScopes
. 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
AssignableScopes
roli . - 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 programieAssignableScopes
. 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ą zDataActions
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
- Samouczek: tworzenie roli niestandardowej platformy Azure przy użyciu programu Azure PowerShell
- Samouczek: tworzenie roli niestandardowej platformy Azure przy użyciu interfejsu wiersza polecenia platformy Azure
- Omówienie definicji ról platformy Azure
- Rozwiązywanie problemów z kontrolą dostępu na podstawie ról platformy Azure