Zuweisen von Azure-Rollen mithilfe der Azure CLI

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 das Zuweisen von Rollen mithilfe der Azure-Befehlszeilenschnittstelle beschrieben.

Voraussetzungen

Zum Zuweisen von Rollen müssen Sie über Folgendes verfügen:

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

Bei einem Azure AD-Benutzer rufen Sie den Benutzerprinzipalnamen (z. B. patlong@contoso.com) oder die Benutzerobjekt-ID ab. Zum Abrufen der Objekt-ID können Sie az ad user show verwenden.

az ad user show --id "{principalName}" --query "objectId" --output tsv

Gruppieren

Bei einer Azure AD-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 "objectId" --output tsv

Dienstprinzipal

Bei einem Azure AD-Dienstprinzipal (einer von einer Anwendung verwendeten Identität) benötigen Sie die Objekt-ID des Dienstprinzipals. 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, objectId:objectId}" --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 geeigneten 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: Ermitteln 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“.

Ressourcenumfang

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: Zuweisen einer Rolle

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.

Ressourcenumfang

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}" \
--resource-group "{resourceGroupName}"

Abonnementbereich

az role assignment create --assignee "{assignee}" \
--role "{roleNameOrId}" \
--subscription "{subscriptionNameOrId}"

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 die Rolle Mitwirkender für virtuelle Computer im Ressourcengruppenbereich pharma-sales zu.

az role assignment create --assignee "patlong@contoso.com" \
--role "Virtual Machine Contributor" \
--resource-group "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 Ressourcengruppenkontext pharma-sales die Rolle Mitwirkender für virtuelle Computer zugewiesen.

az role assignment create --assignee "patlong@contoso.com" \
--role "9980e02c-c2be-4d73-94e8-173b1dc7cf3c" \
--resource-group "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" \
--resource-group "Example-Storage-rg"

Alternativ kann die vollqualifizierte Ressourcengruppe auch mithilfe des Parameters --scope angegeben werden:

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" \
--resource-group "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}" \
--resource-group "{resourceGroupName}" \
--scope "/subscriptions/{subscriptionId}"

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" \
--resource-group "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" \
--subscription "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" \
--subscription "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"

Nächste Schritte