Benutzerdefinierte Azure-Rollen
Wenn die integrierten Azure-Rollen die Anforderungen Ihrer Organisation nicht erfüllen, können Sie Ihre eigenen benutzerdefinierten Rollen erstellen. Genauso wie integrierte Rollen können auch benutzerdefinierte Rollen Benutzern, Gruppen und Dienstprinzipalen im Verwaltungsgruppen-, Abonnement- und Ressourcengruppenbereich zugewiesen werden.
Benutzerdefinierte Rollen können von Abonnements, die demselben Microsoft Entra-Mandanten vertrauen, gemeinsam genutzt werden. Es gibt ein Limit von 5.000 benutzerdefinierten Rollen pro Mandant. (Für Microsoft Azure, betrieben von 21Vianet, beträgt der Grenzwert 2.000 benutzerdefinierte Rollen.) Benutzerdefinierte Rollen können über das Azure-Portal, mit Azure PowerShell, über die Azure CLI oder mithilfe der REST-API erstellt werden.
Schritte zum Erstellen einer benutzerdefinierten Rolle
Dies sind die grundlegenden Schritte zum Erstellen einer benutzerdefinierten Rolle.
Bestimmen Sie die Berechtigungen, die Sie benötigen.
Wenn Sie eine benutzerdefinierte Rolle erstellen, müssen Sie die Aktionen kennen, die zum Definieren Ihrer Berechtigungen verfügbar sind. In der Regel beginnen Sie mit einer vorhandenen integrierten Rolle und ändern sie Ihren Anforderungen entsprechend. Sie fügen die Aktionen der
Actions
- oderNotActions
-Eigenschaft der Rollendefinition hinzu. Wenn Sie über Datenaktionen verfügen, fügen Sie diese derDataActions
- oderNotDataActions
-Eigenschaft hinzu.Weitere Informationen finden Sie im nächsten Abschnitt Ermitteln der erforderlichen Berechtigungen.
Entscheiden Sie, wie Sie die benutzerdefinierte Rolle erstellen möchten.
Benutzerdefinierte Rollen können im Azure-Portal, mit Azure PowerShell, Azure CLI oder der REST-API erstellt werden.
Erstellen Sie die benutzerdefinierte Rolle.
Das geht am einfachsten über das Azure-Portal. Die Schritte zum Erstellen einer benutzerdefinierten Rolle über das Azure-Portal finden Sie unter Erstellen oder Aktualisieren von benutzerdefinierten Azure-Rollen über das Azure-Portal.
Testen Sie die benutzerdefinierte Rolle.
Sobald Sie über Ihre benutzerdefinierte Rolle verfügen, müssen Sie sie testen, um sicherzustellen, dass sie wie erwartet funktioniert. Wenn Sie später Anpassungen vornehmen müssen, können Sie die benutzerdefinierte Rolle aktualisieren.
Ermitteln der erforderlichen Berechtigungen
Azure verfügt über Tausende von Berechtigungen, die Sie potenziell zu Ihrer benutzerdefinierten Rolle hinzufügen können. Nachfolgend sind einige Methoden aufgeführt, mit denen Sie die Berechtigungen ermitteln können, die Sie Ihrer benutzerdefinierten Rolle hinzufügen sollten:
Sehen Sie sich die vorhandenen integrierten Rollen an.
Möglicherweise möchten Sie eine vorhandene Rolle ändern oder Berechtigungen kombinieren, die in mehreren Rollen verwendet werden.
Listen Sie die Azure-Dienste auf, auf die Sie Zugriff gewähren möchten.
Bestimmen Sie die Ressourcenanbieter, die den Azure-Diensten zugeordnet sind.
Azure-Dienste stellen ihre Funktionalität und Berechtigungen über Ressourcenanbieter zur Verfügung. Beispielsweise stellt der Microsoft.Compute-Ressourcenanbieter VM-Ressourcen bereit, und der Ressourcenanbieter Microsoft.Billing stellt Abonnement- und Abrechnungsressourcen zur Verfügung. Wenn Sie die Ressourcenanbieter kennen, können Sie die erforderlichen Berechtigungen für Ihre benutzerdefinierte Rolle eingrenzen und ermitteln.
Wenn Sie mithilfe des Azure-Portals eine benutzerdefinierte Rolle erstellen, können Sie auch die Ressourcenanbieter ermitteln, indem Sie nach Schlüsselwörtern suchen. Diese Suchfunktion wird unter Erstellen oder Aktualisieren von benutzerdefinierten Azure-Rollen mithilfe des Azure-Portals beschrieben.
Durchsuchen Sie die verfügbaren Berechtigungen, um die gewünschten Berechtigungen zu finden.
Wenn Sie über das Azure-Portal eine benutzerdefinierte Rolle erstellen, können Sie anhand von Schlüsselwörtern nach Berechtigungen suchen. Sie können z.B. nach Berechtigungen im Zusammenhang mit VMs oder mit der Abrechnung suchen. Sie können auch alle Berechtigungen als CSV-Datei herunterladen und dann diese Datei durchsuchen. Diese Suchfunktion wird unter Erstellen oder Aktualisieren von benutzerdefinierten Azure-Rollen mithilfe des Azure-Portals beschrieben.
Beispiel einer benutzerdefinierten Rolle
Das folgende Beispiel zeigt, wie eine benutzerdefinierte Rolle mit Azure PowerShell im JSON-Format angezeigt aussieht. Diese benutzerdefinierte Rolle kann zum Überwachen und Neustarten virtueller Computer verwendet werden.
{
"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}"
]
}
Im Folgenden wird die gleiche benutzerdefinierte Rolle bei Verwendung der Azure CLI veranschaulicht.
[
{
"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"
}
]
Eigenschaften der benutzerdefinierten Rolle
In der folgenden Tabelle wird erläutert, was die Eigenschaften der benutzerdefinierten Rollen bedeuten.
Eigenschaft | Erforderlich | Type | BESCHREIBUNG |
---|---|---|---|
Name roleName |
Ja | String | Der Anzeigename der benutzerdefinierten Rolle. Während eine Rollendefinition eine Verwaltungsgruppe oder Ressource auf Abonnementebene ist, kann eine Rollendefinition in mehreren Abonnements verwendet werden, die denselben Microsoft Entra-Mandanten nutzen. Dieser Anzeigename muss im Bereich des Microsoft Entra-Mandanten eindeutig sein. Er kann Buchstaben, Ziffern, Leerzeichen und Sonderzeichen enthalten. Die maximale Anzahl von Zeichen ist 512. |
Id name |
Ja | String | Die eindeutige ID der benutzerdefinierten Rolle. Für Azure PowerShell und Azure CLI wird diese ID automatisch generiert, wenn Sie eine neue Rolle erstellen. |
IsCustom roleType |
Ja | String | Gibt an, ob dies eine benutzerdefinierte Rolle ist. Legen Sie die Eigenschaft für benutzerdefinierte Rollen auf true oder CustomRole fest. Legen Sie die Eigenschaft für integrierte Rollen auf false oder BuiltInRole fest. |
Description description |
Ja | String | Die Beschreibung der benutzerdefinierten Rolle. Er kann Buchstaben, Ziffern, Leerzeichen und Sonderzeichen enthalten. Die maximale Anzahl von Zeichen ist 2048. |
Actions actions |
Ja | String[] | Ein Array von Zeichenfolgen, das die Aktionen auf Steuerungsebene angibt, deren Ausführung die Rolle zulässt. Weitere Informationen finden Sie unter Aktionen. |
NotActions notActions |
No | String[] | Ein Array von Zeichenfolgen, das die Aktionen auf Steuerungsebene angibt, die von den zulässigen Actions ausgeschlossen sind Weitere Informationen finden Sie unter NotActions. |
DataActions dataActions |
No | String[] | Ein Array von Zeichenfolgen, das die Aktionen auf Datenebene angibt, deren Ausführung für Ihre Daten innerhalb des Objekts die Rolle zulässt Wenn Sie eine benutzerdefinierte Rolle mit DataActions erstellen, kann diese Rolle im Verwaltungsgruppenbereich nicht zugewiesen werden. Weitere Informationen finden Sie unter DataActions. |
NotDataActions notDataActions |
No | String[] | Ein Array von Zeichenfolgen, das die Aktionen auf Datenebene angibt, die von den zulässigen DataActions ausgeschlossen sind Weitere Informationen finden Sie unter NotDataActions. |
AssignableScopes assignableScopes |
Ja | String[] | Ein Array von Zeichenfolgen, das die Bereiche angibt, in denen die benutzerdefinierte Rolle zur Zuweisung verfügbar ist. Die maximale Anzahl von AssignableScopes ist 2.000. Weitere Informationen finden Sie unter AssignableScopes. |
Bei Berechtigungszeichenfolgen wird die Groß-/Kleinschreibung nicht beachtet. Beim Erstellen Ihrer benutzerdefinierten Rollen sollten Sie sich an die vorgegebene Groß-/Kleinschreibung halten, die für Berechtigungen unter Vorgänge für Azure-Ressourcenanbieter beschrieben ist.
Platzhalterberechtigungen
Actions
, NotActions
, DataActions
und NotDataActions
unterstützen Platzhalter (*
) beim Definieren von Berechtigungen. Ein Platzhalter (*
) erweitert eine Berechtigung auf alles, was der von Ihnen angegebenen Aktionszeichenfolge entspricht. Angenommen, Sie möchten alle Berechtigungen hinzufügen, die sich auf Azure Cost Management und Exporte beziehen. Sie können alle nachfolgend aufgeführten Aktionszeichenfolgen hinzufügen:
Microsoft.CostManagement/exports/action
Microsoft.CostManagement/exports/read
Microsoft.CostManagement/exports/write
Microsoft.CostManagement/exports/delete
Microsoft.CostManagement/exports/run/action
Anstatt all diese Zeichenfolgen hinzuzufügen, können Sie jedoch auch einfach eine Platzhalterzeichenfolge hinzufügen. Die folgende Platzhalterzeichenfolge entspricht beispielsweise den oben genannten fünf Zeichenfolgen. Dies schließt auch alle zukünftigen Exportberechtigungen ein, die möglicherweise hinzugefügt werden.
Microsoft.CostManagement/exports/*
Hinweis
Es empfiehlt sich, explizit Actions
und DataActions
anzugeben, anstatt das Platzhalterzeichen (*
) zu verwenden. Bei Verwendung des Platzhalters können ggf. ungewollt zusätzlicher Zugriff und zusätzliche Berechtigungen durch zukünftige Aktionen (Actions
) oder Datenaktionen (DataActions
) gewährt werden.
Rollen zum Erstellen, Löschen, Aktualisieren oder Anzeigen einer benutzerdefinierten Rolle
Wie integrierte Rollen legt die AssignableScopes
-Eigenschaft die Bereiche fest, in denen die Rolle zur Zuweisung verfügbar ist. Die AssignableScopes
-Eigenschaft für eine benutzerdefinierte Rolle steuert auch, wer zum Erstellen, Löschen, Aktualisieren oder Anzeigen der benutzerdefinierten Rolle berechtigt ist.
Aufgabe | Aktion | Beschreibung |
---|---|---|
Erstellen/Löschen einer benutzerdefinierten Rolle | Microsoft.Authorization/ roleDefinitions/write |
Benutzer, die für alle AssignableScopes der benutzerdefinierten Rolle zu dieser Aktion berechtigt sind, können benutzerdefinierte Rollen für die Verwendung in diesen Bereichen erstellen (oder löschen). Hierzu gehören beispielsweise Besitzer und Benutzerzugriffsadministratoren von Verwaltungsgruppen, Abonnements und Ressourcengruppen. |
Aktualisieren einer benutzerdefinierten Rolle | Microsoft.Authorization/ roleDefinitions/write |
Benutzer, die für alle AssignableScopes der benutzerdefinierten Rolle zu dieser Aktion berechtigt sind, können benutzerdefinierte Rollen in diesen Bereichen aktualisieren. Hierzu gehören beispielsweise Besitzer und Benutzerzugriffsadministratoren von Verwaltungsgruppen, Abonnements und Ressourcengruppen. |
Anzeigen einer benutzerdefinierten Rolle | Microsoft.Authorization/ roleDefinitions/read |
Benutzer, die in einem Bereich zu dieser Aktion berechtigt sind, können die benutzerdefinierten Rollen anzeigen, die für die Zuweisung in diesem Bereich verfügbar sind. Alle integrierten Rollen erlauben, dass benutzerdefinierte Rollen für die Zuweisung verfügbar sind. |
Hinweis
Auch wenn eine Rolle umbenannt wird, ändert sich die Rollen-ID nicht. Wenn Sie Ihre Rollenzuweisungen mithilfe von Skripts oder mittels Automatisierung erstellen, wird empfohlen, die eindeutige Rollen-ID anstelle des Rollennamens zu verwenden. Wird eine Rolle umbenannt, ist auf diese Weise die Wahrscheinlichkeit größer, dass Ihre Skripts funktionieren.
Suchen von Rollenzuweisungen zum Löschen einer benutzerdefinierten Rolle
Bevor Sie eine benutzerdefinierte Rolle löschen können, müssen Sie alle Rollenzuweisungen entfernen, die die benutzerdefinierte Rolle verwenden. Wenn Sie versuchen, eine benutzerdefinierte Rolle mit Rollenzuweisungen zu löschen, erhalten Sie die Meldung: There are existing role assignments referencing role (code: RoleDefinitionHasAssignments)
.
Hier finden Sie Schritte zum Suchen der Rollenzuweisungen vor dem Löschen einer benutzerdefinierten Rolle:
- Listen Sie die benutzerdefinierte Rollendefinition auf.
- Rufen Sie im Abschnitt AssignableScopes die Verwaltungsgruppen, Abonnements und Ressourcengruppen ab.
- Durchlaufen Sie die
AssignableScopes
und -Liste der Rollenzuweisungen. - Entfernen Sie die Rollenzuweisungen, die die benutzerdefinierte Rolle verwenden.
- Wenn Sie Microsoft Entra Privileged Identity Management verwenden, entfernen Sie berechtigte benutzerdefinierte Rollenzuweisungen.
- Löschen Sie die benutzerdefinierte Rolle.
Informationen zum Ermitteln nicht verwendeter benutzerdefinierter Rollen finden Sie unter Symptom: Es können keine weiteren Rollendefinitionen erstellt werden..
Grenzwerte bei benutzerdefinierten Rollen
In der nachstehenden Liste werden die Grenzwerte bei benutzerdefinierten Rollen beschrieben.
- Jeder Mandant kann bis zu 5000 benutzerdefinierte Rollen haben.
- Microsoft Azure, betrieben von 21Vianet, kann bis zu 2.000 benutzerdefinierte Rollen für jeden Mandanten enthalten.
AssignableScopes
kann nicht auf den Stammbereich ("/"
) festgelegt werden.- In
AssignableScopes
können Sie keine Platzhalter (*
) verwenden. Diese Platzhaltereinschränkung soll sicherstellen, dass ein Benutzer keinen Zugriff auf einen Bereich durch Aktualisieren der Rollendefinition erhalten kann. - Sie können nur einen Platzhalter in einer Aktionszeichenfolge verwenden.
- Sie können in
AssignableScopes
einer benutzerdefinierten Rolle nur eine einzige Verwaltungsgruppe definieren. - Azure Resource Manager überprüft nicht die Existenz der Verwaltungsgruppe im
AssignableScopes
der Rollendefinition. - Benutzerdefinierte Rollen mit
DataActions
können im Verwaltungsgruppenbereich nicht zugewiesen werden. - Sie können eine benutzerdefinierte Rolle mit
DataActions
und einer Verwaltungsgruppe inAssignableScopes
erstellen. Sie können die benutzerdefinierte Rolle nicht im Verwaltungsgruppenbereich selbst zuweisen. Sie können jedoch die benutzerdefinierte Rolle im Bereich der Abonnements innerhalb der Verwaltungsgruppe zuweisen. Dies kann hilfreich sein, wenn Sie eine einzelne benutzerdefinierte Rolle mitDataActions
erstellen müssen, die in mehreren Abonnements zugewiesen werden muss. So müssen Sie keine separate benutzerdefinierte Rolle für jedes Abonnement erstellen.
Weitere Informationen zu benutzerdefinierten Rollen und Verwaltungsgruppen finden Sie unter Was sind Azure-Verwaltungsgruppen?.
Eingabe- und Ausgabeformate
Zum Erstellen einer benutzerdefinierten Rolle über die Befehlszeile verwenden Sie in der Regel JSON, um die Eigenschaften anzugeben, die Sie für die benutzerdefinierte Rolle verwenden möchten. Abhängig von den Tools, die Sie verwenden, variieren die Eingabe- und Ausgabeformate. In diesem Abschnitt sind die Eingabe- und Ausgabeformate nach Tool aufgeführt.
Azure PowerShell
Folgende Eingabe ist nötig, um eine benutzerdefinierte Rolle über Azure PowerShell zu erstellen:
{
"Name": "",
"Description": "",
"Actions": [],
"NotActions": [],
"DataActions": [],
"NotDataActions": [],
"AssignableScopes": []
}
Geben Sie hingegen Folgendes ein, wenn Sie eine benutzerdefinierte Rolle über Azure PowerShell aktualisieren möchten: Beachten Sie, dass die Id
-Eigenschaft hinzugefügt wurde.
{
"Name": "",
"Id": "",
"Description": "",
"Actions": [],
"NotActions": [],
"DataActions": [],
"NotDataActions": [],
"AssignableScopes": []
}
Im Folgenden sehen Sie ein Beispiel für die Ausgabe, wenn Sie eine benutzerdefinierte Rolle mit Azure PowerShell und dem Befehl ConvertTo-Json auflisten.
{
"Name": "",
"Id": "",
"IsCustom": true,
"Description": "",
"Actions": [],
"NotActions": [],
"DataActions": [],
"NotDataActions": [],
"AssignableScopes": []
}
Azure CLI
Folgende Eingabe ist nötig, um eine benutzerdefinierte Rolle über die Azure CLI zu erstellen oder zu aktualisieren: Dieses Format gilt auch, wenn Sie eine benutzerdefinierte Rolle mit Azure PowerShell erstellen.
{
"Name": "",
"Description": "",
"Actions": [],
"NotActions": [],
"DataActions": [],
"NotDataActions": [],
"AssignableScopes": []
}
Im Folgenden sehen Sie ein Beispiel für die Ausgabe, wenn Sie eine benutzerdefinierte Rolle mit der Azure CLI auflisten.
[
{
"assignableScopes": [],
"description": "",
"id": "",
"name": "",
"permissions": [
{
"actions": [],
"dataActions": [],
"notActions": [],
"notDataActions": []
}
],
"roleName": "",
"roleType": "CustomRole",
"type": "Microsoft.Authorization/roleDefinitions"
}
]
REST-API
Folgende Eingabe ist nötig, um eine benutzerdefinierte Rolle über die REST-API zu erstellen oder zu aktualisieren: Dieses Format wird auch generiert, wenn Sie eine benutzerdefinierte Rolle mithilfe des Azure-Portal erstellen.
{
"properties": {
"roleName": "",
"description": "",
"assignableScopes": [],
"permissions": [
{
"actions": [],
"notActions": [],
"dataActions": [],
"notDataActions": []
}
]
}
}
Im Folgenden sehen Sie ein Beispiel für die Ausgabe, wenn Sie eine benutzerdefinierte Rolle über die REST-API auflisten.
{
"properties": {
"roleName": "",
"type": "CustomRole",
"description": "",
"assignableScopes": [],
"permissions": [
{
"actions": [],
"notActions": [],
"dataActions": [],
"notDataActions": []
}
],
"createdOn": "",
"updatedOn": "",
"createdBy": "",
"updatedBy": ""
},
"id": "",
"type": "Microsoft.Authorization/roleDefinitions",
"name": ""
}