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.

  • Uw Microsoft Entra gebruikersobject-id is nodig voor de sjabloon om machtigingen te configureren. Met de volgende procedure wordt de object-id (GUID) opgehaald.

    1. Voer de volgende opdracht Azure PowerShell of Azure CLI uit door Try it te selecteren en plak het script in het shell-deelvenster. Plak het script door met de rechtermuisknop op de shell te klikken en Plakken te selecteren.

      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. Noteer de object-id. U hebt deze nodig in de volgende sectie van deze quickstart.

De sjabloon controleren

Belangrijk

In deze quickstart wordt een externe sjabloon gebruikt waarmee een kluis met verouderd toegangsbeleid wordt gemaakt. Voor productie-implementaties gebruikt u in plaats daarvan Azure RBAC-autorisatie. Zie Een sleutelkluis maken met behulp van een ARM-sjabloon voor een sjabloon die gebruikmaakt van enableRbacAuthorization: true of zie Beveilig uw Azure Key Vault voor uitgebreide beveiligingsrichtlijnen.

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.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'))]"
    }
  }
}

Er worden twee Azure resources gedefinieerd in de sjabloon:

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.

    ARM-sjabloon, Key Vault integratie, portal implementeren

    Tenzij deze is opgegeven, gebruikt u de standaardwaarde om de sleutelkluis en een geheim te maken.

    • Subscription: selecteer een Azure-abonnement.
    • Resourcegroep: selecteer Nieuwe maken, geef een unieke naam op voor de resourcegroep en klik op OK.
    • Locatie: selecteer een locatie. Bijvoorbeeld Centraal VS.
    • Key Vault Naam: voer een naam in voor de key vault, die globaal uniek moet zijn binnen de .vault.azure.net-naamruimte. U hebt de naam in de volgende sectie nodig wanneer u de implementatie valideert.
    • Tenant-id: de sjabloonfunctie haalt automatisch uw tenant-id op. Wijzig de standaardwaarde niet.
    • Gebruikers-id: voer uw Microsoft Entra gebruikersobject-id in die u hebt opgehaald uit Prerequisites.
    • Geheime naam: voer een naam in voor het geheim dat u opslaat in de sleutelkluis. Bijvoorbeeld adminpassword.
    • Geheime waarde: voer de geheime waarde in. Als u een wachtwoord opslaat, is het raadzaam om het gegenereerde wachtwoord te gebruiken dat u hebt gemaakt in Vereisten.
    • Ik ga akkoord met de bovenstaande voorwaarden: selecteer dit.
  3. Kies Kopen. Nadat de sleutelkluis succesvol is gedeployed, krijgt u een melding:

    ARM-sjabloon, Key Vault integratie, portalmelding implementeren

De Azure-portal wordt gebruikt om de sjabloon te implementeren. Naast de Azure-portal kunt u ook de Azure PowerShell, Azure CLI en REST API gebruiken. Zie Sjablonen implementeren voor meer informatie over andere implementatiemethoden.

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 uitvoer ziet er ongeveer als volgt uit:

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

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.