Quickstart: Een geheim instellen en ophalen uit Azure Key Vault met behulp van een ARM-sjabloon

Azure Key Vault is een cloudservice die een beveiligd archief biedt voor geheimen, zoals sleutels, wachtwoorden, certificaten en andere geheimen. Deze quickstart is gericht op het implementeren van een Azure Resource Manager-sjabloon (ARM-sjabloon) om een sleutelkluis en een geheim te maken.

Een Azure Resource Manager-sjabloon is een JSON-bestand (JavaScript Object Notation) dat de infrastructuur en configuratie voor uw project definieert. De sjabloon maakt gebruik van declaratieve syntaxis. U beschrijft de beoogde implementatie zonder de reeks programmeeropdrachten te schrijven om de implementatie te maken.

Als uw omgeving voldoet aan de vereisten en u bekend bent met het gebruik van ARM-sjablonen, selecteert u de knop Implementeer naar Azure. De sjabloon wordt geopend in de Azure-portal.

Button om de Resource Manager-sjabloon te implementeren in Azure.

Vereiste voorwaarden

Ga als volgt te werk om dit artikel te voltooien:

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

De sjabloon controleren

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

{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "metadata": {
    "_generator": {
      "name": "bicep",
      "version": "0.42.1.51946",
      "templateHash": "10998800669048245550"
    }
  },
  "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."
      }
    },
    "skuName": {
      "type": "string",
      "defaultValue": "standard",
      "allowedValues": [
        "standard",
        "premium"
      ],
      "metadata": {
        "description": "Specifies whether the key vault is a standard vault or a premium vault."
      }
    },
    "secretsObject": {
      "type": "secureObject",
      "metadata": {
        "description": "Specifies all secrets {\"secretName\":\"\",\"secretValue\":\"\"} wrapped in a secure object."
      }
    }
  },
  "resources": [
    {
      "type": "Microsoft.KeyVault/vaults",
      "apiVersion": "2023-07-01",
      "name": "[parameters('keyVaultName')]",
      "location": "[parameters('location')]",
      "properties": {
        "enabledForDeployment": "[parameters('enabledForDeployment')]",
        "enabledForTemplateDeployment": "[parameters('enabledForTemplateDeployment')]",
        "enabledForDiskEncryption": "[parameters('enabledForDiskEncryption')]",
        "enableRbacAuthorization": true,
        "tenantId": "[parameters('tenantId')]",
        "enableSoftDelete": true,
        "softDeleteRetentionInDays": 90,
        "enablePurgeProtection": true,
        "sku": {
          "name": "[parameters('skuName')]",
          "family": "A"
        },
        "networkAcls": {
          "defaultAction": "Allow",
          "bypass": "AzureServices"
        }
      }
    },
    {
      "copy": {
        "name": "secrets",
        "count": "[length(parameters('secretsObject').secrets)]"
      },
      "type": "Microsoft.KeyVault/vaults/secrets",
      "apiVersion": "2023-07-01",
      "name": "[format('{0}/{1}', parameters('keyVaultName'), parameters('secretsObject').secrets[copyIndex()].secretName)]",
      "properties": {
        "value": "[parameters('secretsObject').secrets[copyIndex()].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'))]"
    }
  }
}

Er worden twee Azure resources gedefinieerd in de sjabloon:

  • Microsoft.KeyVault/vaults: maak een Azure-sleutelkluis met Azure RBAC-autorisatie ingeschakeld (enableRbacAuthorization: true), soft-delete ingeschakeld en opschoonbeveiliging ingeschakeld.
  • Microsoft.KeyVault/vaults/secrets: maak een of meer Key Vault-geheimen, waarbij de secretsObject.secrets-matrix die aan de sjabloon is doorgegeven wordt doorlopen.

Omdat de kluis Azure RBAC gebruikt voor autorisatie van de gegevenslaag, verleent u toegang tot geheimen door een Azure-rol toe te wijzen (in plaats van toegangsbeleidsregels te configureren).

Meer Azure Key Vault sjabloonvoorbeelden vindt u in Azure Quickstart-sjablonen.

De sjabloon implementeren

  1. Selecteer de volgende afbeelding om u aan te melden bij Azure en een sjabloon te openen. Met de sjabloon worden een sleutelkluis en een geheim gemaakt.

    Button om de Resource Manager-sjabloon te implementeren in Azure.

  2. Typ of selecteer de volgende waarden. Gebruik de standaardwaarde, tenzij deze is opgegeven.

    • Subscription: selecteer een Azure-abonnement.

    • Resourcegroep: selecteer Nieuwe maken, geef een unieke naam op voor de resourcegroep en selecteer OK.

    • Regio: selecteer een locatie. Bijvoorbeeld Centraal VS.

    • Key Vault Naam: voer een naam in voor de key vault, die globaal uniek moet zijn binnen de naamruimte vault.azure.net. U hebt deze naam nodig in de volgende sectie wanneer u de implementatie valideert.

    • SKU-naam: selecteer Standard of Premium. De standaardwaarde is standaard.

    • Geheimenobject: geef de geheimen op die moeten worden gemaakt als een JSON-object met een secrets matrix. Voorbeeld:

      {
        "secrets": [
          {
            "secretName": "adminpassword",
            "secretValue": "<your-secret-value>"
          }
        ]
      }
      

      Omdat Secrets Object een secureObject parameter is, wordt de waarde ervan niet vastgelegd of herhaald na de implementatie.

  3. Selecteer Beoordelen + creëren en selecteer daarna Creëren. Nadat de sleutelkluis en het geheim succesvol zijn uitgerold, ontvangt u een melding.

U kunt ook Azure PowerShell, de Azure CLI of de REST API gebruiken om de sjabloon te implementeren. Zie Sjablonen implementeren voor meer informatie over andere implementatiemethoden.

Een Key Vault RBAC-rol toewijzen

De sleutelkluis die door deze sjabloon 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.

  1. Uw Microsoft Entra gebruikersobject-id ophalen:

    az ad signed-in-user show --query id -o tsv
    
  2. Wijs de rol Key Vault Secrets Officer toe aan uzelf op de key vault:

    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

    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

Andere Key Vault quickstarts en handleidingen bouwen voort op deze quickstart. Als u van plan bent om verder te gaan met volgende snelle startgidsen en instructies, kunt u deze resources intact laten. Wanneer u deze niet meer nodig hebt, verwijdert u de resourcegroep, waarmee de Key Vault en gerelateerde resources worden verwijderd. De resourcegroep verwijderen met behulp van Azure CLI of Azure PowerShell:

echo "Enter the Resource Group name:" &&
read resourceGroupName &&
az group delete --name $resourceGroupName &&
echo "Press [ENTER] to continue ..."

Note

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 een ARM-sjabloon en de implementatie gevalideerd. Ga verder met de onderstaande artikelen voor meer informatie over Key Vault en Azure Resource Manager.