Créer ou mettre à jour des rôles personnalisés Azure à l’aide de l’API REST

Si les rôles intégrés Azure ne répondent pas aux besoins spécifiques de votre organisation, vous pouvez créer vos propres rôles personnalisés. Cet article explique comment lister, créer, mettre à jour ou supprimer des rôles personnalisés à l’aide de l’API REST.

Prérequis

Vous devez utiliser la version suivante :

  • 2015-07-01 ou ultérieur

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

Répertorier toutes les définitions de rôle personnalisées

Pour répertorier toutes les définitions de rôle personnalisées dans un locataire, utilisez l’API REST de liste des définitions de rôles.

  • L’exemple suivant répertorie toutes les définitions de rôle personnalisées dans un locataire :

    Requête

    GET https://management.azure.com/providers/Microsoft.Authorization/roleDefinitions?$filter=type+eq+'CustomRole'&api-version=2022-04-01
    

    Response

    {
        "value": [
            {
                "properties": {
                    "roleName": "Billing Reader Plus",
                    "type": "CustomRole",
                    "description": "Read billing data and download invoices",
                    "assignableScopes": [
                        "/subscriptions/473a4f86-11e3-48cb-9358-e13c220a2f15"
                    ],
                    "permissions": [
                        {
                            "actions": [
                                "Microsoft.Authorization/*/read",
                                "Microsoft.Billing/*/read",
                                "Microsoft.Commerce/*/read",
                                "Microsoft.Consumption/*/read",
                                "Microsoft.Management/managementGroups/read",
                                "Microsoft.CostManagement/*/read",
                                "Microsoft.Billing/invoices/download/action",
                                "Microsoft.CostManagement/exports/*"
                            ],
                            "notActions": [
                                "Microsoft.CostManagement/exports/delete"
                            ],
                            "dataActions": [],
                            "notDataActions": []
                        }
                    ],
                    "createdOn": "2021-05-22T21:57:23.5764138Z",
                    "updatedOn": "2021-05-22T21:57:23.5764138Z",
                    "createdBy": "68f66d4c-c0eb-4009-819b-e5315d677d70",
                    "updatedBy": "68f66d4c-c0eb-4009-819b-e5315d677d70"
                },
                "id": "/providers/Microsoft.Authorization/roleDefinitions/17adabda-4bf1-4f4e-8c97-1f0cab6dea1c",
                "type": "Microsoft.Authorization/roleDefinitions",
                "name": "17adabda-4bf1-4f4e-8c97-1f0cab6dea1c"
            }
        ]
    }
    

Répertorier toutes les définitions de rôle personnalisées dans une étendue

Pour répertorier les définitions de rôle personnalisées dans une étendue, utilisez l’API REST de liste des définitions de rôles.

  1. Commencez par la requête suivante :

    GET https://management.azure.com/{scope}/providers/Microsoft.Authorization/roleDefinitions?$filter={filter}&api-version=2022-04-01
    
  2. Dans l’URI, remplacez {scope} par l’étendue dont vous souhaitez lister les rôles.

    Étendue Type
    subscriptions/{subscriptionId1} Abonnement
    subscriptions/{subscriptionId1}/resourceGroups/{resourceGroup1} Resource group
    subscriptions/{subscriptionId1}/resourceGroups/{resourceGroup1}/providers/Microsoft.Web/sites/{site1} Ressource
    providers/Microsoft.Management/managementGroups/{groupId1} Groupe d’administration
  3. Remplacez {filter} par le type de rôle.

    Filter Description
    $filter=type+eq+'CustomRole' Filtre basé sur le type CustomRole

    L’exemple suivant répertorie toutes les définitions de rôle personnalisées dans un abonnement :

    Requête

    GET https://management.azure.com/subscriptions/473a4f86-11e3-48cb-9358-e13c220a2f15/providers/Microsoft.Authorization/roleDefinitions?$filter=type+eq+'CustomRole'&api-version=2022-04-01
    

    Response

    {
        "value": [
            {
                "properties": {
                    "roleName": "Billing Reader Plus",
                    "type": "CustomRole",
                    "description": "Read billing data and download invoices",
                    "assignableScopes": [
                        "/subscriptions/473a4f86-11e3-48cb-9358-e13c220a2f15"
                    ],
                    "permissions": [
                        {
                            "actions": [
                                "Microsoft.Authorization/*/read",
                                "Microsoft.Billing/*/read",
                                "Microsoft.Commerce/*/read",
                                "Microsoft.Consumption/*/read",
                                "Microsoft.Management/managementGroups/read",
                                "Microsoft.CostManagement/*/read",
                                "Microsoft.Billing/invoices/download/action",
                                "Microsoft.CostManagement/exports/*"
                            ],
                            "notActions": [
                                "Microsoft.CostManagement/exports/delete"
                            ],
                            "dataActions": [],
                            "notDataActions": []
                        }
                    ],
                    "createdOn": "2021-05-22T21:57:23.5764138Z",
                    "updatedOn": "2021-05-22T21:57:23.5764138Z",
                    "createdBy": "68f66d4c-c0eb-4009-819b-e5315d677d70",
                    "updatedBy": "68f66d4c-c0eb-4009-819b-e5315d677d70"
                },
                "id": "/subscriptions/473a4f86-11e3-48cb-9358-e13c220a2f15/providers/Microsoft.Authorization/roleDefinitions/17adabda-4bf1-4f4e-8c97-1f0cab6dea1c",
                "type": "Microsoft.Authorization/roleDefinitions",
                "name": "17adabda-4bf1-4f4e-8c97-1f0cab6dea1c"
            }
        ]
    }
    

