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.
Commencez par la requête suivante :
GET https://management.azure.com/{scope}/providers/Microsoft.Authorization/roleDefinitions?$filter={filter}&api-version=2022-04-01
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 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.
Commencez par la requête suivante :
GET https://management.azure.com/{scope}/providers/Microsoft.Authorization/roleDefinitions?$filter={filter}&api-version=2022-04-01
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 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.
Utilisez l’API REST Définitions de rôles – Lister pour obtenir l’identificateur GUID du rôle.
Commencez par la requête suivante :
GET https://management.azure.com/{scope}/providers/Microsoft.Authorization/roleDefinitions/{roleDefinitionId}?api-version=2022-04-01
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 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.
Consultez la liste des opérations de fournisseur de ressources disponibles pour créer les autorisations de votre rôle personnalisé.
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
.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}" ] } }
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 Remplacez {roleDefinitionId} par l’identificateur GUID du rôle personnalisé.
Dans le corps de la demande, remplacez {roleDefinitionId} par l’identificateur GUID.
Si
assignableScopes
est un abonnement ou un groupe de ressources, remplacez les instances {subscriptionId} ou {resourceGroup} par vos identificateurs.Si
assignableScopes
est un groupe d’administration, remplacez l’instance {groupId} par l’identificateur de votre groupe d’administration.Dans la propriété
actions
, ajoutez les actions autorisées par le rôle.Dans la propriété
notActions
, ajoutez les actions exclues desactions
autorisées.Dans les propriétés
roleName
etdescription
, 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 assignableScopes
utilisateurs, tels que l’accès utilisateur Administration istrator.
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 .
Commencez par la requête suivante :
PUT https://management.azure.com/{scope}/providers/Microsoft.Authorization/roleDefinitions/{roleDefinitionId}?api-version=2022-04-01
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 Remplacez {roleDefinitionId} par l’identificateur GUID du rôle personnalisé.
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}" ] } }
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.
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é.
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 .
Commencez par la requête suivante :
DELETE https://management.azure.com/{scope}/providers/Microsoft.Authorization/roleDefinitions/{roleDefinitionId}?api-version=2022-04-01
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 Remplacez {roleDefinitionId} par l’identificateur GUID du rôle personnalisé.