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

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 de démarrage rapide porte essentiellement sur le déploiement d’un modèle Azure Resource Manager (modèle ARM) en vue de créer un coffre de clés et une clé.

Prérequis

Pour effectuer ce qui est décrit dans cet article :

  • Si vous n’avez pas d’abonnement Azure, créez un compte gratuit avant de commencer.
  • Un rôle intégré Azure doit être attribué à l’utilisateur. Rôle recommandé : Contributeur. En savoir plus ici

Vérifier le modèle

{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "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": "2021-11-01-preview",
      "name": "[parameters('vaultName')]",
      "location": "[parameters('location')]",
      "properties": {
        "accessPolicies": [],
        "enableRbacAuthorization": true,
        "enableSoftDelete": true,
        "softDeleteRetentionInDays": "90",
        "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": "2021-11-01-preview",
      "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')))]"
    }
  }
}

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

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

Paramètres et définitions

Paramètre Définition
keyOps Spécifie les opérations qui peuvent être effectuées à l’aide de la clé. Si vous ne spécifiez pas ce paramètre, toutes les opérations peuvent être effectuées. Les valeurs acceptables pour ce paramètre figurent dans une liste séparée par des virgules des opérations clés définies par la spécification de la clé web JSON (JWK) :
["sign", "verify", "encrypt", "decrypt", " wrapKey", "unwrapKey"]
CurveName Nom de la courbe elliptique (EC) pour le type de clé EC. Consultez JsonWebKeyCurveName
Kty Type de clé à créer. Pour connaître les valeurs valides, consultez JsonWebKeyType
Balises Métadonnées spécifiques d’application sous la forme de paires clé/valeur.
nbf Spécifie l’heure, sous la forme d’un objet DateTime, avant laquelle la clé ne peut pas être utilisée. Le format est l’horodatage UNIX (le nombre de secondes après Unix Epoch le 1er janvier 1970, UTC).
exp Spécifie l’heure d’expiration, sous la forme d’un objet DateTime. Le format est l’horodatage UNIX (le nombre de secondes après Unix Epoch le 1er janvier 1970, UTC).

Déployer le modèle

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

Vérifier les ressources déployées

Vous pouvez utiliser le portail Azure pour vérifier le coffre de clés et la clé. Vous pouvez également utiliser le script Azure CLI ou 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 d’une clé avec un modèle ARM est différente de la création d’une clé via le plan de données

Création d’une clé via ARM

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

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

    Créer une clé via ARM 1Cré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 des 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 utilise des stratégies d’accès, l’appelant doit avoir l’autorisation de clé « Créer » ; si le coffre est activé pour le programme DBAC, l’appelant doit avoir la RBAC DataAction « Microsoft.KeyVault/vaults/keys/create/action ».

Nettoyer les ressources

D’autres démarrages rapides et didacticiels sur les coffres de clés reposent sur ce démarrage rapide. Si vous prévoyez d’utiliser d’autres démarrages rapides et didacticiels, il peut être utile de conserver ces ressources. Si vous n’en avez plus besoin, supprimez le groupe de ressources. Ce faisant, vous supprimez 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 ..."

Étapes suivantes

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