Lister une définition de rôle personnalisé par nom

Pour obtenir des informations sur une définition de rôle personnalisée par son nom d’affichage, utilisez les définitions de rôle - Obtenir l’API REST.

  1. Commencez par la requête suivante :

    GET https://management.azure.com/{scope}/providers/Microsoft.Authorization/roleDefinitions?$filter={filter}&api-version=2022-04-01
    
  2. Dans l’URI, remplacez {scope} par l’étendue dont vous souhaitez lister les rôles.

    Étendue Type
    subscriptions/{subscriptionId1} Abonnement
    subscriptions/{subscriptionId1}/resourceGroups/{resourceGroup1} Resource group
    subscriptions/{subscriptionId1}/resourceGroups/{resourceGroup1}/providers/Microsoft.Web/sites/{site1} Ressource
    providers/Microsoft.Management/managementGroups/{groupId1} Groupe d’administration
  3. Remplacez {filter} par le nom d’affichage du rôle.

    Filter Description
    $filter=roleName+eq+'{roleDisplayName}' Utilisez la forme codée de l’URL du nom d’affichage exact du rôle. Par exemple, $filter=roleName+eq+'Virtual%20Machine%20Contributor'.

    L’exemple suivant répertorie une définition de rôle personnalisée nommée Billing Reader Plus dans un abonnement :

    Requête

    GET https://management.azure.com/subscriptions/473a4f86-11e3-48cb-9358-e13c220a2f15/providers/Microsoft.Authorization/roleDefinitions?$filter=roleName+eq+'Billing Reader Plus'&api-version=2022-04-01
    

    Response

    {
        "value": [
            {
                "properties": {
                    "roleName": "Billing Reader Plus",
                    "type": "CustomRole",
                    "description": "Read billing data and download invoices",
                    "assignableScopes": [
                        "/subscriptions/473a4f86-11e3-48cb-9358-e13c220a2f15"
                    ],
                    "permissions": [
                        {
                            "actions": [
                                "Microsoft.Authorization/*/read",
                                "Microsoft.Billing/*/read",
                                "Microsoft.Commerce/*/read",
                                "Microsoft.Consumption/*/read",
                                "Microsoft.Management/managementGroups/read",
                                "Microsoft.CostManagement/*/read",
                                "Microsoft.Billing/invoices/download/action",
                                "Microsoft.CostManagement/exports/*"
                            ],
                            "notActions": [
                                "Microsoft.CostManagement/exports/delete"
                            ],
                            "dataActions": [],
                            "notDataActions": []
                        }
                    ],
                    "createdOn": "2021-05-22T21:57:23.5764138Z",
                    "updatedOn": "2021-05-22T21:57:23.5764138Z",
                    "createdBy": "68f66d4c-c0eb-4009-819b-e5315d677d70",
                    "updatedBy": "68f66d4c-c0eb-4009-819b-e5315d677d70"
                },
                "id": "/subscriptions/473a4f86-11e3-48cb-9358-e13c220a2f15/providers/Microsoft.Authorization/roleDefinitions/17adabda-4bf1-4f4e-8c97-1f0cab6dea1c",
                "type": "Microsoft.Authorization/roleDefinitions",
                "name": "17adabda-4bf1-4f4e-8c97-1f0cab6dea1c"
            }
        ]
    }
    

