Comment créer un coffre de clés Azure et une stratégie d’accès à l’aide d’un modèle Resource Manager

Azure Key Vault est un service cloud qui fournit un magasin sécurisé pour des secrets tels que des clés, des mots de passe et des certificats. Ce guide décrit le processus de déploiement d’un modèle ARM (Azure Resource Manager) en vue de créer un coffre de clé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.

Prérequis

Pour accomplir les étapes décrites dans cet article :

  • Si vous n’avez pas d’abonnement Azure, créez un compte gratuit avant de commencer.

Créer un modèle Resource Manager de coffre de clés

Le modèle suivant montre comment créer un coffre de clés de façon très simple. Certaines valeurs sont spécifiées dans le modèle.

{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "parameters": {
    "keyVaultName": {
      "type": "string",
      "metadata": {
        "description": "Specifies the name of the key vault."
      }
    },
    "skuName": {
      "type": "string",
      "defaultValue": "Standard",
      "allowedValues": [
        "Standard",
        "Premium"
      ],
      "metadata": {
        "description": "Specifies whether the key vault is a standard vault or a premium vault."
      }
    }
   },
  "resources": [
    {
      "type": "Microsoft.KeyVault/vaults",
      "apiVersion": "2019-09-01",
      "name": "[parameters('keyVaultName')]",
      "location": "[resourceGroup().location]",
      "properties": {
        "enabledForDeployment": "false",
        "enabledForDiskEncryption": "false",
        "enabledForTemplateDeployment": "false",
        "tenantId": "[subscription().tenantId]",
        "accessPolicies": [],
        "sku": {
          "name": "[parameters('skuName')]",
          "family": "A"
        },
        "networkAcls": {
          "defaultAction": "Allow",
          "bypass": "AzureServices"
        }
      }
    }
  ]
}

Pour plus d’informations sur les paramètres du modèle de coffre de clés, consultez Référence sur le modèle ARM de coffre de clés.

Important

Si un modèle est redéployé, toutes les stratégies d’accès existantes dans le coffre de clés seront remplacées. Nous vous recommandons de renseigner la propriété accessPolicies avec les stratégies d’accès existantes afin d’éviter de perdre l’accès au coffre de clés.

Ajouter une stratégie d’accès à un modèle Resource Manager de coffre de clés

Vous pouvez déployer des stratégies d’accès à un coffre de clés existant sans redéploiement de l’intégralité du modèle de coffre de clés. Le modèle suivant montre comment créer des stratégies d’accès :

{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "parameters": {
    "keyVaultName": {
      "type": "string",
      "metadata": {
        "description": "Specifies the name of the key vault."
      }
    },
    "objectId": {
      "type": "string",
      "metadata": {
        "description": "Specifies the object ID of a user, service principal or security group in the Azure Active Directory tenant for the vault. The object ID must be unique for the list of access policies. Get it by using Get-AzADUser or Get-AzADServicePrincipal cmdlets."
      }
    },
    "keysPermissions": {
      "type": "array",
      "defaultValue": [
        "list"
      ],
      "metadata": {
        "description": "Specifies the permissions to keys in the vault. Valid values are: all, encrypt, decrypt, wrapKey, unwrapKey, sign, verify, get, list, create, update, import, delete, backup, restore, recover, and purge."
      }
    },
    "secretsPermissions": {
      "type": "array",
      "defaultValue": [
        "list"
      ],
      "metadata": {
        "description": "Specifies the permissions to secrets in the vault. Valid values are: all, get, list, set, delete, backup, restore, recover, and purge."
      }
    },
    "certificatePermissions": {
      "type": "array",
      "defaultValue": [
        "list"
      ],
      "metadata": {
        "description": "Specifies the permissions to certificates in the vault. Valid values are: all,  create, delete, update, deleteissuers, get, getissuers, import, list, listissuers, managecontacts, manageissuers,  recover, backup, restore, setissuers, and purge."
      }
    }
  },
  "resources": [
     {
      "type": "Microsoft.KeyVault/vaults/accessPolicies",
      "name": "[concat(parameters('keyVaultName'), '/add')]",
      "apiVersion": "2019-09-01",
      "properties": {
        "accessPolicies": [
          {
            "tenantId": "[subscription().tenantId]",
            "objectId": "[parameters('objectId')]",
            "permissions": {
              "keys": "[parameters('keysPermissions')]",
              "secrets": "[parameters('secretsPermissions')]",
              "certificates": "[parameters('certificatePermissions')]"
            }
          }
        ]
      }
    }
  ]
}

Pour plus d’informations sur les paramètres du modèle de coffre de clés, consultez notre page de référence sur le modèle ARM de coffre de clés.

Modèles Resource Manager de coffre de clés supplémentaires

Il existe d’autres modèles Resource Manager pour les objets Key Vault :

Secrets Keys Certificats
N/A N/A

Des modèles de coffre de clés supplémentaires sont disponibles ici : Référence Resource Manager relative aux coffres de clés.

Déployer les modèles

Vous pouvez utiliser le portail Azure pour déployer les modèles précédents à l’aide de l’option Build your own template in editor (Créer votre modèle dans l’éditeur), comme décrit ici : Déployer des ressources à partir d’un modèle personnalisé.

Vous pouvez également enregistrer les modèles précédents dans des fichiers et utiliser ces commandes : New-AzResourceGroupDeployment et az deployment group create :

New-AzResourceGroupDeployment -ResourceGroupName ExampleGroup -TemplateFile key-vault-template.json
az deployment group create --resource-group ExampleGroup --template-file key-vault-template.json

Nettoyer les ressources

Si vous prévoyez d’utiliser d’autres démarrages rapides et tutoriels, il peut être utile de conserver ces ressources. Lorsque vous n’avez plus besoin des ressources, supprimez le groupe de ressources. Si vous supprimez le groupe, le coffre de clés et les ressources associées sont également supprimés. Pour supprimer le groupe de ressources avec Azure CLI ou Azure PowerShell, procédez comme suit :

echo "Enter the Resource Group name:" &&
read resourceGroupName &&
az group delete --name $resourceGroupName &&
echo "Press [ENTER] to continue ..."

Ressources

Étapes suivantes