Was sind benutzerdefinierte Rollen in Azure?

Abgeschlossen

Manchmal gewähren integrierten Rollen nicht genau die Zugriffsberechtigungen, die Sie benötigen. Mit benutzerdefinierten Rollen können Sie Rollen definieren, die zu den spezifischen Anforderungen Ihrer Organisation passen. Sie können die erstellten benutzerdefinierten Azure-Rollen den Benutzern, Gruppen und Dienstprinzipalen im Rahmen des Abonnements, der Ressourcengruppe oder der Ressource zuweisen.

In dieser Lerneinheit erfahren Sie mehr über benutzerdefinierte Rollen in der rollenbasierten Zugriffssteuerung von Azure.

Microsoft Entra- und Azure-Rollen

Microsoft Entra-Rollen und Azure-Rollen werden häufig verwirrt, wenn Sie zum ersten Mal mit Azure arbeiten. Microsoft Entra-Rollen bieten den Mechanismus zum Verwalten von Berechtigungen für Microsoft Entra-Ressourcen, z. B. Benutzerkonten und Kennwörter. Azure-Rollen bieten eine Vielzahl von Funktionen für die Verwaltung von Azure-Ressourcen wie virtuellen Computern (VMs) auf granularer Ebene.

Diagram that shows relationship of Azure roles and Microsoft Entra roles.

Die folgende Tabelle zeigt die feinen Unterschiede zwischen dem Einrichten und Verwalten der beiden:

Azure-Rollen Microsoft Entra-Rollen
Verwalten des Zugriffs auf Azure-Ressourcen wie z. B. VMs, Speicher oder Netzwerke Verwalten des Zugriffs auf Microsoft Entra-Ressourcen wie Benutzerkonten und Kennwörter
Mehrere Bereichsebenen (Verwaltungsgruppe, Abonnement, Ressourcengruppe, Ressource) Bereich nur auf Mandantenebene
Rolleninformationen, auf die über das Azure-Portal, die Azure CLI Azure PowerShell, Azure Resource Manager-Vorlagen oder eine REST-API zugegriffen werden kann Rolleninformationen, die im Azure-Verwaltungsportal, im Microsoft 365 Admin Center, in Microsoft Graph oder in Microsoft Graph PowerShell verfügbar sind

Für unser Szenario benötigen wir eine benutzerdefinierte Rolle, um Azure-VMs im Abonnementbereich zu verwalten. Daher müssen wir benutzerdefinierte Rollen in Azure RBAC verwenden.

Zuweisung und Bereich von benutzerdefinierten Rollen

Benutzer mit den Rollen „Benutzerzugriffsadministrator“ und „Besitzer“ können benutzerdefinierte Rollen in Azure RBAC erstellen oder zuweisen.

Sie können benutzerdefinierte Rollen für Folgendes zuweisen:

Sicherheitsprinzipal Zusammenfassung
Benutzer Eine Person, die über ein Profil in der Microsoft Entra ID verfügt
Gruppieren Eine Gruppe von Benutzern, die in der Microsoft Entra ID erstellt wurden
Dienstprinzipale Eine Sicherheitsidentität, die von Anwendungen oder Diensten verwendet wird, um auf bestimmte Azure-Ressourcen zuzugreifen.
Verwaltete Identität Eine Identität in Microsoft Entra ID, die automatisch von Azure verwaltet wird

Sie können den Bereich der Zuweisung und der zugehörigen Berechtigungen auf verschiedene Ebenen in Azure festlegen. Es gibt die folgenden unterschiedlichen Bereiche:

  • Abonnement
  • Ressourcengruppe
  • Einzelne Ressource

Diagram that shows the scopes for role assignment and their relationship to each other.

Rollendefinition und -struktur

Eine benutzerdefinierte Rollendefinition besteht aus einer Sammlung unterschiedlicher Berechtigungen. Jede Definition enthält Details zu den zulässigen Vorgängen, wie z. B. Lesen, Schreiben und Löschen. Die Definition wird anhand dieser Strukturen gebildet:

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

