Tilldela Azure-roller med hjälp av REST-API:et

Rollbaserad åtkomstkontroll i Azure (Azure RBAC) är det auktoriseringssystem som du använder för att hantera åtkomst till Azure-resurser. Om du vill bevilja åtkomst tilldelar du roller till användare, grupper, tjänsthuvudnamn eller hanterade identiteter i ett visst omfång. Den här artikeln beskriver hur du tilldelar roller med hjälp av REST-API:et.

Förutsättningar

För att tilldela Azure-roller måste du ha:

Du måste använda följande versioner:

  • 2015-07-01 eller senare för att tilldela en Azure-roll
  • 2018-09-01-preview eller senare för att tilldela en Azure-roll till ett nytt huvudnamn för tjänsten

Mer information finns i API-versioner av Azure RBAC REST API:er.

Tilldela en Azure-roll

Om du vill tilldela en roll använder du Rolltilldelningar – Skapa REST API och anger säkerhetsobjekt, rolldefinition och omfång. Om du vill anropa det här API:et måste du ha åtkomst till åtgärden Microsoft.Authorization/roleAssignments/write , till exempel administratör för rollbaserad åtkomstkontroll.

  1. Använd ROLLdefinitioner – Lista REST API eller se Inbyggda roller för att hämta identifieraren för rolldefinitionen som du vill tilldela.

  2. Använd ett GUID-verktyg för att generera en unik identifierare som ska användas för rolltilldelningsidentifieraren. Identifieraren har formatet: 00000000-0000-0000-0000-000000000000

  3. Börja med följande begäran och brödtext:

    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. I URI:n ersätter du {scope} med omfånget för rolltilldelningen.

    Omfattning Typ
    providers/Microsoft.Management/managementGroups/{groupId1} Hanteringsgrupp
    subscriptions/{subscriptionId1} Prenumeration
    subscriptions/{subscriptionId1}/resourceGroups/myresourcegroup1 Resursgrupp
    subscriptions/{subscriptionId1}/resourceGroups/myresourcegroup1/providers/microsoft.web/sites/mysite1 Resurs

    I föregående exempel är microsoft.web en resursprovider som refererar till en App Service-instans. På samma sätt kan du använda andra resursproviders och ange omfånget. Mer information finns i Azure-resursprovidrar och typer och azure-resursprovideråtgärder som stöds.

  5. Ersätt {roleAssignmentId} med GUID-identifieraren för rolltilldelningen.

  6. I begärandetexten ersätter du {scope} med samma omfång som i URI:n.

  7. Ersätt {roleDefinitionId} med rolldefinitionsidentifieraren.

  8. Ersätt {principalId} med objektidentifieraren för användaren, gruppen eller tjänstens huvudnamn som ska tilldelas rollen.

Följande begäran och brödtext tilldelar rollen Backup Reader till en användare i prenumerationsomfånget:

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}"
  }
}

Följande visar ett exempel på utdata:

{
    "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}"
}

Nytt huvudnamn för tjänsten

Om du skapar ett nytt huvudnamn för tjänsten och omedelbart försöker tilldela tjänstens huvudnamn en roll kan rolltilldelningen misslyckas i vissa fall. Om du till exempel skapar en ny hanterad identitet och sedan försöker tilldela tjänstens huvudnamn en roll kan rolltilldelningen misslyckas. Orsaken till det här felet är sannolikt en replikeringsfördröjning. Tjänstens huvudnamn skapas i en region. Rolltilldelningen kan dock ske i en annan region som inte har replikerat tjänstens huvudnamn ännu.

För att hantera det här scenariot använder du Rolltilldelningar – Skapa REST API och anger principalType egenskapen till ServicePrincipal. Du måste också ange apiVersion till 2018-09-01-preview eller senare. 2022-04-01 är den första stabila versionen.

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"
  }
}

Nästa steg