Partager via


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

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

{
  "$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 les modèles de démarrage rapide Azure.

Paramètres et définitions

Paramètre Definition
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 sont une liste séparée par des virgules d’opérations de clé, telle que définie par la spécification JWK (JSON Web Key) :
["sign", "verify", "encrypt", "decrypt", " wrapKey", "unwrapKey"]
CurveName Nom de la courbe elliptique (EC) pour le type de clé EC. Voir JsonWebKeyCurveName
Kty Type de clé à créer. Pour obtenir des valeurs valides, consultez JsonWebKeyType
Étiquettes Métadonnées spécifiques d’application sous la forme de paires clé/valeur.
nbf Spécifie l’heure, en tant qu’objet DateTime, avant laquelle la clé ne peut pas être utilisée. Le format serait le timestamp Unix (le nombre de secondes écoulées depuis l’époque Unix le 1er janvier 1970 en temps universel coordonné).
Exp Spécifie l’heure d’expiration, en tant qu’objet DateTime. Le format serait le timestamp Unix (le nombre de secondes écoulées depuis l’époque Unix le 1er janvier 1970 en temps universel coordonné).

Déployer le modèle

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

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 utilise des stratégies d’accès, l’appelant doit avoir l’autorisation de clé « Créer » ; si le coffre est activé pour le contrôle d’accès en fonction du rôle Azure, l’appelant doit avoir le contrôle d’accès en fonction du rôle Azure DataAction « 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 ..."

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