Créer ou mettre à jour des rôles personnalisés Azure à l’aide de l’API REST
Article 01.12.2023
5 contributeurs
Commentaires
Dans cet article
Prérequis
Répertorier toutes les définitions de rôle personnalisées
Répertorier toutes les définitions de rôle personnalisées dans une étendue
Lister une définition de rôle personnalisé par nom
Lister une définition de rôle personnalisé par ID
Créer un rôle personnalisé
Mettre à jour un rôle personnalisé
Supprimer un rôle personnalisé
Étapes suivantes
Afficher 5 de plus
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.
Vous devez utiliser la version suivante :
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.
Développer le tableau
É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.
Développer le tableau
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.
Développer le tableau
É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.
Développer le tableau
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.
Développer le tableau
É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é.
Développer le tableau
É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 des actions
autorisées.
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 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é.
Développer le tableau
É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é.
Développer le tableau
É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é.