Lister une définition de rôle personnalisé par ID

Pour obtenir des informations sur une définition de rôle personnalisée par son identificateur unique, utilisez les définitions de rôle - Obtenir l’API REST.

  1. Utilisez l’API REST Définitions de rôles – Lister pour obtenir l’identificateur GUID du rôle.

  2. Commencez par la requête suivante :

    GET https://management.azure.com/{scope}/providers/Microsoft.Authorization/roleDefinitions/{roleDefinitionId}?api-version=2022-04-01
    
  3. Dans l’URI, remplacez {scope} par l’étendue dont vous souhaitez lister les rôles.

    Étendue Type
    subscriptions/{subscriptionId1} Abonnement
    subscriptions/{subscriptionId1}/resourceGroups/{resourceGroup1} Resource group
    subscriptions/{subscriptionId1}/resourceGroups/{resourceGroup1}/providers/Microsoft.Web/sites/{site1} Ressource
    providers/Microsoft.Management/managementGroups/{groupId1} Groupe d’administration
  4. Remplacez {roleDefinitionId} par l’identificateur GUID de la définition du rôle.

    L’exemple suivant répertorie une définition de rôle personnalisée avec l’identificateur 17adabda-4bf1-4f4e-8c97-1f0cab6dea1c dans un abonnement :

    Requête

    GET https://management.azure.com/subscriptions/473a4f86-11e3-48cb-9358-e13c220a2f15/providers/Microsoft.Authorization/roleDefinitions/17adabda-4bf1-4f4e-8c97-1f0cab6dea1c?api-version=2022-04-01
    

    Response

    {
        "properties": {
            "roleName": "Billing Reader Plus",
            "type": "CustomRole",
            "description": "Read billing data and download invoices",
            "assignableScopes": [
                "/subscriptions/473a4f86-11e3-48cb-9358-e13c220a2f15"
            ],
            "permissions": [
                {
                    "actions": [
                        "Microsoft.Authorization/*/read",
                        "Microsoft.Billing/*/read",
                        "Microsoft.Commerce/*/read",
                        "Microsoft.Consumption/*/read",
                        "Microsoft.Management/managementGroups/read",
                        "Microsoft.CostManagement/*/read",
                        "Microsoft.Billing/invoices/download/action",
                        "Microsoft.CostManagement/exports/*"
                    ],
                    "notActions": [
                        "Microsoft.CostManagement/exports/delete"
                    ],
                    "dataActions": [],
                    "notDataActions": []
                }
            ],
            "createdOn": "2021-05-22T21:57:23.5764138Z",
            "updatedOn": "2021-05-22T21:57:23.5764138Z",
            "createdBy": "68f66d4c-c0eb-4009-819b-e5315d677d70",
            "updatedBy": "68f66d4c-c0eb-4009-819b-e5315d677d70"
        },
        "id": "/subscriptions/473a4f86-11e3-48cb-9358-e13c220a2f15/providers/Microsoft.Authorization/roleDefinitions/17adabda-4bf1-4f4e-8c97-1f0cab6dea1c",
        "type": "Microsoft.Authorization/roleDefinitions",
        "name": "17adabda-4bf1-4f4e-8c97-1f0cab6dea1c"
    }
    

Créer un rôle personnalisé

