Démarrage rapide : Attribuer un rôle Azure en utilisant un modèle ARM
Le contrôle d’accès en fonction du rôle Azure (RBAC Azure) vous permet de gérer l’accès aux ressources Azure. Dans ce démarrage rapide, vous allez créer un groupe de ressources et autoriser un utilisateur à créer et à gérer des machines virtuelles dans le groupe de ressources. Ce guide de démarrage rapide utilise un modèle Azure Resource Manager (modèle ARM) pour accorder l’accès.
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 votre déploiement prévu sans écrire la séquence de commandes de programmation pour créer le déploiement.
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 attribuer des rôles et supprimer des attributions de rôles, voici ce dont vous devez disposer :
- Si vous n’avez pas d’abonnement Azure, créez un compte gratuit avant de commencer.
- Autorisations
Microsoft.Authorization/roleAssignments/write
etMicrosoft.Authorization/roleAssignments/delete
, telles que Administrateur de contrôle d’accès en fonction du rôle - Pour attribuer un rôle, vous devez spécifier trois éléments : un principal de sécurité, une définition de rôle et une étendue. Pour ce démarrage rapide, vous ou un autre utilisateur dans votre annuaire avez le rôle de principal de sécurité, la définition de rôle est Contributeur de machine virtuelle et l’étendue est un groupe de ressources que vous spécifiez.
Vérifier le modèle
Le modèle utilisé dans ce démarrage rapide est tiré des modèles de démarrage rapide Azure. Le modèle a deux paramètres et une section de ressources. Notez que la section de ressources contient les trois éléments d’une attribution de rôle : principal de sécurité, définition de rôle et étendue.
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"metadata": {
"_generator": {
"name": "bicep",
"version": "0.25.53.49325",
"templateHash": "15160858749942476090"
}
},
"parameters": {
"roleDefinitionID": {
"type": "string",
"metadata": {
"description": "Specifies the role definition ID used in the role assignment."
}
},
"principalId": {
"type": "string",
"metadata": {
"description": "Specifies the principal ID assigned to the role."
}
}
},
"variables": {
"roleAssignmentName": "[guid(parameters('principalId'), parameters('roleDefinitionID'), resourceGroup().id)]"
},
"resources": [
{
"type": "Microsoft.Authorization/roleAssignments",
"apiVersion": "2022-04-01",
"name": "[variables('roleAssignmentName')]",
"properties": {
"roleDefinitionId": "[resourceId('Microsoft.Authorization/roleDefinitions', parameters('roleDefinitionID'))]",
"principalId": "[parameters('principalId')]"
}
}
],
"outputs": {
"name": {
"type": "string",
"value": "[variables('roleAssignmentName')]"
},
"resourceGroupName": {
"type": "string",
"value": "[resourceGroup().name]"
},
"resourceId": {
"type": "string",
"value": "[resourceId('Microsoft.Authorization/roleAssignments', variables('roleAssignmentName'))]"
}
}
}
La ressource définie dans le modèle est :
Déployer le modèle
Connectez-vous au portail Azure.
Déterminez votre adresse e-mail associée à votre abonnement Azure. Ou déterminez l’adresse e-mail d’un autre utilisateur dans votre annuaire.
Ouvrez Azure Cloud Shell pour PowerShell.
Copiez et collez le script suivant dans Cloud Shell.
$resourceGroupName = Read-Host -Prompt "Enter a resource group name (i.e. ExampleGrouprg)" $emailAddress = Read-Host -Prompt "Enter an email address for a user in your directory" $location = Read-Host -Prompt "Enter a location (i.e. centralus)" $roleAssignmentName = New-Guid $principalId = (Get-AzAdUser -Mail $emailAddress).id $roleDefinitionId = (Get-AzRoleDefinition -name "Virtual Machine Contributor").id $templateUri = "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/quickstarts/microsoft.authorization/rbac-builtinrole-resourcegroup/azuredeploy.json" New-AzResourceGroup -Name $resourceGroupName -Location $location New-AzResourceGroupDeployment -ResourceGroupName $resourceGroupName -TemplateUri $templateUri -roleDefinitionID $roleDefinitionId -principalId $principalId
Entrez un nom de groupe de ressources, comme ExampleGrouprg.
Entrez une adresse e-mail pour vous-même ou un autre utilisateur de votre annuaire.
Entrez un emplacement pour le groupe de ressources, comme USA Centre.
Si nécessaire, appuyez sur Entrée pour exécuter la commande New-AzResourceGroupDeployment.
La commande New-AzResourceGroup crée un groupe de ressources et la commande New-AzResourceGroupDeployment déploie le modèle pour ajouter l’attribution de rôle.
Vous devez obtenir une sortie similaire à la suivante :
PS> New-AzResourceGroupDeployment -ResourceGroupName $resourceGroupName -TemplateUri $templateUri -roleAssignmentName $roleAssignmentName -roleDefinitionID $roleDefinitionId -principalId $principalId DeploymentName : azuredeploy ResourceGroupName : ExampleGrouprg ProvisioningState : Succeeded Timestamp : 5/22/2020 9:01:30 PM Mode : Incremental TemplateLink : Uri : https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/quickstarts/microsoft.authorization/rbac-builtinrole-resourcegroup/azuredeploy.json ContentVersion : 1.0.0.0 Parameters : Name Type Value ==================== ========================= ========== roleDefinitionID String 9980e02c-c2be-4d73-94e8-173b1dc7cf3c principalId String {principalId} Outputs : DeploymentDebugLogLevel :
Vérifier les ressources déployées
Sur le portail Azure, ouvrez le groupe de ressources que vous venez de créer.
Dans le menu de gauche, cliquez sur Contrôle d’accès (IAM) .
Cliquez sur l’onglet Attributions de rôles.
Vérifiez que le rôle Contributeur de machine virtuelle est attribué à l’utilisateur que vous avez spécifié.
Nettoyer les ressources
Pour supprimer l’attribution de rôle et le groupe de ressources que vous avez créés, procédez comme suit.
Copiez et collez le script suivant dans Cloud Shell.
$emailAddress = Read-Host -Prompt "Enter the email address of the user with the role assignment to remove" $resourceGroupName = Read-Host -Prompt "Enter the resource group name to remove (i.e. ExampleGrouprg)" $principalId = (Get-AzAdUser -Mail $emailAddress).id Remove-AzRoleAssignment -ObjectId $principalId -RoleDefinitionName "Virtual Machine Contributor" -ResourceGroupName $resourceGroupName Remove-AzResourceGroup -Name $resourceGroupName
Entrez l’adresse e-mail de l’utilisateur avec l’attribution de rôle à supprimer.
Entrez le nom du groupe de ressources à supprimer, comme ExampleGrouprg.
Si nécessaire, appuyez sur Entrée pour exécuter la commande Remove-AzResourceGroup.
Entrez Y pour confirmer la suppression du groupe de ressources.