Partager via


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.

Bouton pour déployer le modèle Resource Manager sur 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 et Microsoft.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

  1. Connectez-vous au portail Azure.

  2. 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.

  3. Ouvrez Azure Cloud Shell pour PowerShell.

  4. 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
    
  5. Entrez un nom de groupe de ressources, comme ExampleGrouprg.

  6. Entrez une adresse e-mail pour vous-même ou un autre utilisateur de votre annuaire.

  7. Entrez un emplacement pour le groupe de ressources, comme USA Centre.

  8. 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

  1. Sur le portail Azure, ouvrez le groupe de ressources que vous venez de créer.

  2. Dans le menu de gauche, cliquez sur Contrôle d’accès (IAM) .

  3. Cliquez sur l’onglet Attributions de rôles.

  4. Vérifiez que le rôle Contributeur de machine virtuelle est attribué à l’utilisateur que vous avez spécifié.

    Nouvelle affectation de rôle

Nettoyer les ressources

Pour supprimer l’attribution de rôle et le groupe de ressources que vous avez créés, procédez comme suit.

  1. 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
    
  2. Entrez l’adresse e-mail de l’utilisateur avec l’attribution de rôle à supprimer.

  3. Entrez le nom du groupe de ressources à supprimer, comme ExampleGrouprg.

  4. Si nécessaire, appuyez sur Entrée pour exécuter la commande Remove-AzResourceGroup.

  5. Entrez Y pour confirmer la suppression du groupe de ressources.

Étapes suivantes