Je m’étais posé la question. On m’a posé la question. Voici donc quelques commandes que j’ai glanées sur la gestion des rôles dans Azure.
Rappelons qu’il est possible d’affecter un rôle sur 3 niveaux :
-
La souscription (donc l’ensemble des ressources de la souscription)
-
Un groupe de ressources
-
Directement sur une ressource
Il existe par défaut de nombreux rôles (cf. Built-in roles for Azure role-based access control). Certains rôles sont spécialisés sur un type de ressource mais très souvent les ressources n’utilisent que les rôles de base : owner/propriétaire, contributor/conntributeur et reader/lecteur.
En plus de la page de référence de Microsoft, voici quelques éléments pour construire vos rôles.
Liste des rôles
Get-AzureRmRoleDefinition | Format-Table Name, Description
(Get-AzureRmRoleDefinition "Virtual Machine Contributor").Actions
(Get-AzureRmRoleDefinition "Virtual Machine Contributor").NotActions
Comment obtenir la liste des actions possibles
Un fournisseur correspond plus ou moins à un type de sous-ressource. Pour obtenir une liste de fournisseurs:
Get-AzureRmResourceProvider -ListAvailable | Select-Object ProviderNamespace, RegistrationState
Pour répertorier les opérations possibles d’un fournisseur :
Get-AzureRmProviderOperation Microsoft.Compute/virtualMachines/* | select -ExpandProperty operation
On notera l’utilisation du caractère '*' dans la commande précédente pour lister les opérations |
Créer un rôle personnalisé basé sur un JSON
New-AzureRmRoleDefinition -InputFile C:\MycustomRole.json
Exporter un rôle au format JSON
Get-AzureRmRoleDefinition <nom du rôle> | ConvertTo-Json
Il sera alors possible stocker/versionner un rôle dans un gestionnaire de source.
Mettre à jour un rôle personnalisé
Mettez à jour la définition du rôle avec :
$ role = Get-AzureRmRoleDefinition -Name "ROLE_DEFINITION_NAME"
$ role.AssignableScopes.Add ("/ abonnements / NEW_SUBSCRIPTION_ID_GOES_HERE") ## [[Répétez cette étape pour ajouter tous les abonnements que vous souhaitez ajouter]]
$ role.Actions.Remove ("Microsoft.Compute / virtualMachines / write") # Ajouter une autorisation à un rôle
$ role.Actions.Add ("Microsoft.Compute / virtualMachines / write") # Supprimer l'autorisation d'un rôle
Set-AzureRmRoleDefinition -Role $ role
Trouver où un rôle est utilisé
Get-AzureRmRoleAssignment -RoleDefinitionName "ROLE_DEFINITION_NAME"
Affecter un rôle à un groupe sur un groupe de ressources
$AADGroup = Get-AzureRmADGroup -SearchString "GROUP_NAME"
New-AzureRmRoleAssignment -ObjectID $AADGroup.ID `
-RoleDefinitionName "ROLE_DEFINITION_NAME" `
-ResourceGroupName "RG_NAME"
Supprimer un rôle personnalisé
Un rôle ne peut être supprimé s’il est affecté |
Pour supprimer un rôle personnalisé existant, exécutez la commande suivante :
Remove-AzureRmRoleDefinition -Id ROLE_DEFINITION_ID
```powershell
Ou
```powershell
Remove-AzureRmRoleDefinition -Name "ROLE_DEFINITION_Name"