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

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

Шаблон Azure Resource Manager — это файл нотации объектов JavaScript (JSON), который определяет инфраструктуру и конфигурацию проекта. В шаблоне используется декларативный синтаксис. Вы описываете предполагаемое развертывание без написания последовательности команд программирования для создания развертывания.

Если ваша среда соответствует предварительным требованиям и вы знакомы с использованием шаблонов ARM, нажмите кнопку Deploy to Azure. Шаблон откроется на портале Azure.

Кнопка для развертывания шаблона

Необходимые условия

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

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

Шаблон, используемый в этом кратком руководстве, взят из шаблонов быстрого запуска Azure.

{
  "$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": "5424899472990749957"
    }
  },
  "parameters": {
    "keyVaultName": {
      "type": "string",
      "metadata": {
        "description": "Specifies the name of the key vault."
      }
    },
    "location": {
      "type": "string",
      "defaultValue": "[resourceGroup().location]",
      "metadata": {
        "description": "Specifies the Azure location where the key vault should be created."
      }
    },
    "enabledForDeployment": {
      "type": "bool",
      "defaultValue": false,
      "metadata": {
        "description": "Specifies whether Azure Virtual Machines are permitted to retrieve certificates stored as secrets from the key vault."
      }
    },
    "enabledForDiskEncryption": {
      "type": "bool",
      "defaultValue": false,
      "metadata": {
        "description": "Specifies whether Azure Disk Encryption is permitted to retrieve secrets from the vault and unwrap keys."
      }
    },
    "enabledForTemplateDeployment": {
      "type": "bool",
      "defaultValue": false,
      "metadata": {
        "description": "Specifies whether Azure Resource Manager is permitted to retrieve secrets from the key vault."
      }
    },
    "tenantId": {
      "type": "string",
      "defaultValue": "[subscription().tenantId]",
      "metadata": {
        "description": "Specifies the Azure Active Directory tenant ID that should be used for authenticating requests to the key vault. Get it by using Get-AzSubscription cmdlet."
      }
    },
    "skuName": {
      "type": "string",
      "defaultValue": "standard",
      "allowedValues": [
        "standard",
        "premium"
      ],
      "metadata": {
        "description": "Specifies whether the key vault is a standard vault or a premium vault."
      }
    },
    "secretName": {
      "type": "string",
      "metadata": {
        "description": "Specifies the name of the secret that you want to create."
      }
    },
    "secretValue": {
      "type": "securestring",
      "metadata": {
        "description": "Specifies the value of the secret that you want to create."
      }
    }
  },
  "resources": [
    {
      "type": "Microsoft.KeyVault/vaults",
      "apiVersion": "2023-07-01",
      "name": "[parameters('keyVaultName')]",
      "location": "[parameters('location')]",
      "properties": {
        "enabledForDeployment": "[parameters('enabledForDeployment')]",
        "enabledForDiskEncryption": "[parameters('enabledForDiskEncryption')]",
        "enabledForTemplateDeployment": "[parameters('enabledForTemplateDeployment')]",
        "enableRbacAuthorization": true,
        "tenantId": "[parameters('tenantId')]",
        "enableSoftDelete": true,
        "softDeleteRetentionInDays": 90,
        "enablePurgeProtection": true,
        "sku": {
          "name": "[parameters('skuName')]",
          "family": "A"
        },
        "networkAcls": {
          "defaultAction": "Allow",
          "bypass": "AzureServices"
        }
      }
    },
    {
      "type": "Microsoft.KeyVault/vaults/secrets",
      "apiVersion": "2023-07-01",
      "name": "[format('{0}/{1}', parameters('keyVaultName'), parameters('secretName'))]",
      "properties": {
        "value": "[parameters('secretValue')]"
      },
      "dependsOn": [
        "[resourceId('Microsoft.KeyVault/vaults', parameters('keyVaultName'))]"
      ]
    }
  ],
  "outputs": {
    "location": {
      "type": "string",
      "value": "[parameters('location')]"
    },
    "name": {
      "type": "string",
      "value": "[parameters('keyVaultName')]"
    },
    "resourceGroupName": {
      "type": "string",
      "value": "[resourceGroup().name]"
    },
    "resourceId": {
      "type": "string",
      "value": "[resourceId('Microsoft.KeyVault/vaults', parameters('keyVaultName'))]"
    }
  }
}

В этом шаблоне определяется один ресурс Azure.

  • Microsoft.KeyVault/vaults: создайте хранилище ключей Azure. Шаблон включает поддержку авторизации Azure RBAC (enableRbacAuthorization: true), обратимого удаления и защиты от очистки.

Дополнительные примеры шаблонов Azure Key Vault можно найти в Azure Quickstart Templates.

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

  1. Выберите следующее изображение, чтобы войти в Azure и открыть шаблон. Шаблон создает хранилище ключей.

    Кнопка для развертывания шаблона

  2. Введите или выберите следующие значения. Если оно не указано, используйте значение по умолчанию.

    • Subscription: выберите подписку Azure.
    • Группа ресурсов. Щелкните Создать, введите уникальное имя новой группы ресурсов и щелкните ОК.
    • Регион: выберите расположение. Например, центральная часть США.
    • Имя хранилища: введите имя хранилища ключей, которое должно быть глобально уникальным в vault.azure.net пространстве имен.
    • Имя SKU: выберите "Стандартный " или "Премиум". Значение по умолчанию является стандартным.
  3. Выберите Проверить и создать, а затем выберите Создать. После успешного развертывания хранилища ключей вы получите уведомление.

Вы также можете использовать Azure PowerShell, Azure CLI или REST API для развертывания шаблона. Сведения о других методах развертывания см. в статье Deploy templates.

Назначьте роль RBAC для Key Vault

Хранилище ключей, созданное этим шаблоном, использует Azure RBAC для авторизации. Чтобы создать или прочитать ключи, секреты или сертификаты с помощью плоскости данных, необходимо назначить себе соответствующую роль. Например, чтобы управлять секретами, назначьте себе роль Key Vault Secrets Officer:

echo "Enter your key vault name:" &&
read keyVaultName &&
az role assignment create --role "Key Vault Secrets 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

Сведения о других встроенных ролях см. в разделе встроенные роли Azure для операций плоскости данных Key Vault. Изменения в назначении ролей могут вступить в силу через одну-две минуты.

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

Вы можете использовать портал Azure для проверки хранилища ключей или использовать следующий скрипт Azure CLI или Azure PowerShell:

echo "Enter your key vault name:" &&
read keyVaultName &&
az keyvault show --name $keyVaultName

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

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

echo "Enter the Resource Group name:" &&
read resourceGroupName &&
az group delete --name $resourceGroupName

Note

При удалении группы ресурсов также удаляется хранилище ключей, но затем оно переходит в состояние обратимого удаления и может быть восстановлено в течение срока хранения (по умолчанию 90 дней). Имя хранилища остается зарезервированным глобально в течение этого периода, и поскольку защита очистки включена, хранилище не может быть удалено рано. Для стандартных хранилищ ключей плата за хранилища, помеченные как обратимо удаленные, не взимается. Дополнительные сведения см. в разделе Обзор обратимого удаления в Key Vault.

Дополнительные шаблоны Resource Manager для Key Vault

В других кратких руководствах пошагово описывается, как заполнить хранилище ключей секретами, ключами или сертификатами:

Secrets Keys Сертификаты

Дополнительные шаблоны для Key Vault можно найти здесь: Справочник по Resource Manager для Key Vault.

Дальнейшие действия