Partager via


Attribuer des rôles Azure à l’aide de l’API REST

Le contrôle d’accès en fonction du rôle Azure (Azure RBAC) est le système d’autorisation que vous utilisez pour gérer l’accès aux ressources Azure. Pour accorder l’accès, vous devez attribuer des rôles aux utilisateurs, aux groupes, aux principaux de service ou aux identités managées avec une étendue particulière. Cet article explique comment attribuer des rôles à l’aide de l’API REST.

Prérequis

Pour attribuer des rôles Azure, vous devez disposer de :

Vous devez utiliser les versions suivantes :

  • 2015-07-01 ou version ultérieure pour attribuer un rôle Azure
  • 2018-09-01-preview ou version ultérieure pour attribuer un rôle Azure à un nouveau principal de service

Pour plus d’informations, consultez Versions des API REST Azure RBAC.

Affecter un rôle Azure

Pour affecter un rôle, utilisez l’API REST Créer des attributions de rôles et spécifiez le principal de sécurité, la définition de rôle et l’étendue. Pour appeler cette API, vous devez avoir accès à l’actionMicrosoft.Authorization/roleAssignments/write, comme le contrôle d’accès en fonction du rôle Administration istrator.

  1. Utilisez l’API REST Liste de définitions de rôles ou consultez Rôles intégrés pour obtenir l’identificateur de la définition de rôle que vous souhaitez assigner.

  2. Utilisez un outil GUID pour générer un identificateur unique qui servira d’identificateur d’attribution de rôle. Cet identificateur est au format : 00000000-0000-0000-0000-000000000000.

  3. Commencez par la requête et le corps suivants :

    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. Dans l’URI, remplacez {scope} par l’étendue de l’attribution de rôle.

    Étendue Type
    providers/Microsoft.Management/managementGroups/{groupId1} Groupe d’administration
    subscriptions/{subscriptionId1} Abonnement
    subscriptions/{subscriptionId1}/resourceGroups/myresourcegroup1 Resource group
    subscriptions/{subscriptionId1}/resourceGroups/myresourcegroup1/providers/microsoft.web/sites/mysite1 Ressource

    Dans l’exemple précédent, microsoft.web est un fournisseur de ressources qui fait référence à une instance App Service. De la même façon, vous pouvez utiliser tout autre fournisseur de ressources et spécifier l’étendue. Pour plus d’informations, consultez Fournisseurs et types de ressources Azure et Opérations du fournisseur de ressources Azure prises en charge.

  5. Remplacez {roleAssignmentId} par l’identificateur GUID de l’attribution de rôle.

  6. Dans le corps de la demande, remplacez {scope} par la même étendue que dans l’URI.

  7. Remplacez {roleDefinitionId} par l’identificateur de définition de rôle.

  8. Remplacez {principalId} par l’identificateur d’objet de l’utilisateur, du groupe ou du principal du service auquel le rôle sera attribué.

La requête et le corps suivants attribuent le rôle Lecteur de sauvegarde à un utilisateur dans l’étendue de l’abonnement :

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

Voici un exemple de sortie :

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

Nouveau principal de service

Dans certains cas, si vous créez un principal de service et que vous tentez immédiatement de lui attribuer un rôle, cette attribution peut échouer. Par exemple, si vous créez une identité managée et que vous tentez d’attribuer un rôle à ce principal de service, l’attribution de rôle peut échouer. Cet échec est souvent lié au délai de réplication. Le principal du service est créé dans une région. Toutefois, l’attribution de rôle peut s’effectuer dans une autre région, qui n’a pas encore répliqué le principal de service.

Pour résoudre ce scénario, utilisez l’API REST Role Assignments - Create et affectez la valeur ServicePrincipal à la propriété principalType. Vous devez également définir apiVersion sur 2018-09-01-preview ou une version ultérieure. 2022-04-01 est la première version stable.

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

Étapes suivantes