Quickstart: Een Azure sleutelkluis en een geheim maken met behulp van Bicep

Azure Key Vault is een cloudservice die een beveiligd archief biedt voor geheimen, zoals sleutels, wachtwoorden, certificaten en andere geheimen. Deze quickstart richt zich op het implementeren van een Bicep-bestand voor het aanmaken van een Key Vault en een secret.

Bicep is een domeinspecifieke taal (DSL) die declaratieve syntaxis gebruikt om Azure resources te implementeren. Het biedt beknopte syntaxis, betrouwbare typeveiligheid en ondersteuning voor het hergebruik van code. Bicep biedt de beste ontwerpervaring voor uw infrastructuur als code-oplossingen in Azure.

Vereiste voorwaarden

  • Als u geen Azure-abonnement hebt, maakt u een vrij account voordat u begint.

Het Bicep-bestand bekijken

De sjabloon die in deze quickstart wordt gebruikt, is afkomstig uit Azure Quickstart-sjablonen.

@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

Er worden twee Azure resources gedefinieerd in het Bicep-bestand:

Het Bicep-bestand implementeren

  1. Sla het bestand Bicep op als main.bicep naar uw lokale computer.

  2. Maak een parameterbestand (bijvoorbeeld main.parameters.json) dat de secretsObject waarde levert:

    {
      "$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. Implementeer het Bicep-bestand met behulp van de Azure CLI of Azure PowerShell.

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

    Opmerking

    Vervang <vault-name> door de naam van de sleutelkluis, die globaal uniek moet zijn binnen de vault.azure.net naamruimte. Vervang <your-secret-value> door de geheime waarde die moet worden opgeslagen. Omdat secretsObject als een secureObject is gedeclareerd, wordt de waarde niet gelogd of teruggegeven.

    Wanneer de implementatie is voltooid, ziet u een bericht waarin wordt aangegeven dat de implementatie is voltooid.

Een Key Vault RBAC-rol toewijzen

De sleutelkluis die door dit Bicep-bestand is gemaakt, maakt gebruik van Azure RBAC voor autorisatie. Als u toegang wilt krijgen tot geheimen via het gegevensvlak (bijvoorbeeld met behulp van de Azure CLI of Azure PowerShell), moet u uzelf een geschikte rol toewijzen.

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)

Opmerking

Het kan een paar minuten duren voordat roltoewijzingen zijn doorgegeven.

Geïmplementeerde middelen beoordelen

U kunt de Azure-portal gebruiken om de sleutelkluis en het geheim te controleren, of het volgende Azure CLI of Azure PowerShell script gebruiken om het gemaakte geheim weer te geven.

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

De hulpbronnen opschonen

Gebruik de Azure-portal, Azure CLI of Azure PowerShell om de resourcegroep en de bijbehorende resources te verwijderen wanneer u deze niet meer nodig hebt.

az group delete --name myResourceGroup

Opmerking

Als u de resourcegroep verwijdert, wordt ook de sleutelkluis verwijderd, maar de kluis krijgt vervolgens de status Voorlopig verwijderd en blijft gedurende de bewaarperiode (standaard 90 dagen) herstelbaar. De naam van de kluis blijft gedurende die periode wereldwijd gereserveerd en, omdat beveiliging tegen definitief verwijderen is ingeschakeld, kan de kluis niet eerder definitief worden verwijderd. Voor standaardsleutelkluizen worden er geen kosten in rekening gebracht voor voorlopig verwijderde kluizen. Zie Overzicht van voorlopig verwijderen in Key Vault voor meer informatie.

Volgende stappen

In deze quickstart hebt u een sleutelkluis en een geheim gemaakt met behulp van Bicep en vervolgens de implementatie gevalideerd. Ga verder met de onderstaande artikelen voor meer informatie over Key Vault en Bicep.