Zuweisen von Azure-Rollen mithilfe der Azure-Befehlszeilenschnittstelle
Azure RBAC (Role-Based Access Control, rollenbasierte Zugriffssteuerung) ist das Autorisierungssystem für die Verwaltung des Zugriffs auf Azure-Ressourcen. Sie weisen Benutzern, Gruppen, Dienstprinzipalen oder verwalteten Identitäten für einen bestimmten Bereich Rollen zu, um diesen Zugriff zu gewähren. In diesem Artikel wird beschrieben, wie Sie Rollen mit Azure CLI zuweisen.
Voraussetzungen
Zum Zuweisen von Rollen müssen Sie über Folgendes verfügen:
Microsoft.Authorization/roleAssignments/write
Berechtigungen, z . B. Rollenbasierte Zugriffssteuerungsadministrator- Bash in der Azure Cloud Shell oder Azure-Befehlszeilenschnittstelle
Schritte zum Zuweisen einer Azure-Rolle
Das Zuweisen einer Rolle besteht aus drei Elementen: Sicherheitsprinzipal, Rollendefinition und Bereich.
Schritt 1: Ermitteln, wer Zugriff benötigt
Sie können eine Rolle einem Benutzer, einer Gruppe, einem Dienstprinzipal oder einer verwalteten Identität zuweisen. Sie müssen ggf. die eindeutige ID des Objekts angeben, um eine Rolle zuzuweisen. Die ID weist dieses Format auf: 11111111-1111-1111-1111-111111111111
. Sie können die ID über das Azure-Portal oder die Azure-Befehlszeilenschnittstelle (Azure CLI) abrufen.
Benutzer
Rufen Sie für einen Microsoft Entra-Benutzer den Benutzerprinzipalnamen ab, z patlong@contoso.com . B. die Benutzerobjekt-ID. Zum Abrufen der Objekt-ID können Sie az ad user show verwenden.
az ad user show --id "{principalName}" --query "id" --output tsv
Gruppieren
Für eine Microsoft Entra-Gruppe benötigen Sie die Gruppenobjekt-ID. Zum Abrufen der Objekt-ID können Sie az ad group show oder az ad group list verwenden.
az ad group show --group "{groupName}" --query "id" --output tsv
Dienstprinzipal
Für einen Microsoft Entra-Dienstprinzipal (von einer Anwendung verwendete Identität) benötigen Sie die Dienstprinzipalobjekt-ID. Zum Abrufen der Objekt-ID können Sie az ad sp list verwenden. Verwenden Sie für einen Dienstprinzipal die Objekt-ID und nicht die Anwendungs-ID.
az ad sp list --all --query "[].{displayName:displayName, id:id}" --output tsv
az ad sp list --display-name "{displayName}"
Verwaltete Identität
Bei einer systemseitig oder benutzerseitig zugewiesenen verwalteten Identität benötigen Sie die Objekt-ID. Zum Abrufen der Objekt-ID können Sie az ad sp list verwenden.
az ad sp list --all --filter "servicePrincipalType eq 'ManagedIdentity'"
Sie können auch az identity list verwenden, um nur benutzerseitig zugewiesene verwaltete Identitäten aufzulisten.
az identity list
Schritt 2: Auswählen der entsprechenden Rolle
Berechtigungen sind in Rollen zusammengefasst. Sie können aus einer Liste von verschiedenen in Azure integrierten Rollen auswählen oder eigene benutzerdefinierte Rollen verwenden. Es hat sich bewährt, den Zugriff mit den minimal erforderlichen Berechtigungen zu gewähren. Daher sollten Sie keine allgemeine Rolle zuweisen.
Zum Auflisten der Rollen und Abrufen der eindeutigen Rollen-ID können Sie az role definition list verwenden.
az role definition list --query "[].{name:name, roleType:roleType, roleName:roleName}" --output tsv
Im Folgenden wird gezeigt, wie Sie die Details einer bestimmten Rolle auflisten.
az role definition list --name "{roleName}"
Weitere Informationen finden Sie unter Auflisten von Azure-Rollendefinitionen.
Schritt 3: Identifizieren des erforderlichen Bereichs
Azure bietet vier Bereichsebenen: Ressource, Ressourcengruppe, Abonnement und Verwaltungsgruppe. Es hat sich bewährt, den Zugriff mit den minimal erforderlichen Berechtigungen zu gewähren. Daher sollten Sie Rollen nicht für einen allgemeinen Bereich zuweisen. Weitere Informationen zum Begriff „Bereich“ finden Sie unter Grundlegendes zum Begriff „Bereich“.
Ressourcenbereich
Für den Ressourcenbereich benötigen Sie die Ressourcen-ID der Ressource. Die Ressourcen-ID finden Sie unter den Eigenschaften der Ressource im Azure-Portal. Ressourcen-IDs weisen folgendes Format auf:
/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/{providerName}/{resourceType}/{resourceSubType}/{resourceName}
Ressourcengruppenbereich
Für den Bereich der Ressourcengruppe benötigen Sie den Namen der Ressourcengruppe. Sie finden den Namen im Azure-Portal auf der Seite Ressourcengruppen oder mithilfe von az group list.
az group list --query "[].{name:name}" --output tsv
Abonnementbereich
Für den Abonnementbereich benötigen Sie die Abonnement-ID. Sie finden die Abonnement-ID im Azure-Portal auf der Seite Abonnements oder durch Ausführen von az account list.
az account list --query "[].{name:name, id:id}" --output tsv
Verwaltungsgruppenbereich
Für den Verwaltungsgruppenbereich benötigen Sie den Namen der Verwaltungsgruppe. Sie finden den Namen im Azure-Portal auf der Seite Verwaltungsgruppen oder durch Ausführen von az account management-group list.
az account management-group list --query "[].{name:name, id:id}" --output tsv
Schritt 4: Rollen zuweisen
Verwenden Sie zum Zuweisen einer Rolle den Befehl az role assignment create. Abhängig vom Bereich weist der Befehl in der Regel eines der folgenden Formate auf.
Ressourcenbereich
az role assignment create --assignee "{assignee}" \
--role "{roleNameOrId}" \
--scope "/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/{providerName}/{resourceType}/{resourceSubType}/{resourceName}"
Ressourcengruppenbereich
az role assignment create --assignee "{assignee}" \
--role "{roleNameOrId}" \
--scope "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}"
Abonnementbereich
az role assignment create --assignee "{assignee}" \
--role "{roleNameOrId}" \
--scope "/subscriptions/{subscriptionId}"
Verwaltungsgruppenbereich
az role assignment create --assignee "{assignee}" \
--role "{roleNameOrId}" \
--scope "/providers/Microsoft.Management/managementGroups/{managementGroupName}"
Im Folgenden finden Sie eine Beispielausgabe, wenn Sie einem Benutzer die Rolle Mitwirkender für virtuelle Computer in einem Ressourcengruppenbereich zuweisen.
{
"canDelegate": null,
"id": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Authorization/roleAssignments/{roleAssignmentId}",
"name": "{roleAssignmentId}",
"principalId": "{principalId}",
"principalType": "User",
"resourceGroup": "{resourceGroupName}",
"roleDefinitionId": "/subscriptions/{subscriptionId}/providers/Microsoft.Authorization/roleDefinitions/9980e02c-c2be-4d73-94e8-173b1dc7cf3c",
"scope": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}",
"type": "Microsoft.Authorization/roleAssignments"
}
Beispiele für das Zuweisen einer Rolle
Zuweisen einer Rolle für alle Blobcontainer in einem Speicherkonto-Ressourcenbereich
Weist einem Dienstprinzipal mit der Objekt-ID 55555555-5555-5555-5555-555555555555 die Rolle Mitwirkender an Speicherblobdaten im Ressourcenbereich für das Speicherkonto storage12345 zu.
az role assignment create --assignee "55555555-5555-5555-5555-555555555555" \
--role "Storage Blob Data Contributor" \
--scope "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/Example-Storage-rg/providers/Microsoft.Storage/storageAccounts/storage12345"
Zuweisen einer Rolle für einen bestimmten Blobcontainer-Ressourcenbereich
Weist einem Dienstprinzipal mit der Objekt-ID 55555555-5555-5555-5555-555555555555 die Rolle Mitwirkender an Speicherblobdaten im Ressourcenbereich für den Blobcontainer blob-container-01 zu.
az role assignment create --assignee "55555555-5555-5555-5555-555555555555" \
--role "Storage Blob Data Contributor" \
--scope "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/Example-Storage-rg/providers/Microsoft.Storage/storageAccounts/storage12345/blobServices/default/containers/blob-container-01"
Zuweisen einer Rolle für eine Gruppe im Ressourcenbereich eines bestimmten virtuellen Netzwerks
Weist der Gruppe Ann Mack Team mit der ID „22222222-2222-2222-2222-222222222222“ die Rolle Mitwirkender für virtuelle Computer im Ressourcenbereich für das virtuelle Netzwerk pharma-sales-project-network zu.
az role assignment create --assignee "22222222-2222-2222-2222-222222222222" \
--role "Virtual Machine Contributor" \
--scope "/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/pharma-sales/providers/Microsoft.Network/virtualNetworks/pharma-sales-project-network"
Zuweisen einer Rolle für einen Benutzer im Ressourcengruppenbereich
Weist dem Benutzer patlong@contoso.com im Ressourcengruppenbereich pharma-sales die Rolle Mitwirkender für virtuelle Computer zu.
az role assignment create --assignee "patlong@contoso.com" \
--role "Virtual Machine Contributor" \
--scope "/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/pharma-sales"
Zuweisen einer Rolle für einen Benutzer mithilfe der eindeutigen Rollen-ID in einem Ressourcengruppenbereich
In bestimmten Fällen kann sich ein Rollenname ändern, z. B.:
- Sie verwenden eine eigene benutzerdefinierte Rolle und beschließen, den Namen zu ändern.
- Sie verwenden eine als Vorschauversion verfügbare Rolle, deren Name den Zusatz (Vorschauversion) enthält. Beim Veröffentlichen wird die Rolle umbenannt.
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.
Im folgenden Beispiel wird dem Benutzer patlong@contoso.com im Ressourcengruppenbereich pharma-sales die Rolle Mitwirkender für virtuelle Computer zugewiesen.
az role assignment create --assignee "patlong@contoso.com" \
--role "9980e02c-c2be-4d73-94e8-173b1dc7cf3c" \
--scope "/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/pharma-sales"
Zuweisen einer Rolle für alle Blobcontainer in einem Ressourcengruppenbereich
Weist einem Dienstprinzipal mit der Objekt-ID 55555555-5555-5555-5555-555555555555 die Rolle Mitwirkender an Speicherblobdaten im Ressourcengruppenbereich Example-Storage-rg zu.
az role assignment create --assignee "55555555-5555-5555-5555-555555555555" \
--role "Storage Blob Data Contributor" \
--scope "/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/Example-Storage-rg"
Zuweisen einer Rolle für eine Anwendung in einem Ressourcengruppenbereich
Weist einer Anwendung mit der Objekt-ID „44444444-4444-4444-4444-444444444444“ des Dienstprinzipals die Rolle Mitwirkender für virtuelle Computer im Ressourcengruppenbereich pharma-sales zu.
az role assignment create --assignee "44444444-4444-4444-4444-444444444444" \
--role "Virtual Machine Contributor" \
--scope "/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/pharma-sales"
Zuweisen einer Rolle für einen neuen Dienstprinzipal in einem Ressourcengruppenbereich
Wenn Sie einen neuen Dienstprinzipal erstellen und sofort versuchen, diesem eine Rolle zuzuweisen, kann die Rollenzuweisung in einigen Fällen fehlschlagen. Wenn Sie z.B. ein Skript verwenden, um eine neue verwaltete Identität zu erstellen, und dann versuchen, dem Dienstprinzipal eine Rolle zuzuweisen, kann die Rollenzuweisung fehlschlagen. Der Grund für diesen Fehler ist wahrscheinlich eine Replikationsverzögerung. Der Dienstprinzipal wird in einer Region erstellt, die Rollenzuweisung kann aber in einer anderen Region stattfinden, in die der Dienstprinzipal noch nicht repliziert wurde. Um dieses Szenario zu beheben, sollten Sie beim Erstellen der Rollenzuweisung den Prinzipaltyp angeben.
Verwenden Sie az role assignment create zum Zuweisen einer Rolle, geben Sie einen Wert für --assignee-object-id
an, und legen Sie dann --assignee-principal-type
auf ServicePrincipal
fest.
az role assignment create --assignee-object-id "{assigneeObjectId}" \
--assignee-principal-type "{assigneePrincipalType}" \
--role "{roleNameOrId}" \
--scope "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}"
Im folgenden Beispiel wird der verwalteten Identität msi-test im Ressourcengruppenkontext pharma-sales die Rolle Mitwirkender für virtuelle Computer zugewiesen:
az role assignment create --assignee-object-id "33333333-3333-3333-3333-333333333333" \
--assignee-principal-type "ServicePrincipal" \
--role "Virtual Machine Contributor" \
--scope "/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/pharma-sales"
Zuweisen einer Rolle für einen Benutzer in einem Abonnementbereich
Weist dem Benutzer annm@example.com die Rolle Leser im Abonnementbereich zu.
az role assignment create --assignee "annm@example.com" \
--role "Reader" \
--scope "/subscriptions/00000000-0000-0000-0000-000000000000"
Zuweisen einer Rolle für eine Gruppe in einem Abonnementbereich
Weist der Gruppe Ann Mack Team mit der ID „22222222-2222-2222-2222-222222222222“ die Rolle Leser im Abonnementbereich zu.
az role assignment create --assignee "22222222-2222-2222-2222-222222222222" \
--role "Reader" \
--scope "/subscriptions/00000000-0000-0000-0000-000000000000"
Zuweisen einer Rolle für alle Blobcontainer in einem Abonnementbereich
Weist dem Benutzer alain@example.com die Rolle Leser von Speicherblobdaten im Abonnementbereich zu.
az role assignment create --assignee "alain@example.com" \
--role "Storage Blob Data Reader" \
--scope "/subscriptions/00000000-0000-0000-0000-000000000000"
Zuweisen einer Rolle für einen Benutzer in einem Verwaltungsgruppenbereich
Weist dem Benutzer alain@example.com die Rolle Abrechnungsleser im Verwaltungsgruppenbereich zu.
az role assignment create --assignee "alain@example.com" \
--role "Billing Reader" \
--scope "/providers/Microsoft.Management/managementGroups/marketing-group"