Démarrage rapide : Créer un coffre de clés Azure et une clé à l’aide du modèle ARM

Azure Key Vault est un service cloud qui fournit un magasin sécurisé pour les secrets, tels que les clés, les mots de passe et le certificat. Ce guide de démarrage rapide se concentre sur le processus de déploiement d’un modèle Azure Resource Manager (modèle ARM) pour créer un coffre de clés et une clé.

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.

Prerequisites

Pour terminer cet article :

  • Si vous n’avez pas d’abonnement Azure, créez un compte gratuit avant de commencer.
  • L’utilisateur doit disposer d’un rôle prédéfini d’Azure attribué, rôle recommandé contributeur. En savoir plus ici

Vérifier le modèle

Le modèle utilisé dans ce démarrage rapide est tiré des modèles de démarrage rapide Azure.

{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "metadata": {
    "_generator": {
      "name": "bicep",
      "version": "0.42.1.51946",
      "templateHash": "9113739717796369919"
    }
  },
  "parameters": {
    "vaultName": {
      "type": "string",
      "metadata": {
        "description": "The name of the key vault to be created."
      }
    },
    "keyName": {
      "type": "string",
      "metadata": {
        "description": "The name of the key to be created."
      }
    },
    "location": {
      "type": "string",
      "defaultValue": "[resourceGroup().location]",
      "metadata": {
        "description": "The location of the resources."
      }
    },
    "skuName": {
      "type": "string",
      "defaultValue": "standard",
      "allowedValues": [
        "standard",
        "premium"
      ],
      "metadata": {
        "description": "The SKU of the vault to be created."
      }
    },
    "keyType": {
      "type": "string",
      "defaultValue": "RSA",
      "allowedValues": [
        "EC",
        "EC-HSM",
        "RSA",
        "RSA-HSM"
      ],
      "metadata": {
        "description": "The JsonWebKeyType of the key to be created."
      }
    },
    "keyOps": {
      "type": "array",
      "defaultValue": [],
      "metadata": {
        "description": "The permitted JSON web key operations of the key to be created."
      }
    },
    "keySize": {
      "type": "int",
      "defaultValue": 2048,
      "metadata": {
        "description": "The size in bits of the key to be created."
      }
    },
    "curveName": {
      "type": "string",
      "defaultValue": "",
      "allowedValues": [
        "",
        "P-256",
        "P-256K",
        "P-384",
        "P-521"
      ],
      "metadata": {
        "description": "The JsonWebKeyCurveName of the key to be created."
      }
    }
  },
  "resources": [
    {
      "type": "Microsoft.KeyVault/vaults",
      "apiVersion": "2023-07-01",
      "name": "[parameters('vaultName')]",
      "location": "[parameters('location')]",
      "properties": {
        "enableRbacAuthorization": true,
        "enableSoftDelete": true,
        "softDeleteRetentionInDays": 90,
        "enablePurgeProtection": true,
        "enabledForDeployment": false,
        "enabledForDiskEncryption": false,
        "enabledForTemplateDeployment": false,
        "tenantId": "[subscription().tenantId]",
        "sku": {
          "name": "[parameters('skuName')]",
          "family": "A"
        },
        "networkAcls": {
          "defaultAction": "Allow",
          "bypass": "AzureServices"
        }
      }
    },
    {
      "type": "Microsoft.KeyVault/vaults/keys",
      "apiVersion": "2023-07-01",
      "name": "[format('{0}/{1}', parameters('vaultName'), parameters('keyName'))]",
      "properties": {
        "kty": "[parameters('keyType')]",
        "keyOps": "[parameters('keyOps')]",
        "keySize": "[parameters('keySize')]",
        "curveName": "[parameters('curveName')]"
      },
      "dependsOn": [
        "[resourceId('Microsoft.KeyVault/vaults', parameters('vaultName'))]"
      ]
    }
  ],
  "outputs": {
    "proxyKey": {
      "type": "object",
      "value": "[reference(resourceId('Microsoft.KeyVault/vaults/keys', parameters('vaultName'), parameters('keyName')), '2023-07-01')]"
    },
    "location": {
      "type": "string",
      "value": "[parameters('location')]"
    },
    "name": {
      "type": "string",
      "value": "[parameters('vaultName')]"
    },
    "resourceGroupName": {
      "type": "string",
      "value": "[resourceGroup().name]"
    },
    "resourceId": {
      "type": "string",
      "value": "[resourceId('Microsoft.KeyVault/vaults', parameters('vaultName'))]"
    }
  }
}

Deux ressources sont définies dans le modèle :

Le modèle crée le coffre de clés avec l’autorisation Azure RBAC activée. Cela signifie que le coffre utilise le contrôle d’accès en fonction du rôle Azure (Azure RBAC) pour l’autorisation sur le plan de données, plutôt que des stratégies d’accès.

Vous trouverez d’autres exemples de modèles Azure Key Vault dans les modèles de démarrage rapide Azure.

Paramètres de modèle

Paramètre Description
vaultName Nom du nouveau coffre de clés. Doit être globalement unique dans l’espace de noms vault.azure.net.
Keyname Nom de la clé à créer dans le coffre.
emplacement Région Azure pour les ressources. La valeur par défaut est l’emplacement du groupe de ressources.
skuName SKU du coffre. standard (par défaut) ou premium.
keyType Type de clé à créer. Un des RSA, RSA-HSM, EC, EC-HSM. La valeur par défaut est RSA. Voir JsonWebKeyType.
keySize Taille en bits de la clé (RSA uniquement). La valeur par défaut est 2048.
curveName Nom de courbe elliptique (pour les clés EC uniquement). Un des P-256, P-256K, P-384, P-521. Voir JsonWebKeyCurveName.
keyOps Opérations de clé web JSON autorisées pour la clé (par exemple). ["sign","verify","encrypt","decrypt","wrapKey","unwrapKey"] Le tableau vide (valeur par défaut) autorise toutes les opérations.

