Quickstart: Een Azure-sleutelkluis en een sleutel maken met behulp van een ARM-sjabloon

Azure Key Vault is een cloudservice die een beveiligd archief biedt voor geheimen, zoals sleutels, wachtwoorden en certificaten. Deze quickstart gaat over het implementeren van een Azure Resource Manager-sjabloon (ARM-sjabloon) om een Key Vault en een key 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:

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": "9113739717796369919"
    }
  },
  "parameters": {
    "vaultName": {
      "type": "string",
      "metadata": {
        "description": "The name of the key vault to be created."
      }
    },
    "keyName": {
      "type": "string",
      "metadata": {
        "description": "The name of the key to be created."
      }
    },
    "location": {
      "type": "string",
      "defaultValue": "[resourceGroup().location]",
      "metadata": {
        "description": "The location of the resources."
      }
    },
    "skuName": {
      "type": "string",
      "defaultValue": "standard",
      "allowedValues": [
        "standard",
        "premium"
      ],
      "metadata": {
        "description": "The SKU of the vault to be created."
      }
    },
    "keyType": {
      "type": "string",
      "defaultValue": "RSA",
      "allowedValues": [
        "EC",
        "EC-HSM",
        "RSA",
        "RSA-HSM"
      ],
      "metadata": {
        "description": "The JsonWebKeyType of the key to be created."
      }
    },
    "keyOps": {
      "type": "array",
      "defaultValue": [],
      "metadata": {
        "description": "The permitted JSON web key operations of the key to be created."
      }
    },
    "keySize": {
      "type": "int",
      "defaultValue": 2048,
      "metadata": {
        "description": "The size in bits of the key to be created."
      }
    },
    "curveName": {
      "type": "string",
      "defaultValue": "",
      "allowedValues": [
        "",
        "P-256",
        "P-256K",
        "P-384",
        "P-521"
      ],
      "metadata": {
        "description": "The JsonWebKeyCurveName of the key to be created."
      }
    }
  },
  "resources": [
    {
      "type": "Microsoft.KeyVault/vaults",
      "apiVersion": "2023-07-01",
      "name": "[parameters('vaultName')]",
      "location": "[parameters('location')]",
      "properties": {
        "enableRbacAuthorization": true,
        "enableSoftDelete": true,
        "softDeleteRetentionInDays": 90,
        "enablePurgeProtection": true,
        "enabledForDeployment": false,
        "enabledForDiskEncryption": false,
        "enabledForTemplateDeployment": false,
        "tenantId": "[subscription().tenantId]",
        "sku": {
          "name": "[parameters('skuName')]",
          "family": "A"
        },
        "networkAcls": {
          "defaultAction": "Allow",
          "bypass": "AzureServices"
        }
      }
    },
    {
      "type": "Microsoft.KeyVault/vaults/keys",
      "apiVersion": "2023-07-01",
      "name": "[format('{0}/{1}', parameters('vaultName'), parameters('keyName'))]",
      "properties": {
        "kty": "[parameters('keyType')]",
        "keyOps": "[parameters('keyOps')]",
        "keySize": "[parameters('keySize')]",
        "curveName": "[parameters('curveName')]"
      },
      "dependsOn": [
        "[resourceId('Microsoft.KeyVault/vaults', parameters('vaultName'))]"
      ]
    }
  ],
  "outputs": {
    "proxyKey": {
      "type": "object",
      "value": "[reference(resourceId('Microsoft.KeyVault/vaults/keys', parameters('vaultName'), parameters('keyName')), '2023-07-01')]"
    },
    "location": {
      "type": "string",
      "value": "[parameters('location')]"
    },
    "name": {
      "type": "string",
      "value": "[parameters('vaultName')]"
    },
    "resourceGroupName": {
      "type": "string",
      "value": "[resourceGroup().name]"
    },
    "resourceId": {
      "type": "string",
      "value": "[resourceId('Microsoft.KeyVault/vaults', parameters('vaultName'))]"
    }
  }
}

Er worden twee resources gedefinieerd in de sjabloon:

De sjabloon maakt de sleutelkluis aan waarvoor Azure RBAC-autorisatie is ingeschakeld. Dit betekent dat de kluis gebruikmaakt van Azure op rollen gebaseerd toegangsbeheer (Azure RBAC) voor autorisatie van gegevensvlakken in plaats van toegangsbeleid.

Meer Voorbeelden van Azure Key Vault-sjablonen vindt u in Azure Quickstart-sjablonen.

