Démarrage rapide : Créer un coffre de clés Azure et un secret à l’aide de Bicep

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 porte essentiellement sur le déploiement d’un fichier Bicep en vue de créer un coffre de clés et un secret.

Bicep est un langage spécifique au domaine (DSL) qui utilise la syntaxe déclarative pour déployer des ressources Azure. Il fournit une syntaxe concise, une cohérence des types fiable et une prise en charge de la réutilisation du code. Bicep offre la meilleure expérience de création pour vos solutions d’infrastructure en tant que code dans Azure.

Prerequisites

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

Passer en revue le fichier Bicep

Le modèle utilisé dans ce guide de démarrage rapide provient de Azure modèles de démarrage rapide.

@description('Specifies the name of the key vault.')
param keyVaultName string

@description('Specifies the Azure location where the key vault should be created.')
param location string = resourceGroup().location

@description('Specifies whether Azure Virtual Machines are permitted to retrieve certificates stored as secrets from the key vault.')
param enabledForDeployment bool = false

@description('Specifies whether Azure Disk Encryption is permitted to retrieve secrets from the vault and unwrap keys.')
param enabledForDiskEncryption bool = false

@description('Specifies whether Azure Resource Manager is permitted to retrieve secrets from the key vault.')
param enabledForTemplateDeployment bool = false

@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.')
param tenantId string = subscription().tenantId

@description('Specifies whether the key vault is a standard vault or a premium vault.')
@allowed([
  'standard'
  'premium'
])
param skuName string = 'standard'

@description('Specifies all secrets {"secretName":"","secretValue":""} wrapped in a secure object.')
@secure()
param secretsObject object

resource kv 'Microsoft.KeyVault/vaults@2023-07-01' = {
  name: keyVaultName
  location: location
  properties: {
    enabledForDeployment: enabledForDeployment
    enabledForTemplateDeployment: enabledForTemplateDeployment
    enabledForDiskEncryption: enabledForDiskEncryption
    enableRbacAuthorization: true
    tenantId: tenantId
    enableSoftDelete: true
    softDeleteRetentionInDays: 90
    enablePurgeProtection: true
    sku: {
      name: skuName
      family: 'A'
    }
    networkAcls: {
      defaultAction: 'Allow'
      bypass: 'AzureServices'
    }
  }
}

resource secrets 'Microsoft.KeyVault/vaults/secrets@2023-07-01' = [for secret in secretsObject.secrets: {
  name: secret.secretName
  parent: kv
  properties: {
    value: secret.secretValue
  }
}]

output location string = location
output name string = kv.name
output resourceGroupName string = resourceGroup().name
output resourceId string = kv.id

Deux ressources Azure sont définies dans le fichier Bicep :

Déployer le fichier Bicep

  1. Enregistrez le fichier Bicep sous main.bicep sur votre ordinateur local.

  2. Créez un fichier de paramètres (par exemple, main.parameters.json) qui fournit la secretsObject valeur :

    {
      "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentParameters.json#",
      "contentVersion": "1.0.0.0",
      "parameters": {
        "keyVaultName": { "value": "<vault-name>" },
        "secretsObject": {
          "value": {
            "secrets": [
              { "secretName": "adminpassword", "secretValue": "<your-secret-value>" }
            ]
          }
        }
      }
    }
    
  3. Déployez le fichier Bicep en utilisant Azure CLI ou Azure PowerShell.

    az group create --name myResourceGroup --location eastus
    az deployment group create --resource-group myResourceGroup --template-file main.bicep --parameters @main.parameters.json
    

    Note

    Remplacez <vault-name> par le nom du coffre de clés, qui doit être globalement unique dans l’espace de noms vault.azure.net. Remplacez <your-secret-value> par la valeur secrète à stocker. Étant donné que secretsObject est déclaré en tant que secureObject, sa valeur n’est pas journalisée ou répercutée.

    Une fois le déploiement terminé, un message doit s’afficher pour indiquer que le déploiement a réussi.

Attribuer un rôle RBAC pour Key Vault

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

echo "Enter your key vault name:" &&
read keyVaultName &&
az role assignment create --role "Key Vault Secrets 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 le coffre de clés et le secret, ou utiliser le script Azure CLI ou 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 ..."

Nettoyer les ressources

Quand vous n’en avez plus besoin, utilisez le portail Azure, Azure CLI ou Azure PowerShell pour supprimer le groupe de ressources et ses ressources.

az group delete --name myResourceGroup

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 de clés et un secret en utilisant Bicep, puis vous avez validé le déploiement. Pour en savoir plus sur les Key Vault et les Bicep, passez aux articles ci-dessous.