Das folgende Beispiel zeigt die Rollendefinition für die Rolle Mitwirkender:

{
  "Name": "Contributor",
  "Id": "b24988ac-6180-42a0-ab88-20f7382dd24c",
  "IsCustom": false,
  "Description": "Lets you manage everything except access to resources.",
  "Actions": [
    "*"
  ],
  "NotActions": [
    "Microsoft.Authorization/*/Delete",
    "Microsoft.Authorization/*/Write",
    "Microsoft.Authorization/elevateAccess/Action",
    "Microsoft.Blueprint/blueprintAssignments/write",
    "Microsoft.Blueprint/blueprintAssignments/delete"
  ],
  "DataActions": [],
  "NotDataActions": [],
  "AssignableScopes": [
    "/"
  ]
}

Rollendefinitionen werden im folgenden Format deklariert:

{Company}.{ProviderName}/{resourceType}/{action}

Der Aktionsteil ist in der Regel eine der folgenden Aktionen:

  • *
  • Lesen
  • Schreiben
  • Aktion
  • Löschen

Definieren einer benutzerdefinierten Rolle zum Verwalten von VMs

Um herauszufinden, welche Berechtigungen in eine Rollendefinition aufgenommen werden müssen, verwenden Sie die Liste der Ressourcenanbietervorgänge von Azure Resource Manager. Sehen Sie sich die integrierten Azure-Rollen an, die ähnliche Berechtigungen wie die benötigten aufweisen.

Überprüfen integrierter Rollen

In diesem Szenario verfügt die integrierte Rolle „Mitwirkender für virtuelle Computer“ über mehr Berechtigungen als der Mitarbeiter benötigt, und die Berechtigungen des Administratorkontos für virtuelle Computer sind nicht ausreichend.

Mit dem folgenden Azure CLI-Befehl werden die Berechtigungen für die integrierten Rolle „Mitwirkender für VM“ zurückgegeben:

az role definition list --name "Virtual Machine Contributor" --output json | jq '.[] | .permissions[0].actions'

Die folgende Liste zeigt die Berechtigungen für die integrierte Rollen „Mitwirkender für VM“ an:

[
  "Microsoft.Authorization/*/read",
  "Microsoft.Compute/availabilitySets/*",
  "Microsoft.Compute/locations/*",
  "Microsoft.Compute/virtualMachines/*",
  "Microsoft.Compute/virtualMachineScaleSets/*",
  "Microsoft.DevTestLab/schedules/*",
  "Microsoft.Insights/alertRules/*",
  "Microsoft.Network/applicationGateways/backendAddressPools/join/action",
  "Microsoft.Network/loadBalancers/backendAddressPools/join/action",
  "Microsoft.Network/loadBalancers/inboundNatPools/join/action",
  "Microsoft.Network/loadBalancers/inboundNatRules/join/action",
  "Microsoft.Network/loadBalancers/probes/join/action",
  "Microsoft.Network/loadBalancers/read",
  "Microsoft.Network/locations/*",
  "Microsoft.Network/networkInterfaces/*",
  "Microsoft.Network/networkSecurityGroups/join/action",
  "Microsoft.Network/networkSecurityGroups/read",
  "Microsoft.Network/publicIPAddresses/join/action",
  "Microsoft.Network/publicIPAddresses/read",
  "Microsoft.Network/virtualNetworks/read",
  "Microsoft.Network/virtualNetworks/subnets/join/action",
  "Microsoft.RecoveryServices/locations/*",
  "Microsoft.RecoveryServices/Vaults/backupFabrics/backupProtectionIntent/write",
  "Microsoft.RecoveryServices/Vaults/backupFabrics/protectionContainers/protectedItems/*/read",
  "Microsoft.RecoveryServices/Vaults/backupFabrics/protectionContainers/protectedItems/read",
  "Microsoft.RecoveryServices/Vaults/backupFabrics/protectionContainers/protectedItems/write",
  "Microsoft.RecoveryServices/Vaults/backupPolicies/read",
  "Microsoft.RecoveryServices/Vaults/backupPolicies/write",
  "Microsoft.RecoveryServices/Vaults/read",
  "Microsoft.RecoveryServices/Vaults/usages/read",
  "Microsoft.RecoveryServices/Vaults/write",
  "Microsoft.ResourceHealth/availabilityStatuses/read",
  "Microsoft.Resources/deployments/*",
  "Microsoft.Resources/subscriptions/resourceGroups/read",
  "Microsoft.SqlVirtualMachine/*",
  "Microsoft.Storage/storageAccounts/listKeys/action",
  "Microsoft.Storage/storageAccounts/read",
  "Microsoft.Support/*"
]

