Azure-rollen toewijzen met behulp van de REST API
Op rollen gebaseerd toegangsbeheer van Azure (Azure RBAC) is het autorisatiesysteem om de toegang tot Azure-resources te beheren. Als u toegang wilt verlenen, wijst u rollen toe aan gebruikers, groepen, service-principals of beheerde identiteiten voor een bepaald bereik. In dit artikel wordt beschreven hoe u rollen toewijst met behulp van de REST API.
Vereisten
Als u Azure-rollen wilt toewijzen, hebt u het volgende nodig:
Microsoft.Authorization/roleAssignments/write
machtigingen, zoals op rollen gebaseerd toegangsbeheer Beheer istrator of gebruikerstoegang Beheer istrator
U moet de volgende versies gebruiken:
2015-07-01
of hoger om een Azure-rol toe te wijzen2018-09-01-preview
of hoger om een Azure-rol toe te wijzen aan een nieuwe service-principal
Zie API-versies van Azure RBAC REST API's voor meer informatie.
Een Azure-rol toewijzen
Als u een rol wilt toewijzen, gebruikt u de roltoewijzingen - REST API maken en geeft u de beveiligingsprincipaal, roldefinitie en bereik op. Als u deze API wilt aanroepen, moet u toegang hebben tot de Microsoft.Authorization/roleAssignments/write
actie, zoals op rollen gebaseerd toegangsbeheer Beheer istrator.
Gebruik de roldefinities - Lijst met REST API's of zie ingebouwde rollen om de id op te halen voor de roldefinitie die u wilt toewijzen.
Gebruik een GUID-hulpprogramma om een unieke id te genereren die wordt gebruikt voor de roltoewijzings-id. De id heeft de volgende indeling:
00000000-0000-0000-0000-000000000000
Begin met de volgende aanvraag en hoofdtekst:
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}" } }
Vervang {scope} in de URI door het bereik voor de roltoewijzing.
Bereik Type providers/Microsoft.Management/managementGroups/{groupId1}
Beheergroep subscriptions/{subscriptionId1}
Abonnement subscriptions/{subscriptionId1}/resourceGroups/myresourcegroup1
Resourcegroep subscriptions/{subscriptionId1}/resourceGroups/myresourcegroup1/providers/microsoft.web/sites/mysite1
Bron In het vorige voorbeeld is microsoft.web een resourceprovider die verwijst naar een App Service-exemplaar. Op dezelfde manier kunt u alle andere resourceproviders gebruiken en het bereik opgeven. Zie Azure-resourceproviders en -typen en ondersteunde bewerkingen van Azure-resourceproviders voor meer informatie.
Vervang {roleAssignmentId} door de GUID-id van de roltoewijzing.
Vervang {scope} in de aanvraagbody door hetzelfde bereik als in de URI.
Vervang {roleDefinitionId} door de roldefinitie-id.
Vervang {principalId} door de object-id van de gebruiker, groep of service-principal waaraan de rol wordt toegewezen.
Met de volgende aanvraag en hoofdtekst wordt de rol Back-uplezer toegewezen aan een gebruiker binnen het abonnementsbereik:
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}"
}
}
Hieronder ziet u een voorbeeld van de uitvoer:
{
"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}"
}
Nieuwe service-principal
Als u een nieuwe service-principal maakt en onmiddellijk probeert een rol toe te wijzen aan die service-principal, kan die roltoewijzing in sommige gevallen mislukken. Als u bijvoorbeeld een nieuwe beheerde identiteit maakt en vervolgens probeert een rol toe te wijzen aan die service-principal, kan de roltoewijzing mislukken. De reden voor deze fout is waarschijnlijk een replicatievertraging. De service-principal wordt in één regio gemaakt; De roltoewijzing kan echter plaatsvinden in een andere regio die de service-principal nog niet heeft gerepliceerd.
Als u dit scenario wilt aanpakken, gebruikt u de roltoewijzingen - REST API maken en stelt u de principalType
eigenschap in op ServicePrincipal
. U moet ook de apiVersion
op 2018-09-01-preview
of later instellen. 2022-04-01
is de eerste stabiele versie.
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"
}
}