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

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

Eine Azure Resource Manager-Vorlage ist eine JSON (JavaScript Object Notation)-Datei, welche die Infrastruktur und die Konfiguration für Ihr Projekt definiert. Die Vorlage verwendet eine deklarative Syntax. Sie beschreiben Ihre geplante Bereitstellung, ohne die Abfolge der Programmierbefehle zu schreiben, mit denen die Bereitstellung erstellt wird.

Wenn Ihre Umgebung die Voraussetzungen erfüllt und Sie mit der Verwendung von ARM-Vorlagen vertraut sind, wählen Sie die Schaltfläche Deploy to Azure aus. Die Vorlage wird im Azure-Portal geöffnet.

Schaltfläche zum Bereitstellen der Resource Manager-Vorlage in Azure.

Voraussetzungen

Gehen Sie wie folgt vor, um diesen Artikel abzuschließen:

Überprüfen der Vorlage

Die in dieser Schnellstartanleitung verwendete Vorlage stammt von der Seite mit den Azure-Schnellstartvorlagen.

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

In der Vorlage sind zwei Ressourcen definiert:

Die Vorlage erstellt den Schlüsseltresor mit aktivierter Azure RBAC-Autorisierung. Dies bedeutet, dass der Tresor für die Autorisierung der Datenebene die rollenbasierte Zugriffssteuerung von Azure (Azure RBAC) anstelle von Zugriffsrichtlinien verwendet.

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

Vorlagenparameter

Parameter Beschreibung
vaultName Der Name des neuen Schlüsseltresors. Muss innerhalb des vault.azure.net-Namespace global eindeutig sein.
Keyname Name des Schlüssels, der im Tresor erstellt werden soll.
Standort. Azure-Region für die Ressourcen. Standardmäßig wird der Speicherort der Ressourcengruppe verwendet.
skuName Tresor-SKU. standard (Standard) oder premium.
keyType Der Typ des zu erstellenden Schlüssels. Einer von RSA, RSA-HSM, EC, EC-HSM. Der Standardwert ist RSA. Siehe JsonWebKeyType.
Keysize Größe in Bits des Schlüssels (nur RSA). Der Standardwert ist 2048.
curveName Name der elliptischen Kurve (nur EC-Schlüssel). Einer von P-256, P-256K, P-384, P-521. Siehe JsonWebKeyCurveName.
keyOps Zulässige JSON-Webschlüsselvorgänge für den Schlüssel (z. B ["sign","verify","encrypt","decrypt","wrapKey","unwrapKey"]. ). Leeres Array (Standard) ermöglicht alle Vorgänge.

Implementieren der Vorlage

  1. Klicken Sie auf das folgende Bild, um sich bei Azure anzumelden und eine Vorlage zu öffnen. Die Vorlage erstellt einen Key Vault und einen Schlüssel.

    Schaltfläche zum Bereitstellen der Resource Manager-Vorlage in Azure.

  2. Wählen Sie die folgenden Werte aus, bzw. geben Sie sie ein. Wenn sie nicht angegeben ist, verwenden Sie den Standardwert.

    • Abonnement: Wählen Sie ein Azure-Abonnement aus.
    • Ressourcengruppe: Wählen Sie die Option Neu erstellen aus, geben Sie einen eindeutigen Namen für die Ressourcengruppe ein, und wählen Sie dann OK aus.
    • Region: Wählen Sie einen Speicherort aus. Beispiel: USA, Mitte.
    • Tresorname: Geben Sie einen Namen für den Schlüsseltresor ein, der innerhalb des vault.azure.net Namespace global eindeutig sein muss.
    • Schlüsselname: Geben Sie einen Namen für den Schlüssel ein, den Sie im Schlüsseltresor speichern.
    • Sku-Name: Wählen Sie "Standard " oder "Premium" aus. Der Standardwert ist Standard.
    • Schlüsseltyp: Wählen Sie einen Schlüsseltyp aus. Der Standardwert ist RSA.
    • Schlüsselgröße: Geben Sie eine Schlüsselgröße (RSA-Schlüssel) ein. Der Standardwert ist 2048.
    • Kurvenname: Wählen Sie für EC-Schlüssel eine Kurve aus. Für RSA-Schlüssel leer lassen.
  3. Klicken Sie aufÜberprüfen + erstellen und dann auf Erstellen. Nachdem der Schlüsseltresor und der Schlüssel erfolgreich bereitgestellt wurden, erhalten Sie eine Benachrichtigung.

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

Zuweisen einer RBAC-Rolle für Key Vault

Der von dieser Vorlage erstellte Schlüsseltresor verwendet Azure RBAC für die Autorisierung. Um über die Datenebene auf Schlüssel zuzugreifen (z. B. mithilfe der Azure CLI oder Azure PowerShell), müssen Sie sich selbst eine entsprechende Rolle zuweisen.

  1. Rufen Sie Ihre Microsoft Entra-Benutzerobjekt-ID ab:

    az ad signed-in-user show --query id -o tsv
    
  2. Weisen Sie sich selbst für den Schlüsseltresor die Rolle Schlüsseltresor-Kryptografiebeauftragter zu:

    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

    Rollenzuweisungen können eine oder zwei Minuten dauern, bis sie verteilt werden.

Überprüfen der bereitgestellten Ressourcen

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

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

Das Erstellen von Schlüsseln mithilfe der ARM-Vorlage unterscheidet sich vom Erstellen von Schlüsseln über die Datenebene.

Erstellen eines Schlüssels über 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 (Azure RBAC) verfügen. Die integrierte Rolle "Key Vault Contributor" ist ausreichend, da sie alle Azure RBAC-Aktionen autorisiert, die mit dem Muster "Microsoft.KeyVault/*" übereinstimmen.

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

Vorhandene API (Erstellen eines API-Schlüssels über 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 für die Verwendung dieser API autorisiert sein. Wenn der Tresor für Azure RBAC aktiviert ist, muss der Aufrufer über die Azure RBAC-DataAction „Microsoft.KeyVault/vaults/keys/create/action“ verfügen.

Bereinigen von Ressourcen

Andere Key Vault-Schnellstarts und Lernprogramme bauen auf dieser Schnellstartanleitung auf. Wenn Sie planen, mit weiteren Schnellstartanleitungen und Tutorials fortzufahren, möchten Sie diese Ressourcen vielleicht an Ort und Stelle belassen. Wenn die Ressourcengruppe nicht mehr benötigt wird, löschen Sie sie, wodurch der Key Vault und die damit verbundenen Ressourcen gelöscht werden. 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 ..."

Note

Durch das Löschen der Ressourcengruppe wird auch der Schlüsseltresor gelöscht, der Tresor wechselt dann jedoch in einen vorläufig gelöschten Status und bleibt für den Aufbewahrungszeitraum wiederherstellbar (standardmäßig 90 Tage). Der Tresorname bleibt während dieses Zeitraums global reserviert, und da der Löschschutz aktiviert ist, kann der Tresor nicht frühzeitig gelöscht werden. Für Standard-Schlüsseltresore fallen für vorläufig gelöschte Schlüsseltresore keine Gebühren an. Weitere Informationen finden Sie unter Übersicht über die Schlüsseltresor-Funktion für vorläufiges Löschen.

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 diesen Artikeln.