Поделиться через


Краткое руководство. Создание хранилища ключей Azure и ключа с помощью шаблона ARM

Azure Key Vault — это облачная служба, которая предоставляет безопасное хранилище секретов, таких как ключи, пароли и сертификаты. В этом кратком руководстве рассматривается процесс развертывания шаблона Azure Resource Manager (шаблона ARM) для создания хранилища ключей и ключа.

Предпосылки

Чтобы завершить эту статью, выполните указанные ниже действия.

  • Если у вас нет подписки на Azure, создайте бесплатную учетную запись перед началом.
  • Пользователю необходимо, чтобы ему была назначена встроенная роль Azure, рекомендуется роль Contributor. Дополнительные сведения см. здесь.

Проверьте шаблон

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

В шаблоне определены два ресурса:

Дополнительные примеры шаблонов Azure Key Vault можно найти в шаблонах быстрого запуска Azure.

Параметры и определения

Параметр Definition
keyOps Указывает операции, которые можно выполнять с помощью ключа. Если этот параметр не указан, все операции можно выполнить. Допустимые значения для этого параметра — это разделенный запятыми список ключевых операций, определенных спецификацией веб-ключа JSON (JWK):
["sign", "verify", "encrypt", "decrypt", " wrapKey", "unwrapKey"]
Имя кривой Название эллиптической кривой (EC) для типа ключа EC. См. jsonWebKeyCurveName
Kty Тип создаваемого ключа. Допустимые значения см. в разделе JsonWebKeyType
Теги Метаданные, относящиеся к приложению, в виде пар "ключ-значение".
nbf Указывает время в качестве объекта DateTime, перед которым не удается использовать ключ. Формат будет представлять собой метку времени Unix, выраженную в количестве секунд после эпохи Unix, начиная с 1 января 1970 года в UTC.
exp Указывает время окончания срока действия в качестве объекта DateTime. Формат будет представлять собой метку времени Unix, выраженную в количестве секунд после эпохи Unix, начиная с 1 января 1970 года в UTC.

Развертывание шаблона

Вы можете использовать портал Azure, Azure PowerShell, Azure CLI или REST API. Дополнительные сведения о методах развертывания см. в разделе "Развертывание шаблонов".

Проверка развернутых ресурсов

Портал Azure можно использовать для проверки хранилища ключей и ключа. Кроме того, используйте следующий скрипт Azure CLI или Azure PowerShell для перечисления созданного ключа.

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

Создание ключа с помощью шаблона ARM отличается от создания ключа с помощью плоскости данных

Создание ключа с помощью ARM

  • Создать можно только новые ключи. Невозможно обновить существующие ключи или создать новые версии существующих ключей. Если ключ уже существует, то существующий ключ извлекается из хранилища и используется (операции записи не будут выполняться).

  • Чтобы быть авторизованным для использования этого API, вызывающий объект должен иметь действие "Microsoft.KeyVault/vaults/keys/write" для доступа на основе ролей (RBAC). Встроенная роль "Key Vault Contributor" достаточна, так как она авторизует все действия RBAC, соответствующие шаблону "Microsoft.KeyVault/*".

    Создайте ключ с помощью ARM 1 Создайте ключ с помощью ARM 2

Существующий API (создание ключа с помощью плоскости данных)

  • Можно создать новые ключи, обновить существующие ключи и создать новые версии существующих ключей.
  • Вызывающий объект должен быть авторизован для использования этого API. Если хранилище использует политики доступа, вызывающий объект должен иметь разрешение на "создание" ключей; если хранилище включено для RBAC, вызывающий объект должен иметь разрешение "Microsoft.KeyVault/vaults/keys/create/action" RBAC DataAction.

Очистите ресурсы

Другие краткие руководства и учебные материалы по Key Vault основаны на этом кратком руководстве. Если вы планируете продолжить работу с последующими быстрыми стартами и руководствами, вы можете пожелать оставить эти ресурсы на месте. При отсутствии необходимости удалите группу ресурсов, которая удаляет Хранилище ключей и связанные ресурсы. Чтобы удалить группу ресурсов с помощью Azure CLI или Azure PowerShell, выполните следующие действия.

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

Дальнейшие шаги

В этом кратком руководстве вы создали хранилище ключей и ключ, используя шаблон ARM, и проверили развертывание. Дополнительные сведения о Key Vault и Azure Resource Manager см. в следующих статьях.