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, moet u het volgende hebben:

U moet de volgende versies gebruiken:

  • 2015-07-01 of hoger om een Azure-rol toe te wijzen
  • 2018-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. Van de ingebouwde rollen krijgen alleen eigenaar en beheerder van gebruikerstoegang toegang tot deze actie.

  1. Gebruik de roldefinities - Rest API vermelden of zie ingebouwde rollen om de id op te halen voor de roldefinitie die u wilt toewijzen.

  2. Gebruik een GUID-hulpprogramma om een unieke id te genereren die wordt gebruikt voor de roltoewijzings-id. De id heeft de indeling: 00000000-0000-0000-0000-000000000000

  3. 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}"
      }
    }
    
  4. 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 Resource

    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.

  5. Vervang {roleAssignmentId} door de GUID-id van de roltoewijzing.

  6. Vervang {scope} in de aanvraagbody door hetzelfde bereik als in de URI.

  7. Vervang {roleDefinitionId} door de id van de roldefinitie.

  8. 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 instellen apiVersion op 2018-09-01-preview of later. 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"
  }
}

Volgende stappen