Partager via


Démarrage rapide : Définir et récupérer un secret à partir d’Azure Key Vault à l’aide d’un 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, les certificats et d’autres secrets. 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 un secret.

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.

  • Votre ID d’objet utilisateur Microsoft Entra est nécessaire par le modèle pour configurer les autorisations. La procédure suivante obtient l’ID d’objet (GUID).

    1. Exécutez la commande Azure PowerShell ou Azure CLI suivante en sélectionnant Essayer, puis collez le script dans le volet d’interpréteur de commandes. Pour coller le script, cliquez avec le bouton droit dans l’interpréteur de commandes, puis sélectionnez Coller.

      echo "Enter your email address that is used to sign in to Azure:" &&
      read upn &&
      az ad user show --id $upn --query "Id" &&
      echo "Press [ENTER] to continue ..."
      
    2. Notez l’ID d’objet. Vous en avez besoin dans la section suivante de ce guide de démarrage rapide.

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.26.54.24096",
      "templateHash": "8629186205194254058"
    }
  },
  "parameters": {
    "keyVaultName": {
      "type": "string",
      "metadata": {
        "description": "Specifies the name of the key vault."
      }
    },
    "location": {
      "type": "string",
      "defaultValue": "[resourceGroup().location]",
      "metadata": {
        "description": "Specifies the Azure location where the key vault should be created."
      }
    },
    "enabledForDeployment": {
      "type": "bool",
      "defaultValue": false,
      "metadata": {
        "description": "Specifies whether Azure Virtual Machines are permitted to retrieve certificates stored as secrets from the key vault."
      }
    },
    "enabledForDiskEncryption": {
      "type": "bool",
      "defaultValue": false,
      "metadata": {
        "description": "Specifies whether Azure Disk Encryption is permitted to retrieve secrets from the vault and unwrap keys."
      }
    },
    "enabledForTemplateDeployment": {
      "type": "bool",
      "defaultValue": false,
      "metadata": {
        "description": "Specifies whether Azure Resource Manager is permitted to retrieve secrets from the key vault."
      }
    },
    "tenantId": {
      "type": "string",
      "defaultValue": "[subscription().tenantId]",
      "metadata": {
        "description": "Specifies the Azure Active Directory tenant ID that should be used for authenticating requests to the key vault. Get it by using Get-AzSubscription cmdlet."
      }
    },
    "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."
      }
    },
    "skuName": {
      "type": "string",
      "defaultValue": "standard",
      "allowedValues": [
        "standard",
        "premium"
      ],
      "metadata": {
        "description": "Specifies whether the key vault is a standard vault or a premium vault."
      }
    },
    "secretName": {
      "type": "string",
      "metadata": {
        "description": "Specifies the name of the secret that you want to create."
      }
    },
    "secretValue": {
      "type": "securestring",
      "metadata": {
        "description": "Specifies the value of the secret that you want to create."
      }
    }
  },
  "resources": [
    {
      "type": "Microsoft.KeyVault/vaults",
      "apiVersion": "2023-07-01",
      "name": "[parameters('keyVaultName')]",
      "location": "[parameters('location')]",
      "properties": {
        "enabledForDeployment": "[parameters('enabledForDeployment')]",
        "enabledForDiskEncryption": "[parameters('enabledForDiskEncryption')]",
        "enabledForTemplateDeployment": "[parameters('enabledForTemplateDeployment')]",
        "tenantId": "[parameters('tenantId')]",
        "enableSoftDelete": true,
        "softDeleteRetentionInDays": 90,
        "accessPolicies": [
          {
            "objectId": "[parameters('objectId')]",
            "tenantId": "[parameters('tenantId')]",
            "permissions": {
              "keys": "[parameters('keysPermissions')]",
              "secrets": "[parameters('secretsPermissions')]"
            }
          }
        ],
        "sku": {
          "name": "[parameters('skuName')]",
          "family": "A"
        },
        "networkAcls": {
          "defaultAction": "Allow",
          "bypass": "AzureServices"
        }
      }
    },
    {
      "type": "Microsoft.KeyVault/vaults/secrets",
      "apiVersion": "2023-07-01",
      "name": "[format('{0}/{1}', parameters('keyVaultName'), parameters('secretName'))]",
      "properties": {
        "value": "[parameters('secretValue')]"
      },
      "dependsOn": [
        "[resourceId('Microsoft.KeyVault/vaults', parameters('keyVaultName'))]"
      ]
    }
  ],
  "outputs": {
    "location": {
      "type": "string",
      "value": "[parameters('location')]"
    },
    "name": {
      "type": "string",
      "value": "[parameters('keyVaultName')]"
    },
    "resourceGroupName": {
      "type": "string",
      "value": "[resourceGroup().name]"
    },
    "resourceId": {
      "type": "string",
      "value": "[resourceId('Microsoft.KeyVault/vaults', parameters('keyVaultName'))]"
    }
  }
}

Deux ressources Azure 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.

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 un secret.

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

  2. Sélectionnez ou entrez les valeurs suivantes.

    Modèle ARM, intégration de Key Vault, portail de déploiement

    Sauf s’il est spécifié, utilisez la valeur par défaut pour créer le coffre de clés et un secret.

    • Abonnement : sélectionnez un abonnement Azure.
    • Groupe de ressources : sélectionnez Créer, entrez un nom unique pour le groupe de ressources, puis cliquez sur OK.
    • Emplacement : sélectionnez un emplacement. Par exemple, USA Centre.
    • Nom du coffre de clés : entrez un nom pour le coffre de clés, qui doit être globalement unique dans l’espace de noms .vault.azure.net. Vous avez besoin du nom dans la section suivante lorsque vous validez le déploiement.
    • ID de locataire : la fonction de modèle récupère automatiquement votre ID de locataire. Ne modifiez pas la valeur par défaut.
    • ID d’utilisateur publicitaire : entrez votre ID d’objet utilisateur Microsoft Entra que vous avez récupéré à partir des prérequis.
    • Nom du secret : entrez un nom pour le secret que vous stockez dans le coffre de clés. Par exemple, adminpassword.
    • Valeur secrète : entrez la valeur du secret. Si vous stockez un mot de passe, il est recommandé d’utiliser le mot de passe généré que vous avez créé dans les conditions préalables.
    • J’accepte les termes et conditions mentionnés ci-dessus : cochez la case.
  3. Sélectionnez Acheter. Une fois que le Key Vault est déployé avec succès, vous recevez une notification :

    Modèle ARM, intégration de Key Vault, notification de déploiement du portail

Le portail Azure est utilisé pour déployer le modèle. Outre le portail Azure, vous pouvez également utiliser Azure PowerShell, l’interface Azure CLI et l’API REST. Pour découvrir d’autres 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 le coffre de clés et le secret, ou utiliser l’interface de ligne de commande Azure ou le script Azure PowerShell suivant pour répertorier le secret créé.

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

Le résultat est similaire à ceci :

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 de clés et un secret à l'aide d'un modèle ARM, puis validé le déploiement. Pour en savoir plus sur Key Vault et Azure Resource Manager, passez aux articles ci-dessous.