Déployer le modèle

  1. Cliquez sur l’image ci-après pour vous connecter à Azure et ouvrir un modèle. Le modèle crée un coffre de clés et une clé.

    Bouton pour déployer le modèle Resource Manager sur Azure.

  2. Sélectionnez ou entrez les valeurs suivantes. Sauf s’il est spécifié, utilisez la valeur par défaut.

    • Abonnement : sélectionnez un abonnement Azure.
    • Groupe de ressources : sélectionnez Créer, entrez un nom unique pour le groupe de ressources, puis sélectionnez OK.
    • Région : sélectionnez un emplacement. Par exemple, USA Centre.
    • Nom du coffre : entrez un nom pour le coffre de clés, qui doit être globalement unique dans l’espace vault.azure.net de noms.
    • Nom de la clé : entrez un nom pour la clé que vous stockez dans le coffre de clés.
    • Nom de la référence SKU : sélectionnez standard ou Premium. La valeur par défaut est standard.
    • Type de clé : sélectionnez un type de clé. La valeur par défaut est RSA.
    • Taille de clé : entrez une taille de clé (clés RSA). La valeur par défaut est 2048.
    • Nom de la courbe : pour les touches EC, sélectionnez une courbe. Laissez vide pour les clés RSA.
  3. Sélectionnez Vérifier + créer, puis sélectionnez Créer. Lorsque le coffre de clés et la clé ont été déployés avec succès, vous recevez une notification.

Vous pouvez également utiliser Azure PowerShell, le Azure CLI ou l’API REST pour déployer le modèle. Pour découvrir d’autres méthodes de déploiement, consultez Déployer des modèles.

Attribuer un rôle RBAC pour Key Vault

Le coffre de clés créé par ce modèle utilise Azure RBAC pour l’autorisation. Pour accéder aux clés via le plan de données (par exemple, à l’aide de la Azure CLI ou Azure PowerShell), vous devez vous attribuer un rôle approprié.

  1. Obtenez votre ID d’objet utilisateur Microsoft Entra :

    az ad signed-in-user show --query id -o tsv
    
  2. Attribuez le rôle Responsable crypto Key Vault à vous-même sur le coffre de clés :

    echo "Enter your key vault name:" &&
    read keyVaultName &&
    az role assignment create --role "Key Vault Crypto Officer" \
        --assignee-object-id $(az ad signed-in-user show --query id -o tsv) \
        --scope $(az keyvault show --name $keyVaultName --query id -o tsv)
    

    Note

    Les attributions de rôles peuvent prendre une minute ou deux pour se propager.

Passer en revue les ressources déployées

Vous pouvez utiliser le portail Azure pour vérifier l'Azure Key Vault et la clé. Vous pouvez également utiliser l’interface de ligne de commande Azure ou le script Azure PowerShell suivant pour répertorier la clé créée.

echo "Enter your key vault name:" &&
read keyVaultName &&
az keyvault key list --vault-name $keyVaultName &&
echo "Press [ENTER] to continue ..."

La création de clé à l’aide d’un modèle ARM diffère de la création de clé via le plan de données

Création d’une clé via ARM

  • Il est uniquement possible de créer de nouvelles clés. Il n’est pas possible de mettre à jour des clés existantes, ni de créer de nouvelles versions de clés existantes. Si la clé existe déjà, la clé existante est récupérée à partir du stockage et utilisée (aucune opération d’écriture ne se produit).

  • Pour être autorisé à utiliser cette API, l’appelant doit disposer de l’action de contrôle d’accès en fonction du rôle (Azure RBAC) « Microsoft.KeyVault/vaults/keys/write ». Le rôle intégré « Contributeur Key Vault » est suffisant, car il autorise toutes les actions RBAC Azure qui correspondent au modèle « Microsoft.KeyVault/* ».

    Créer une clé via ARM 1 Créer une clé via ARM 2

API existante (création d’une clé via le plan de données)

  • Il est possible de créer de nouvelles clés, de mettre à jour des clés existantes et de créer de nouvelles versions de clés existantes.
  • L’appelant doit être autorisé à utiliser cette API. Si le coffre est activé pour Azure RBAC, l’appelant doit disposer de la DataAction Azure RBAC « Microsoft.KeyVault/vaults/keys/create/action ».

Nettoyer les ressources

D’autres guides de démarrage rapide et didacticiels Key Vault s’appuient sur ce guide de démarrage rapide. Si vous avez l'intention de continuer à travailler avec d'autres démarrages rapides et didacticiels, vous pouvez souhaiter laisser ces ressources en place. Quand vous n’en avez plus besoin, supprimez le groupe de ressources, qui supprime le coffre de clés et les ressources associées. Pour supprimer le groupe de ressources avec Azure CLI ou Azure PowerShell :

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

Note

La suppression du groupe de ressources supprime également le coffre de clés, mais le coffre entre ensuite dans un état supprimé de manière réversible et reste récupérable pendant la période de rétention (90 jours par défaut). Le nom du coffre reste réservé globalement pendant cette période et, comme la protection contre la purge est activée, le coffre ne peut pas être purgé de manière anticipée. Pour les coffres de clés standard, les coffres supprimés de façon réversible n’entraînent pas de frais. Pour plus d’informations, consultez la vue d’ensemble de la suppression réversible dans Key Vault.

Étapes suivantes

Dans ce guide de démarrage rapide, vous avez créé un coffre-fort de clés et une clé en utilisant un gabarit ARM, puis validé le déploiement. Pour en savoir plus sur Key Vault et Azure Resource Manager, consultez ces articles.