Udostępnij przez


Rozpoczęcie pracy: Utwórz skarbiec kluczy platformy Azure i klucz przy użyciu szablonu ARM

Azure Key Vault to usługa w chmurze, która zapewnia bezpieczny magazyn wpisów tajnych, takich jak klucze, hasła i certyfikat. Ten szybki start koncentruje się na procesie wdrażania szablonu usługi ARM do utworzenia magazynu kluczy i klucza.

Wymagania wstępne

Aby ukończyć ten artykuł:

  • Jeśli nie masz subskrypcji Azure, przed rozpoczęciem utwórz darmowe konto.
  • Użytkownik powinien mieć przypisaną wbudowaną rolę platformy Azure, zalecana rola to współautor. Dowiedz się więcej tutaj

Przegląd szablonu

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

Dwa zasoby są zdefiniowane w szablonie:

Więcej przykładów szablonów usługi Azure Key Vault można znaleźć w artykule Szablony szybkiego startu platformy Azure.

Parametry i definicje

Parameter Definition
keyOps Określa operacje, które mogą być wykonywane przy użyciu klucza. Jeśli nie określisz tego parametru, wszystkie operacje można wykonać. Dopuszczalne wartości dla tego parametru to rozdzielona przecinkami lista operacji klucza zdefiniowanych przez specyfikację klucza internetowego JSON (JWK):
["sign", "verify", "encrypt", "decrypt", " wrapKey", "unwrapKey"]
CurveName Nazwa krzywej eliptycznej (EC) dla kluczy typu EC. Zobacz JsonWebKeyCurveName
Kty Typ klucza, który należy utworzyć. Prawidłowe wartości można znaleźć w temacie JsonWebKeyType
tagi Metadane specyficzne dla aplikacji w postaci par klucz-wartość.
nbf Określa godzinę jako obiekt DateTime, przed którym nie można użyć klucza. Formatem będzie sygnatura czasowa systemu Unix (liczba sekund po epoce Unix od 1 stycznia 1970, o UTC).
Exp Określa czas wygaśnięcia jako obiekt DateTime. Formatem będzie sygnatura czasowa systemu Unix (liczba sekund po epoce Unix od 1 stycznia 1970, o UTC).

Wdrażanie szablonu

Możesz użyć witryny Azure Portal, programu Azure PowerShell, interfejsu wiersza polecenia platformy Azure lub interfejsu API REST. Aby dowiedzieć się więcej o metodach wdrażania, zobacz Wdrażanie szablonów.

Przeglądanie wdrożonych zasobów

Możesz użyć portalu Azure, aby sprawdzić magazyn kluczy i klucz. Alternatywnie użyj następującego interfejsu wiersza polecenia platformy Azure lub skryptu programu Azure PowerShell, aby wyświetlić listę utworzonych kluczy.

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

Tworzenie klucza przy użyciu szablonu usługi ARM różni się od tworzenia klucza za pośrednictwem płaszczyzny danych

Tworzenie klucza za pośrednictwem usługi ARM

  • Możliwe jest tworzenie tylko nowych kluczy. Nie można zaktualizować istniejących kluczy ani utworzyć nowych wersji istniejących kluczy. Jeśli klucz już istnieje, istniejący klucz jest pobierany z magazynu i używany (nie będą wykonywane żadne operacje zapisu).

  • Aby móc korzystać z tego interfejsu API, podmiot wywołujący musi mieć akcję "Microsoft.KeyVault/vaults/keys/write" w ramach kontroli dostępu opartej na rolach (Azure RBAC). Wbudowana rola "Współautor usługi Key Vault" jest wystarczająca, ponieważ autoryzuje wszystkie akcje RBAC platformy Azure zgodne ze wzorcem "Microsoft.KeyVault/*".

    Tworzenie klucza za pomocą usługi ARM 1 Tworzenie klucza za pośrednictwem usługi ARM 2

Istniejący interfejs API (tworzenie klucza za pośrednictwem płaszczyzny danych)

  • Można utworzyć nowe klucze, zaktualizować istniejące klucze i utworzyć nowe wersje istniejących kluczy.
  • Obiekt wywołujący musi być autoryzowany do korzystania z tego interfejsu API. Jeśli magazyn używa zasad dostępu, obiekt wywołujący musi mieć uprawnienie do "utworzenia" klucza; jeśli magazyn jest włączony dla Azure RBAC, obiekt wywołujący musi mieć akcję "Microsoft.KeyVault/vaults/keys/create/action" w ramach Azure RBAC DataAction.

Uprzątnij zasoby

Inne szybkie starty i samouczki dotyczące Key Vault bazują na tym szybkim starcie. Jeśli planujesz nadal korzystać z kolejnych szybkich startów i samouczków, warto pozostawić te zasoby na miejscu. Gdy grupa zasobów nie jest już potrzebna, usuń grupę zasobów, która usuwa usługę Key Vault i powiązane zasoby. Aby usunąć grupę zasobów przy użyciu interfejsu wiersza polecenia platformy Azure lub programu Azure PowerShell:

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

Dalsze kroki

W tym szybkim rozpoczęciu utworzono skarbiec kluczy i klucz przy użyciu szablonu ARM i zweryfikowano wdrożenie. Aby dowiedzieć się więcej o usłudze Key Vault i usłudze Azure Resource Manager, zobacz te artykuły.