Créer ou mettre à jour des rôles personnalisés Azure à l’aide d’un modèle ARM
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 décrit la procédure de création ou de mise à jour d’un rôle personnalisé à l’aide d’un modèle Azure Resource Manager (modèle ARM).
Un modèle Azure Resource Manager est un fichier JSON (JavaScript Object Notation) qui définit l’infrastructure et la configuration de votre projet. Le modèle utilise la syntaxe déclarative. Vous décrivez le déploiement que vous avez prévu sans écrire la séquence de commandes de programmation pour créer le déploiement.
Pour créer un rôle personnalisé, vous spécifiez un nom de rôle, des autorisations et l’emplacement où le rôle peut être utilisé. Dans cet article, vous créez un rôle nommé Custom Role - RG Reader avec des autorisations de ressources qui peuvent être attribuées au niveau d’une étendue d’abonnement ou d’une étendue inférieure.
Si votre environnement remplit les prérequis et que vous êtes déjà familiarisé avec l’utilisation des modèles ARM, sélectionnez le bouton Déployer sur Azure. Le modèle s’ouvre dans le portail Azure.
Prérequis
Pour créer un rôle personnalisé, vous devez disposer des éléments suivants :
- Autorisations nécessaires pour créer des rôles personnalisés, par exemple, Administrateur de l’accès utilisateur.
Vous devez utiliser la version suivante :
2018-07-01
ou ultérieur
Pour plus d’informations, consultez Versions des API REST Azure RBAC.
Vérifier le modèle
Le modèle utilisé dans cet article provient des Modèles de démarrage rapide Azure. Le modèle dispose de quatre paramètres et d’une section de ressources. Les quatre paramètres sont :
- Tableau d’actions avec la valeur par défaut
["Microsoft.Resources/subscriptions/resourceGroups/read"]
. - Tableau de
notActions
avec une valeur par défaut vide. - Nom de rôle avec la valeur par défaut
Custom Role - RG Reader
. - Description du rôle avec la valeur par défaut
Subscription Level Deployment of a Role Definition
.
L’étendue d’attribution de ce rôle personnalisé est définie sur l’abonnement actuel.
{
"$schema": "https://schema.management.azure.com/schemas/2018-05-01/subscriptionDeploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"metadata": {
"_generator": {
"name": "bicep",
"version": "0.25.53.49325",
"templateHash": "16704138909949665309"
}
},
"parameters": {
"actions": {
"type": "array",
"defaultValue": [
"Microsoft.Resources/subscriptions/resourceGroups/read"
],
"metadata": {
"description": "Array of actions for the roleDefinition"
}
},
"notActions": {
"type": "array",
"defaultValue": [],
"metadata": {
"description": "Array of notActions for the roleDefinition"
}
},
"roleName": {
"type": "string",
"defaultValue": "Custom Role - RG Reader",
"metadata": {
"description": "Friendly name of the role definition"
}
},
"roleDescription": {
"type": "string",
"defaultValue": "Subscription Level Deployment of a Role Definition",
"metadata": {
"description": "Detailed description of the role definition"
}
}
},
"variables": {
"roleDefName": "[guid(parameters('roleName'))]"
},
"resources": [
{
"type": "Microsoft.Authorization/roleDefinitions",
"apiVersion": "2022-04-01",
"name": "[variables('roleDefName')]",
"properties": {
"roleName": "[parameters('roleName')]",
"description": "[parameters('roleDescription')]",
"type": "customRole",
"permissions": [
{
"actions": "[parameters('actions')]",
"notActions": "[parameters('notActions')]"
}
],
"assignableScopes": [
"[subscription().id]"
]
}
}
]
}
La ressource définie dans le modèle est :
Déployer le modèle
Procédez comme suit pour déployer le modèle précédent.
Connectez-vous au portail Azure.
Ouvrez Azure Cloud Shell pour PowerShell.
Copiez et collez le script suivant dans Cloud Shell.
$location = Read-Host -Prompt "Enter a location (i.e. centralus)" [string[]]$actions = Read-Host -Prompt "Enter actions as a comma-separated list (i.e. action1,action2)" $actions = $actions.Split(',') $templateUri = "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/subscription-deployments/create-role-def/azuredeploy.json" New-AzDeployment -Location $location -TemplateUri $templateUri -actions $actions
Entrez un emplacement pour le déploiement, tel que
centralus
.Entrez une liste d’actions pour le rôle personnalisé en tant que liste séparée par des virgules, comme
Microsoft.Resources/resources/read,Microsoft.Resources/subscriptions/resourceGroups/read
.Si nécessaire, appuyez sur Entrée pour exécuter la commande
New-AzDeployment
.La commande New-AzDeployment déploie le modèle pour créer un rôle personnalisé.
Vous devez obtenir une sortie similaire à la suivante :
PS> New-AzDeployment -Location $location -TemplateUri $templateUri -actions $actions Id : /subscriptions/{subscriptionId}/providers/Microsoft.Resources/deployments/azuredeploy DeploymentName : azuredeploy Location : centralus ProvisioningState : Succeeded Timestamp : 6/25/2020 8:08:32 PM Mode : Incremental TemplateLink : Uri : https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/subscription-deployments/create-role-def/azuredeploy.json ContentVersion : 1.0.0.0 Parameters : Name Type Value ================= ========================= ========== actions Array [ "Microsoft.Resources/resources/read", "Microsoft.Resources/subscriptions/resourceGroups/read" ] notActions Array [] roleName String Custom Role - RG Reader roleDescription String Subscription Level Deployment of a Role Definition Outputs : DeploymentDebugLogLevel :
Vérifier les ressources déployées
Procédez comme suit pour vérifier que le rôle personnalisé a été créé.
Exécutez la commande Get-AzRoleDefinition pour lister le rôle personnalisé.
Get-AzRoleDefinition "Custom Role - RG Reader" | ConvertTo-Json
Vous devez obtenir une sortie similaire à la suivante :
{ "Name": "Custom Role - RG Reader", "Id": "11111111-1111-1111-1111-111111111111", "IsCustom": true, "Description": "Subscription Level Deployment of a Role Definition", "Actions": [ "Microsoft.Resources/resources/read", "Microsoft.Resources/subscriptions/resourceGroups/read" ], "NotActions": [], "DataActions": [], "NotDataActions": [], "AssignableScopes": [ "/subscriptions/{subscriptionId}" ] }
Dans le portail Azure, ouvrez votre abonnement.
Dans le menu de gauche, sélectionnez Contrôle d’accès (IAM) .
Sélectionnez l’onglet Rôles.
Définissez la liste Type sur CustomRole.
Vérifiez que Rôle personnalisé - Lecteur RG est listé.
Mettre à jour un rôle personnalisé
À l’instar de la création d’un rôle personnalisé, vous pouvez mettre à jour un rôle personnalisé existant à l’aide d’un modèle. Pour mettre à jour un rôle personnalisé, vous devez spécifier le rôle que vous souhaitez mettre à jour.
Voici les modifications que vous devez apporter au modèle de démarrage rapide précédent pour mettre à jour le rôle personnalisé.
Incluez l’ID de rôle en tant que paramètre.
... "roleDefName": { "type": "string", "metadata": { "description": "ID of the role definition" } ...
Incluez le paramètre ID de rôle dans la définition du rôle.
... "resources": [ { "type": "Microsoft.Authorization/roleDefinitions", "apiVersion": "2022-04-01", "name": "[parameters('roleDefName')]", "properties": { ...
Voici un exemple montrant comment déployer le modèle.
$location = Read-Host -Prompt "Enter a location (i.e. centralus)"
[string[]]$actions = Read-Host -Prompt "Enter actions as a comma-separated list (i.e. action1,action2)"
$actions = $actions.Split(',')
$roleDefName = Read-Host -Prompt "Enter the role ID to update"
$templateFile = "rg-reader-update.json"
New-AzDeployment -Location $location -TemplateFile $templateFile -actions $actions -roleDefName $roleDefName
Nettoyer les ressources
Pour supprimer le rôle personnalisé, procédez comme suit.
Exécutez la commande suivante pour supprimer le rôle personnalisé.
Get-AzRoleDefinition -Name "Custom Role - RG Reader" | Remove-AzRoleDefinition
Entrez Y pour confirmer la suppression du rôle personnalisé.