Que sont les rôles personnalisés dans Azure ?

Effectué

Parfois, les rôles intégrés n’accordent pas le niveau d’accès précis dont vous avez besoin. Les rôles personnalisés vous permettent de définir des rôles qui répondent aux besoins spécifiques de votre organisation. Vous pouvez attribuer les rôles Azure personnalisés que vous créez à des utilisateurs, des groupes et des principaux de service dans l’étendue d’un abonnement, d’un groupe de ressources ou d’une ressource.

Dans cette unité, vous découvrez les rôles personnalisés du contrôle d’accès en fonction du rôle (RBAC) Azure.

Rôles Microsoft Entra et Azure

Les rôles Microsoft Entra et les rôles Azure sont souvent confondus quand vous utilisez Azure pour la première fois. Les rôles Microsoft Entra fournissent le mécanisme permettant de gérer les autorisations sur des ressources Microsoft Entra, comme les comptes d’utilisateur et les mots de passe. Les rôles Azure offrent un large éventail de fonctionnalités pour la gestion des ressources Azure comme les machines virtuelles à un niveau détaillé.

Diagram that shows relationship of Azure roles and Microsoft Entra roles.

Le tableau suivant montre les différences subtiles entre la configuration et la gestion des deux :

Rôles Azure Rôles Microsoft Entra
Gérer l’accès aux ressources Azure, comme les machines virtuelles, le stockage, les réseaux, etc. Gérer l’accès aux ressources Microsoft Entra, comme les comptes d’utilisateur et les mots de passe
Plusieurs niveaux d’étendue (groupe d’administration, abonnement, groupe de ressources, ressource) Étendue seulement au niveau du locataire
Informations des rôles accessibles via le portail Azure, Azure CLI, Azure PowerShell, les modèles Azure Resource Manager, API REST Informations sur les rôles accessibles dans le portail d’administration Azure, le centre d’administration Microsoft 365, Microsoft Graph, Microsoft Graph PowerShell

Pour notre scénario, nous avons besoin d’un rôle personnalisé afin de gérer les machines virtuelles Azure au niveau de l’abonnement. Nous devons donc utiliser des rôles personnalisés dans Azure RBAC.

Attribution et étendue des rôles personnalisés

Les utilisateurs avec les rôles Administrateur de l’accès utilisateur et Propriétaire peuvent créer ou attribuer des rôles personnalisés dans Azure RBAC.

Vous pouvez attribuer des rôles personnalisés à :

Principal de sécurité Récapitulatif
Utilisateur Une personne qui a un profil dans Microsoft Entra ID
Groupe Un ensemble d’utilisateurs créés dans Microsoft Entra ID
Principaux de service Une identité de sécurité utilisée par des applications ou des services pour accéder à des ressources Azure spécifiques
Identité managée Une identité dans Microsoft Entra ID qui est gérée automatiquement par Azure

Vous pouvez délimiter l’attribution et les autorisations associées à différents niveaux dans Azure. Les différentes étendues sont :

  • Abonnement
  • Groupe de ressources
  • Ressource individuelle

Diagram that shows the scopes for role assignment and their relationship to each other.

Définition et structure des rôles

Une définition de rôle personnalisé se décompose en une collection de différentes autorisations. Chaque définition détaille les opérations autorisées, par exemple lire, écrire et supprimer. La définition est formée selon ces structures :

{
  "Name": "",
  "IsCustom": true,
  "Description": "",
  "Actions": [],
  "NotActions": [],
  "DataActions": [],
  "NotDataActions": [],
  "AssignableScopes": [
    "/subscriptions/{subscriptionId1}"
  ]
}

L’exemple suivant montre la définition de rôle pour le rôle Contributeur :

{
  "Name": "Contributor",
  "Id": "b24988ac-6180-42a0-ab88-20f7382dd24c",
  "IsCustom": false,
  "Description": "Lets you manage everything except access to resources.",
  "Actions": [
    "*"
  ],
  "NotActions": [
    "Microsoft.Authorization/*/Delete",
    "Microsoft.Authorization/*/Write",
    "Microsoft.Authorization/elevateAccess/Action",
    "Microsoft.Blueprint/blueprintAssignments/write",
    "Microsoft.Blueprint/blueprintAssignments/delete"
  ],
  "DataActions": [],
  "NotDataActions": [],
  "AssignableScopes": [
    "/"
  ]
}

Toute définition de rôle est déclarée en utilisant le format suivant :

{Company}.{ProviderName}/{resourceType}/{action}

La partie des actions est généralement une des actions suivantes :

  • *
  • lire
  • écrire
  • action
  • supprimer

Définir un rôle personnalisé pour gérer des machines virtuelles

Pour vous aider à identifier les autorisations à inclure dans une définition de rôle, utilisez la liste des opérations du fournisseur de ressources Azure Resource Manager et examinez les rôles Azure intégrés qui ont des autorisations similaires à celles dont vous avez besoin.

Examiner les rôles intégrés

Pour notre scénario, le rôle intégré Contributeur de machine virtuelle a plus d’autorisations que ce dont l’employé a besoin, et le rôle Connexion de l’administrateur de machine virtuelle n’en a pas assez.

La commande suivante , Azure CLI, renvoie les autorisations pour le rôle intégré Contributeur de machine virtuelle :

az role definition list --name "Virtual Machine Contributor" --output json | jq '.[] | .permissions[0].actions'

La liste suivante contient les autorisations pour le rôle intégré Contributeur de machines virtuelles :

