Schnellstart: Erstellen eines Azure-Schlüsseltresors und eines Schlüssels mithilfe einer ARM-Vorlage

Azure Key Vault ist ein Clouddienst, der einen sicheren Speicher für Geheimnisse wie Schlüssel, Kennwörter und Zertifikate bereitstellt. In dieser Schnellstartanleitung geht es um die Bereitstellung einer Azure Resource Manager-Vorlage (ARM-Vorlage) zum Erstellen eines Schlüsseltresors und eines Schlüssels.

Voraussetzungen

Führen Sie für diesen Artikel die folgenden Schritte aus:

Überprüfen der Vorlage

{
  "$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 der Vorlage sind zwei Ressourcen definiert:

Weitere Vorlagenbeispiele für Azure Key Vault finden Sie in Azure-Schnellstartvorlagen.

Parameter und Definitionen

Parameter Definition
keyOps Gibt Vorgänge an, die unter Verwendung des Schlüssels ausgeführt werden können. Ohne Angabe dieses Parameters können alle Vorgänge ausgeführt werden. Zulässige Werte für diesen Parameter sind eine durch Kommas getrennte Liste mit Schlüsselvorgängen gemäß JWK-Spezifikation (JSON Web Key):
["sign", "verify", "encrypt", "decrypt", " wrapKey", "unwrapKey"]
CurveName Name der elliptischen Kurve (Elliptic Curve, EC) für den EC-Schlüsseltyp. Weitere Informationen finden Sie unter JsonWebKeyCurveName.
Kty Die Art des zu erstellenden Schlüssels. Gültige Werte finden Sie unter JsonWebKeyType.
Tags Anwendungsspezifische Metadaten in Form von Schlüssel-Wert-Paaren.
nbf Gibt die Zeit (als DateTime-Objekt) an, vor der der Schlüssel nicht verwendet werden kann. Das Format ist ein Unix-Zeitstempel (die Anzahl von Sekunden nach der Unix-Epoche am 1. Januar 1970 in UTC).
exp Gibt die Ablaufzeit als DateTime-Objekt an. Das Format ist ein Unix-Zeitstempel (die Anzahl von Sekunden nach der Unix-Epoche am 1. Januar 1970 in UTC).

Bereitstellen der Vorlage

Sie können auch das Azure-Portal, Azure PowerShell, die Azure CLI oder die REST-API verwenden. Informationen zu Bereitstellungsmethoden finden Sie unter Bereitstellen von Vorlagen.

Überprüfen der bereitgestellten Ressourcen

Sie können den Schlüsseltresor und den Schlüssel über das Azure-Portal überprüfen. Alternativ können Sie das folgende Azure CLI- oder Azure PowerShell-Skript verwenden, um den erstellten Schlüssel aufzulisten.

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

Das Erstellen eines Schlüssels mithilfe einer ARM-Vorlage unterscheidet sich vom Erstellen eines Schlüssels über die Datenebene.

Erstellen eines Schlüssels mit ARM

  • Es ist nur möglich, neue Schlüssel zu erstellen. Es ist nicht möglich, vorhandene Schlüssel zu aktualisieren oder neue Versionen vorhandener Schlüssel zu erstellen. Wenn der Schlüssel bereits vorhanden ist, wird der vorhandene Schlüssel aus dem Speicher abgerufen und verwendet (es treten keine Schreibvorgänge auf).

  • Um zur Verwendung dieser API berechtigt zu sein, muss der Aufrufer über die Aktion Microsoft.KeyVault/vaults/keys/write der rollenbasierten Zugriffssteuerung (Role-Based Access Control, RBAC) verfügen. Die integrierte Rolle „Key Vault-Mitwirkender“ ist ausreichend, da sie alle RBAC-Aktionen autorisiert, die dem Muster „Microsoft.KeyVault/*“ entsprechen.

    Erstellen eines Schlüssels über ARM 1Erstellen eines Schlüssels über ARM 2

Vorhandene API (Erstellen eines Schlüssels über die Datenebene)

  • Es ist möglich, neue Schlüssel zu erstellen, vorhandene Schlüssel zu aktualisieren und neue Versionen vorhandener Schlüssel zu erstellen.
  • Der Aufrufer muss berechtigt sein, diese API zu verwenden. Wenn der Tresor Zugriffsrichtlinien verwendet, muss der Aufrufer über die Schlüsselberechtigung „Erstellen“ verfügen. Wenn der Tresor für RBAC aktiviert ist, muss der Aufrufer über die RBAC-DataAction „Microsoft.KeyVault/vaults/keys/create/action“ verfügen.

Bereinigen von Ressourcen

Andere Schnellstartanleitungen und Tutorials für Key Vault bauen auf dieser Schnellstartanleitung auf. Falls Sie mit weiteren Schnellstartanleitungen und Tutorials fortfahren möchten, sollten Sie die Ressourcen nicht bereinigen. Wenn Sie die Ressourcen nicht mehr benötigen, löschen Sie die Ressourcengruppe. Dadurch werden die Key Vault-Instanz und die dazugehörigen Ressourcen gelöscht. Die Ressourcengruppe kann über die Azure-Befehlszeilenschnittstelle oder mithilfe von Azure PowerShell gelöscht werden:

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

Nächste Schritte

In dieser Schnellstartanleitung haben Sie mithilfe einer ARM-Vorlage einen Schlüsseltresor und einen Schlüssel erstellt und die Bereitstellung überprüft. Weitere Informationen zu Key Vault und Azure Resource Manager finden Sie in den folgenden Artikeln.