Sjabloonparameters

Kenmerk Description
vaultName Naam van de nieuwe sleutelkluis. Moet globaal uniek zijn binnen de vault.azure.net naamruimte.
keyName De naam van de sleutel die u in de kluis wilt maken.
plaats Regio voor Azure bronnen. De standaardinstelling is de locatie van de resourcegroep.
skuName Vault-SKU. standard (standaard) of premium.
keyType Het type sleutel dat moet worden gemaakt. Een vanRSA, RSA-HSM, EC, . EC-HSM De standaardwaarde is RSA. Zie JsonWebKeyType.
keySize Grootte in bits van de sleutel (alleen RSA). De standaardwaarde is 2048.
curveName Naam van de elliptische curve (alleen EC-sleutels). Een vanP-256, P-256K, P-384, . P-521 Zie JsonWebKeyCurveName.
keyOps Toegestane JSON-websleutelbewerkingen voor de sleutel (bijvoorbeeld ["sign","verify","encrypt","decrypt","wrapKey","unwrapKey"]). Met een lege matrix (standaard) kunnen alle bewerkingen worden uitgevoerd.

De sjabloon implementeren

  1. Selecteer de volgende afbeelding om u aan te melden bij Azure en een sjabloon te openen. De sjabloon maakt een Key Vault en een sleutel.

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

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

    • Abonnement: 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.
    • Kluisnaam: voer een naam in voor de sleutelkluis, die globaal uniek moet zijn binnen de vault.azure.net naamruimte.
    • Sleutelnaam: voer een naam in voor de sleutel die u opslaat in de sleutelkluis.
    • SKU-naam: selecteer Standard of Premium. De standaardwaarde is standaard.
    • Sleuteltype: selecteer een sleuteltype. De standaardwaarde is RSA.
    • Sleutelgrootte: voer een sleutelgrootte (RSA-sleutels) in. De standaardwaarde is 2048.
    • Curvenaam: selecteer voor EC-sleutels een curve. Laat leeg voor RSA-sleutels.
  3. Selecteer Beoordelen + creëren en selecteer daarna Creëren. Nadat de sleutelkluis en de sleutel succesvol zijn geïmplementeerd, 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 sleutels 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 Crypto Officer toe aan uzelf op de key vault:

    echo "Enter your key vault name:" &&
    read keyVaultName &&
    az role assignment create --role "Key Vault Crypto 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 de sleutel te controleren. U kunt ook het volgende Azure CLI- of Azure PowerShell-script gebruiken om de gemaakte sleutel weer te geven.

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

Het maken van een sleutel met behulp van een ARM-sjabloon verschilt van het maken van een sleutel via het gegevensvlak

Een sleutel maken via ARM

  • Het is alleen mogelijk nieuwe sleutels te maken. Het is niet mogelijk om bestaande sleutels bij te werken en geen nieuwe versies van bestaande sleutels te maken. Als de sleutel al bestaat, wordt de bestaande sleutel opgehaald uit de opslag en gebruikt (er worden geen schrijfbewerkingen uitgevoerd).

  • Om geautoriseerd te zijn voor het gebruik van deze API, moet de aanroeper beschikken over de rolgebaseerde toegangscontrole-actie (Azure RBAC) "Microsoft.KeyVault/vaults/keys/write". De ingebouwde rol Key Vault-inzender is voldoende, omdat hiermee alle Azure RBAC-acties worden geautoriseerd die overeenkomen met het patroon Microsoft.KeyVault/*.

    Een sleutel maken via ARM 1 Een sleutel maken via ARM 2

Bestaande API (sleutel maken via gegevensvlak)

  • Het is mogelijk om nieuwe sleutels te maken, bestaande sleutels bij te werken en nieuwe versies van bestaande sleutels te maken.
  • De aanroeper moet zijn gemachtigd om deze API te kunnen gebruiken. Als de kluis is ingesteld voor Azure RBAC, moet de aanroeper de Azure RBAC DataAction "Microsoft.KeyVault/vaults/keys/create/action" hebben.

De hulpbronnen opschonen

Andere Key Vault-snelstarts en tutorials 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 de resourcegroep niet meer nodig hebt, verwijdert u de resourcegroep, waarmee de Sleutelkluis en gerelateerde resources worden verwijderd. Zo verwijdert u de resourcegroep 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 sleutel gemaakt met behulp van een ARM-sjabloon en de implementatie gevalideerd. Zie deze artikelen voor meer informatie over Key Vault en Azure Resource Manager.