Pour créer un rôle personnalisé, utilisez l’API REST Définitions de rôles – Créer ou mettre à jour. Pour appeler cette API, vous devez être connecté avec un rôle utilisateur qui dispose de l’autorisation Microsoft.Authorization/roleDefinitions/write sur tous les assignableScopes. Parmi les rôles prédéfinis, seuls les rôles Propriétaire et Administrateur de l’accès utilisateur disposent de cette autorisation.

  1. Consultez la liste des opérations de fournisseur de ressources disponibles pour créer les autorisations de votre rôle personnalisé.

  2. Utilisez un outil GUID pour générer un identificateur unique qui servira d’identificateur de rôle personnalisé. 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/roleDefinitions/{roleDefinitionId}?api-version=2022-04-01
    
    {
      "name": "{roleDefinitionId}",
      "properties": {
        "roleName": "",
        "description": "",
        "type": "CustomRole",
        "permissions": [
          {
            "actions": [
    
            ],
            "notActions": [
    
            ]
          }
        ],
        "assignableScopes": [
          "/subscriptions/{subscriptionId1}",
          "/subscriptions/{subscriptionId2}",
          "/subscriptions/{subscriptionId1}/resourceGroups/{resourceGroup1}",
          "/subscriptions/{subscriptionId2}/resourceGroups/{resourceGroup2}",
          "/providers/Microsoft.Management/managementGroups/{groupId1}"
        ]
      }
    }
    
  4. Dans l’URI, remplacez {scope} par le premier élément assignableScopes du rôle personnalisé.

    Étendue Type
    subscriptions/{subscriptionId1} Abonnement
    subscriptions/{subscriptionId1}/resourceGroups/{resourceGroup1} Resource group
    providers/Microsoft.Management/managementGroups/{groupId1} Groupe d’administration
  5. Remplacez {roleDefinitionId} par l’identificateur GUID du rôle personnalisé.

  6. Dans le corps de la demande, remplacez {roleDefinitionId} par l’identificateur GUID.

  7. Si assignableScopes est un abonnement ou un groupe de ressources, remplacez les instances {subscriptionId} ou {resourceGroup} par vos identificateurs.

  8. Si assignableScopes est un groupe d’administration, remplacez l’instance {groupId} par l’identificateur de votre groupe d’administration.

  9. Dans la propriété actions, ajoutez les actions autorisées par le rôle.

  10. Dans la propriété notActions, ajoutez les actions exclues des actions autorisées.

  11. Dans les propriétés roleName et description, spécifiez un nom de rôle unique et une description. Pour plus d’informations sur les propriétés, consultez Rôles personnalisés Azure.

    Voici un exemple de corps de demande :

    {
      "name": "88888888-8888-8888-8888-888888888888",
      "properties": {
        "roleName": "Virtual Machine Operator",
        "description": "Can monitor and restart virtual machines.",
        "type": "CustomRole",
        "permissions": [
          {
            "actions": [
              "Microsoft.Storage/*/read",
              "Microsoft.Network/*/read",
              "Microsoft.Compute/*/read",
              "Microsoft.Compute/virtualMachines/start/action",
              "Microsoft.Compute/virtualMachines/restart/action",
              "Microsoft.Authorization/*/read",
              "Microsoft.ResourceHealth/availabilityStatuses/read",
              "Microsoft.Resources/subscriptions/resourceGroups/read",
              "Microsoft.Insights/alertRules/*",
              "Microsoft.Support/*"
            ],
            "notActions": []
          }
        ],
        "assignableScopes": [
          "/subscriptions/00000000-0000-0000-0000-000000000000",
          "/providers/Microsoft.Management/managementGroups/marketing-group"
        ]
      }
    }
    

Mettre à jour un rôle personnalisé

