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 behandelt het implementeren van een ARM-sjabloon (Azure Resource Manager-sjabloon) voor het maken van een sleutelkluis en een sleutel.

Vereisten

Voor het voltooien van dit artikel, is het volgende vereist:

De sjabloon controleren

{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "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": "2021-11-01-preview",
      "name": "[parameters('vaultName')]",
      "location": "[parameters('location')]",
      "properties": {
        "accessPolicies": [],
        "enableRbacAuthorization": true,
        "enableSoftDelete": true,
        "softDeleteRetentionInDays": "90",
        "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": "2021-11-01-preview",
      "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')))]"
    }
  }
}

In de sjabloon worden twee resources gedefinieerd:

In Azure-quickstart-sjablonen vindt u meer voorbeelden van Azure Key Vault-sjablonen.

Parameters en definities

Parameter Definitie
keyOps Hiermee geeft u bewerkingen op die kunnen worden uitgevoerd met behulp van de sleutel. Als u deze parameter niet opgeeft, kunnen alle bewerkingen worden uitgevoerd. De acceptabele waarden voor deze parameter zijn een door komma's gescheiden lijst met sleutelbewerkingen zoals gedefinieerd door de JWK-specificatie (JSON Web Key):
["sign", "verify", "encrypt", "decrypt", " wrapKey", "unwrapKey"]
CurveName Elliptische curve (EC)-naam voor EC-sleuteltype. Zie JsonWebKeyCurveName
Kty Het type sleutel dat moet worden gemaakt. Zie JsonWebKeyType voor geldige waarden.
Tags Toepassingsspecifieke metagegevens in de vorm van sleutel-waardeparen.
nbf Hiermee geeft u de tijd, als een Datum/tijd-object, waarvoor de sleutel niet kan worden gebruikt. De notatie is unix-tijdstempel (het aantal seconden na Unix Epoch op 1 januari 1970 om UTC).
exp Hiermee geeft u de verlooptijd op als een DateTime-object. De notatie is unix-tijdstempel (het aantal seconden na Unix Epoch op 1 januari 1970 om UTC).

De sjabloon implementeren

U kunt Azure Portal, Azure PowerShell, Azure CLI of REST API gebruiken. Zie Sjablonen implementeren voor meer informatie over implementatiemethoden.

Geïmplementeerde resources bekijken

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 een gegevensvlak

Een sleutel maken via ARM

  • Het is alleen mogelijk om 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 gemachtigd te zijn om deze API te gebruiken, moet de aanroeper beschikken over de RBAC-actie ( Microsoft.KeyVault/vaults/keys/write ). De ingebouwde rol 'Key Vault Inzender' is voldoende, omdat hiermee alle RBAC-acties worden geautoriseerd die overeenkomen met het patroon 'Microsoft.KeyVault/*'.

    Een sleutel maken via ARM 1Een 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 gemachtigd zijn om deze API te gebruiken. Als de kluis toegangsbeleid gebruikt, moet de aanroeper de sleutelmachtiging 'maken' hebben; Als de kluis is ingeschakeld voor RBAC, moet de aanroeper beschikken over 'Microsoft.KeyVault/vaults/keys/create/action' RBAC DataAction.

Resources opschonen

Andere Key Vault-snelstarts en zelfstudies bouwen voort op deze snelstart. Als u van plan bent om verder te gaan met volgende snelstarts en zelfstudies, kunt u deze resources intact laten. Als u die niet meer nodig hebt, verwijdert u de resourcegroep. Hierdoor worden ook de sleutelkluis en de gerelateerde resources 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 sleutel gemaakt met behulp van een ARM-sjabloon en hebt u de implementatie gevalideerd. Raadpleeg deze artikelen voor meer informatie over Key Vault en Azure Resource Manager.