Assegnare ruoli di Azure usando l'API REST

Il controllo degli accessi in base al ruolo di Azure è il sistema di autorizzazione che si usa per gestire l'accesso alle risorse di Azure. Per concedere l'accesso, assegnare ruoli a utenti, gruppi, entità servizio o identità gestite in un ambito specifico. Questo articolo descrive come assegnare ruoli usando l'API REST.

Prerequisiti

Per assegnare ruoli di Azure, è necessario disporre di:

È necessario usare le versioni seguenti:

  • 2015-07-01 o versione successiva per assegnare un ruolo di Azure
  • 2018-09-01-preview o versione successiva per assegnare un ruolo di Azure a una nuova entità servizio

Per altre informazioni, vedere Versioni API delle API REST di Controllo degli accessi in base al ruolo di Azure.

Assegnare un ruolo di Azure

Per assegnare un ruolo, usare Le assegnazioni di ruolo - Creare l'API REST e specificare l'entità di sicurezza, la definizione del ruolo e l'ambito. Per chiamare questa API, è necessario avere accesso all'azioneMicrosoft.Authorization/roleAssignments/write, ad esempio role based Controllo di accesso Amministrazione istrator.

  1. Usare l'API REST per l'elenco delle definizioni del ruolo o vedere Ruoli predefiniti per ottenere l'identificatore per la definizione del ruolo da assegnare.

  2. Usare uno strumento GUID per generare un identificatore univoco che verrà usato per l'identificatore dell'assegnazione di ruolo. Il formato dell'identificatore è: 00000000-0000-0000-0000-000000000000

  3. Iniziare con la richiesta e il corpo seguenti:

    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. All'interno dell'URI sostituire {scope} con l'ambito per l'assegnazione di ruolo.

    Ambito Type
    providers/Microsoft.Management/managementGroups/{groupId1} Gruppo di gestione
    subscriptions/{subscriptionId1} Subscription
    subscriptions/{subscriptionId1}/resourceGroups/myresourcegroup1 Gruppo di risorse
    subscriptions/{subscriptionId1}/resourceGroups/myresourcegroup1/providers/microsoft.web/sites/mysite1 Resource

    Nell'esempio precedente microsoft.web è un provider di risorse che fa riferimento a un'istanza di servizio app. Analogamente, è possibile usare qualsiasi altro provider di risorse e specificare l'ambito. Per altre informazioni, vedere Provider e tipi di risorse di Azure e operazioni supportate del provider di risorse di Azure.

  5. Sostituire {roleAssignmentId} con l'identificatore GUID dell'assegnazione di ruolo.

  6. All'interno del corpo della richiesta sostituire {scope} con lo stesso ambito dell'URI.

  7. Sostituire {roleDefinitionId} con l'identificatore della definizione del ruolo.

  8. Sostituire {principalId} con l'identificatore di oggetto dell'utente, del gruppo o dell'entità servizio a cui verrà assegnato il ruolo.

La richiesta e il corpo seguenti assegnano il ruolo lettore di backup a un utente nell'ambito della sottoscrizione:

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

Il testo seguente è un esempio di output:

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

Nuova entità servizio

Se si crea una nuova entità servizio e si prova ad assegnare subito un ruolo a tale entità, in alcuni casi l'assegnazione di ruolo può avere esito negativo. Ad esempio, se si crea una nuova identità gestita e quindi si tenta di assegnare un ruolo a tale entità servizio, l'assegnazione di ruolo potrebbe non riuscire. Il motivo di questo errore è probabilmente un ritardo di replica. L'entità servizio viene creata in un'area. L'assegnazione di ruolo potrebbe tuttavia verificarsi in un'area diversa che non ha ancora replicato l'entità servizio.

Per risolvere questo scenario, usare Le assegnazioni di ruolo - Creare l'API REST e impostare la principalType proprietà su ServicePrincipal. È anche necessario impostare su apiVersion 2018-09-01-preview o versione successiva. 2022-04-01 è la prima versione stabile.

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

Passaggi successivi