[
  "Microsoft.Authorization/*/read",
  "Microsoft.Compute/availabilitySets/*",
  "Microsoft.Compute/locations/*",
  "Microsoft.Compute/virtualMachines/*",
  "Microsoft.Compute/virtualMachineScaleSets/*",
  "Microsoft.DevTestLab/schedules/*",
  "Microsoft.Insights/alertRules/*",
  "Microsoft.Network/applicationGateways/backendAddressPools/join/action",
  "Microsoft.Network/loadBalancers/backendAddressPools/join/action",
  "Microsoft.Network/loadBalancers/inboundNatPools/join/action",
  "Microsoft.Network/loadBalancers/inboundNatRules/join/action",
  "Microsoft.Network/loadBalancers/probes/join/action",
  "Microsoft.Network/loadBalancers/read",
  "Microsoft.Network/locations/*",
  "Microsoft.Network/networkInterfaces/*",
  "Microsoft.Network/networkSecurityGroups/join/action",
  "Microsoft.Network/networkSecurityGroups/read",
  "Microsoft.Network/publicIPAddresses/join/action",
  "Microsoft.Network/publicIPAddresses/read",
  "Microsoft.Network/virtualNetworks/read",
  "Microsoft.Network/virtualNetworks/subnets/join/action",
  "Microsoft.RecoveryServices/locations/*",
  "Microsoft.RecoveryServices/Vaults/backupFabrics/backupProtectionIntent/write",
  "Microsoft.RecoveryServices/Vaults/backupFabrics/protectionContainers/protectedItems/*/read",
  "Microsoft.RecoveryServices/Vaults/backupFabrics/protectionContainers/protectedItems/read",
  "Microsoft.RecoveryServices/Vaults/backupFabrics/protectionContainers/protectedItems/write",
  "Microsoft.RecoveryServices/Vaults/backupPolicies/read",
  "Microsoft.RecoveryServices/Vaults/backupPolicies/write",
  "Microsoft.RecoveryServices/Vaults/read",
  "Microsoft.RecoveryServices/Vaults/usages/read",
  "Microsoft.RecoveryServices/Vaults/write",
  "Microsoft.ResourceHealth/availabilityStatuses/read",
  "Microsoft.Resources/deployments/*",
  "Microsoft.Resources/subscriptions/resourceGroups/read",
  "Microsoft.SqlVirtualMachine/*",
  "Microsoft.Storage/storageAccounts/listKeys/action",
  "Microsoft.Storage/storageAccounts/read",
  "Microsoft.Support/*"
]

Pour obtenir cette liste dans PowerShell, vous devez exécuter la commande suivante :

Get-AzRoleDefinition -Name "Virtual Machine Contributor" | Select Actions | ConvertTo-Json

Pour notre scénario, nous voulons un rôle personnalisé qui permette de monitorer et de redémarrer des machines virtuelles dans un abonnement spécifique. Nous voulons donc ajouter les actions suivantes au niveau de l’abonnement :

  • Accès en lecture aux ressources de calcul, de réseau et de stockage
  • Possibilité de démarrer et de redémarrer les machines virtuelles
  • Accès à tous les groupes de ressources de l’abonnement
  • Accès aux ressources de supervision

Certaines opérations de la définition du rôle d'apporteur de machine virtuelle peuvent être utilisées, notamment "Microsoft.Insights/alertRules/*" pour la surveillance, mais le redémarrage et d'autres opérations ne sont pas répertoriés comme des actions dans cette définition de rôle.

Rechercher des opérations de fournisseur de ressources

Nous pouvons trouver l'action de redémarrage de la VM dans la liste des opérations du fournisseur de ressources Azure Resource Manager ou en exécutant la commande PowerShell suivante pour renvoyer les opérations pour les VM :

Get-AzProviderOperation */virtualMachines/*

L’opération suivante pour le redémarrage est retournée dans la liste :

Operation         : Microsoft.Compute/virtualMachines/restart/action
OperationName     : Restart Virtual Machine
ProviderNamespace : Microsoft Compute
ResourceName      : Virtual Machines
Description       : Restarts the virtual machine
IsDataAction      : False

Vous pouvez utiliser l’applet de commande Azure PowerShell Get-AzProviderOperation pour obtenir la liste la plus récente des opérations du fournisseur de ressources. Dans Azure CLI, utilisez la commande az provider operation show. La liste publiée des fournisseurs de ressources et des opérations se trouve dans le contenu Azure RBAC sur Docs.

Créer une définition de rôle d’opérateur de machine virtuelle

Supposons que nous avons choisi ce dont nous avons besoin en examinant les définitions de rôle intégrées associées et la liste des opérations du fournisseur de ressources. Nous obtenons au final la définition de rôle suivante pour notre rôle personnalisé. Nous allons utiliser cette définition de rôle pour notre rôle personnalisé.

   {
   "Name": "Virtual Machine Operator",
   "Id": "88888888-8888-8888-8888-888888888888",
   "IsCustom": true,
   "Description": "Can monitor and restart virtual machines.",
   "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": [],
   "DataActions": [],
   "NotDataActions": [],
   "AssignableScopes": [
      "/subscriptions/{subscriptionId1}" 
   ]
   }

Vérifiez vos connaissances

1.

Qu’est-ce que comprend une définition de rôle Azure personnalisé ?

2.

Quelles sont les commandes qui vous aident à déterminer les opérations à ajouter à une définition de rôle personnalisé ?