Um diese Liste in PowerShell abzurufen, führen Sie den folgenden Befehl aus:

Get-AzRoleDefinition -Name "Virtual Machine Contributor" | Select Actions | ConvertTo-Json

Für unser Szenario möchten wir eine benutzerdefinierte Rolle verwenden, mit der Sie virtuelle Computer für ein bestimmtes Abonnement überwachen und neu starten können. Daher möchten wir die folgenden Aktionen auf der Abonnementebene einbeziehen:

  • Lesezugriff auf die Rechen-, Netzwerk- und Speicherressourcen
  • Funktion zum Starten und Neustarten von virtuellen Computern
  • Zugriff auf die Ressourcengruppen im Abonnement
  • Zugriff auf Überwachungsressourcen

Es gibt einige Vorgänge in der Rollendefinition „Mitwirkender für VM“, die wir verwenden können, z. B. "Microsoft.Insights/alertRules/*" für die Überwachung, aber Neustarten und einige andere Vorgänge werden in dieser Rollendefinition nicht als Aktionen aufgeführt.

Suchen von Ressourcenanbietervorgängen

Die Aktion zum Neustarten der VM finden wir in der Liste der Ressourcenanbietervorgänge von Azure Resource Manager oder durch Ausführen des folgenden PowerShell-Befehls, um Vorgänge für VMs zurückzugeben:

Get-AzProviderOperation */virtualMachines/*

Der folgende Vorgang für den Neustart wird in der Liste zurückgegeben:

Operation         : Microsoft.Compute/virtualMachines/restart/action
OperationName     : Restart Virtual Machine
ProviderNamespace : Microsoft Compute
ResourceName      : Virtual Machines
Description       : Restarts the virtual machine
IsDataAction      : False

Sie können das Azure PowerShell-Cmdlet Get-AzProviderOperation verwenden, um die aktuellste Liste von Ressourcenanbietervorgängen abzurufen. In der Azure CLI verwenden Sie den Befehl az provider operation show. Eine veröffentlichte Liste von Ressourcenanbietern und Vorgängen finden Sie in den Azure RBAC-Artikeln der Dokumentation.

Erstellen einer Rollendefinition für VM-Operatoren

Angenommen, Sie haben die benötigten Informationen anhand der zugehörigen integrierten Rollendefinitionen und der Liste der Ressourcenanbietervorgänge ausgewählt. Schließlich ergibt sich folgende Rollendefinition für die benutzerdefinierte Rolle. Diese Rollendefinition verwenden Sie für die benutzerdefinierte Rolle.

   {
   "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.Support/*"
   ],
   "NotActions": [],
   "DataActions": [],
   "NotDataActions": [],
   "AssignableScopes": [
      "/subscriptions/{subscriptionId1}" 
   ]
   }

Überprüfen Sie Ihr Wissen

1.

Was ist in einer benutzerdefinierten Azure-Rollendefinition enthalten?

2.

Mit welchen Befehlen können Sie festlegen, welche Vorgänge zu einer benutzerdefinierten Rollendefinition hinzugefügt werden?