Zuweisen von Azure-Rollen mithilfe der REST-API
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 mithilfe der REST-API zuweisen.
Voraussetzungen
Zum Zuweisen von Azure-Rollen müssen Sie über Folgendes verfügen:
Microsoft.Authorization/roleAssignments/write
Berechtigungen, z. B. Rollenbasierte Zugriffssteuerungsadministrator oder Benutzerzugriffsadministrator
Sie müssen die folgenden Versionen verwenden:
2015-07-01
oder höher, um eine Azure-Rolle zuzuweisen2018-09-01-preview
oder höher, um eine Azure-Rolle einem neuen Dienstprinzipal zuzuweisen
Weitere Informationen finden Sie unter API-Versionen von Azure RBAC REST-APIs.
Zuweisen einer Azure-Rolle
Um eine Rolle zuzuweisen, verwenden Sie die REST-API Assignments - Create (Rollenzuweisungen – Erstellen), und geben Sie den Sicherheitsprinzipal, die Rollendefinition und den Bereich an. Um diese API aufzurufen, müssen Sie Zugriff auf die Microsoft.Authorization/roleAssignments/write
Aktion haben, z . B. rollenbasierter Zugriffssteuerungsadministrator.
Verwenden Sie die REST API unter Rollendefinitionen – Auflisten oder lesen Sie Integrierte Rollen in Azure, um den Bezeichner für die zuzuweisende Rollendefinition zu ermitteln.
Verwenden Sie ein GUID-Tool, um einen eindeutigen Bezeichner zu generieren, der für den Bezeichner der Rollenzuweisung verwendet wird. Das Format des Bezeichners ist:
00000000-0000-0000-0000-000000000000
Beginnen Sie mit folgender Anforderung und folgendem Text:
PUT https://management.azure.com/{scope}/providers/Microsoft.Authorization/roleAssignments/{roleAssignmentId}?api-version=2022-04-01
{ "properties": { "roleDefinitionId": "/{scope}/providers/Microsoft.Authorization/roleDefinitions/{roleDefinitionId}", "principalId": "{principalId}" } }
Ersetzen Sie innerhalb des URIs {scope} durch den Bereich für die Rollenzuweisung.
Umfang Typ providers/Microsoft.Management/managementGroups/{groupId1}
Verwaltungsgruppe subscriptions/{subscriptionId1}
Subscription subscriptions/{subscriptionId1}/resourceGroups/myresourcegroup1
Resource group subscriptions/{subscriptionId1}/resourceGroups/myresourcegroup1/providers/microsoft.web/sites/mysite1
Ressource Im vorherigen Beispiel ist „microsoft.web“ ein Ressourcenanbieter, der auf eine App Service-Instanz verweist. Analog dazu können Sie einen beliebigen anderen Ressourcenanbieter verwenden und den Bereich angeben. Weitere Informationen finden Sie unter Azure-Ressourcenanbieter und -typen und unter unterstützten Vorgängen für Azure-Ressourcenanbieter.
Ersetzen Sie {roleAssignmentId} durch den GUID-Bezeichner der Rollenzuweisung.
Ersetzen Sie im Anforderungstext {scope} durch denselben Bereich wie im URI.
Ersetzen Sie {roleDefinitionId} durch den Bezeichner der Rollendefinition.
Ersetzen Sie {principalId} durch den Objektbezeichner des Benutzers, der Gruppe oder des Dienstprinzipals, der bzw. die der Rolle zugewiesen wird.
Mit der folgenden Anforderung und dem folgenden Text wird einem Benutzer im Abonnementbereich die Rolle Benutzer mit Leseberechtigung für Sicherungsfunktionen zugewiesen:
PUT https://management.azure.com/subscriptions/{subscriptionId1}/providers/Microsoft.Authorization/roleAssignments/{roleAssignmentId1}?api-version=2022-04-01
{
"properties": {
"roleDefinitionId": "/subscriptions/{subscriptionId1}/providers/Microsoft.Authorization/roleDefinitions/a795c7a0-d4a2-40c1-ae25-d81f01202912",
"principalId": "{objectId1}"
}
}
Nachfolgend sehen Sie ein Beispiel für die Ausgabe:
{
"properties": {
"roleDefinitionId": "/subscriptions/{subscriptionId1}/providers/Microsoft.Authorization/roleDefinitions/a795c7a0-d4a2-40c1-ae25-d81f01202912",
"principalId": "{objectId1}",
"principalType": "User",
"scope": "/subscriptions/{subscriptionId1}",
"condition": null,
"conditionVersion": null,
"createdOn": "2022-05-06T23:55:23.7679147Z",
"updatedOn": "2022-05-06T23:55:23.7679147Z",
"createdBy": null,
"updatedBy": "{updatedByObjectId1}",
"delegatedManagedIdentityResourceId": null,
"description": null
},
"id": "/subscriptions/{subscriptionId1}/providers/Microsoft.Authorization/roleAssignments/{roleAssignmentId1}",
"type": "Microsoft.Authorization/roleAssignments",
"name": "{roleAssignmentId1}"
}
Neuer Dienstprinzipal
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. eine neue verwaltete Identität erstellen und dann versuchen, diesem 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 berücksichtigen, verwenden Sie die Rollenzuweisungen: Erstellen der Rest-API, und legen Sie die principalType
-Eigenschaft auf ServicePrincipal
fest. Sie müssen auch apiVersion
auf 2018-09-01-preview
oder höher festlegen. 2022-04-01
ist die erste stabile Version.
PUT https://management.azure.com/{scope}/providers/Microsoft.Authorization/roleAssignments/{roleAssignmentId}?api-version=2022-04-01
{
"properties": {
"roleDefinitionId": "/{scope}/providers/Microsoft.Authorization/roleDefinitions/{roleDefinitionId}",
"principalId": "{principalId}",
"principalType": "ServicePrincipal"
}
}