Pour mettre à jour un rôle personnalisé, utilisez l’API REST Définitions de rôles – Créer ou mettre à jour. Pour appeler cette API, vous devez être connecté avec un utilisateur affecté à un rôle disposant de l’autorisation Microsoft.Authorization/roleDefinitions/write sur tous les assignableScopesutilisateurs, tels que l’accès utilisateur Administration istrator.

  1. Utilisez l’API REST Définitions de rôles – Lister ou Définitions de rôles – Obtenir pour obtenir des informations sur le rôle personnalisé. Pour plus d’informations, consultez la section Répertorier toutes les définitions de rôle personnalisées .

  2. Commencez par la requête suivante :

    PUT https://management.azure.com/{scope}/providers/Microsoft.Authorization/roleDefinitions/{roleDefinitionId}?api-version=2022-04-01
    
  3. Dans l’URI, remplacez {scope} par le premier élément assignableScopes du rôle personnalisé.

    Étendue Type
    subscriptions/{subscriptionId1} Abonnement
    subscriptions/{subscriptionId1}/resourceGroups/{resourceGroup1} Resource group
    providers/Microsoft.Management/managementGroups/{groupId1} Groupe d’administration
  4. Remplacez {roleDefinitionId} par l’identificateur GUID du rôle personnalisé.

  5. En fonction des informations sur le rôle personnalisé, créez un corps de demande au format suivant :

    {
      "name": "{roleDefinitionId}",
      "properties": {
        "roleName": "",
        "description": "",
        "type": "CustomRole",
        "permissions": [
          {
            "actions": [
    
            ],
            "notActions": [
    
            ]
          }
        ],
        "assignableScopes": [
          "/subscriptions/{subscriptionId1}",
          "/subscriptions/{subscriptionId2}",
          "/subscriptions/{subscriptionId1}/resourceGroups/{resourceGroup1}",
          "/subscriptions/{subscriptionId2}/resourceGroups/{resourceGroup2}",
          "/providers/Microsoft.Management/managementGroups/{groupId1}"
        ]
      }
    }
    
  6. Mettez à jour le corps de la demande avec les modifications que vous souhaitez apporter au rôle personnalisé.

    Voici un exemple de corps de demande avec ajout d’une nouvelle action de paramètres de diagnostic :

    {
      "name": "88888888-8888-8888-8888-888888888888",
      "properties": {
        "roleName": "Virtual Machine Operator",
        "description": "Can monitor and restart virtual machines.",
        "type": "CustomRole",
        "permissions": [
          {
            "actions": [
              "Microsoft.Storage/*/read",
              "Microsoft.Network/*/read",
              "Microsoft.Compute/*/read",
              "Microsoft.Compute/virtualMachines/start/action",
              "Microsoft.Compute/virtualMachines/restart/action",
              "Microsoft.Authorization/*/read",
              "Microsoft.ResourceHealth/availabilityStatuses/read",
              "Microsoft.Resources/subscriptions/resourceGroups/read",
              "Microsoft.Insights/alertRules/*",
              "Microsoft.Insights/diagnosticSettings/*",
              "Microsoft.Support/*"
            ],
            "notActions": []
          }
        ],
        "assignableScopes": [
          "/subscriptions/00000000-0000-0000-0000-000000000000",
          "/providers/Microsoft.Management/managementGroups/marketing-group"
        ]
      }
    }
    

Supprimer un rôle personnalisé

Pour supprimer un rôle personnalisé, utilisez l’API REST Définitions de rôles – Supprimer. Pour appeler cette API, vous devez être connecté avec un rôle utilisateur qui dispose de l’autorisation Microsoft.Authorization/roleDefinitions/delete sur tous les assignableScopes. Parmi les rôles prédéfinis, seuls les rôles Propriétaire et Administrateur de l’accès utilisateur disposent de cette autorisation.

  1. Supprimez toutes les attributions de rôles qui utilisent le rôle personnalisé. Pour plus d’informations, consultez Rechercher des attributions de rôles pour supprimer un rôle personnalisé.

  2. Utilisez l’API REST Définitions de rôles – Lister ou Définitions de rôles – Obtenir pour obtenir l’identificateur GUID du rôle personnalisé. Pour plus d’informations, consultez la section Répertorier toutes les définitions de rôle personnalisées .

  3. Commencez par la requête suivante :

    DELETE https://management.azure.com/{scope}/providers/Microsoft.Authorization/roleDefinitions/{roleDefinitionId}?api-version=2022-04-01
    
  4. Dans l’URI, remplacez {scope} par l’étendue dont vous souhaitez supprimer le rôle personnalisé.

    Étendue Type
    subscriptions/{subscriptionId1} Abonnement
    subscriptions/{subscriptionId1}/resourceGroups/{resourceGroup1} Resource group
    providers/Microsoft.Management/managementGroups/{groupId1} Groupe d’administration
  5. Remplacez {roleDefinitionId} par l’identificateur GUID du rôle personnalisé.

Étapes suivantes