Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Azure Key Vault — это облачная служба, которая предоставляет безопасное хранилище секретов, таких как ключи, пароли и сертификаты. В этом кратком руководстве рассматривается процесс развертывания шаблона Azure Resource Manager (шаблона ARM) для создания хранилища ключей и ключа.
Шаблон Azure Resource Manager — это файл нотации объектов JavaScript (JSON), который определяет инфраструктуру и конфигурацию проекта. В шаблоне используется декларативный синтаксис. Вы описываете предполагаемое развертывание без написания последовательности команд программирования для создания развертывания.
Если ваша среда соответствует предварительным требованиям и вы знакомы с использованием шаблонов ARM, нажмите кнопку Deploy to Azure. Шаблон откроется на портале Azure.
Предпосылки
Чтобы завершить эту статью, выполните указанные ниже действия.
- Если у вас нет подписки на Azure, создайте бесплатную учетную запись перед началом.
- Пользователю необходимо, чтобы ему была назначена встроенная роль Azure, рекомендуется роль Contributor. Дополнительные сведения см. здесь.
Проверьте шаблон
Шаблон, используемый в этом кратком руководстве, взят из шаблонов быстрого запуска 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": "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'))]"
}
}
}
В шаблоне определены два ресурса:
- Microsoft. KeyVault/vaults: создайте хранилище ключей Azure.
- Microsoft. KeyVault/vaults/keys: создайте ключ хранилища ключей.
Шаблон создает хранилище ключей с включенной авторизацией Azure RBAC. Это означает, что хранилище использует управление доступом на основе ролей Azure (Azure RBAC) для авторизации на уровне плоскости данных, а не политики доступа.
Дополнительные примеры шаблонов Azure Key Vault можно найти в шаблонах быстрого запуска Azure.
Параметры шаблона
| Параметр | Description |
|---|---|
| vaultName | Имя нового хранилища ключей. Должен быть глобально уникальным в vault.azure.net пространстве имен. |
| keyName | Имя ключа, создаваемого в хранилище. |
| расположение | Регион, в котором находятся ресурсы Azure. По умолчанию используется местоположение группы ресурсов. |
| skuName | Номер SKU хранилища.
standard (по умолчанию) или premium. |
| тип ключа | Тип создаваемого ключа. Один из RSA, RSA-HSM, EC, EC-HSM. По умолчанию — RSA. См. JsonWebKeyType. |
| keySize | Размер в битах ключа (только RSA). По умолчанию — 2048. |
| имя кривой | Имя эллиптической кривой (только для ключей EC). Один из P-256, P-256K, P-384, P-521. См. JsonWebKeyCurveName. |
| keyOps | Разрешенные операции веб-ключа JSON для ключа (например, ["sign","verify","encrypt","decrypt","wrapKey","unwrapKey"]). Пустой массив (по умолчанию) разрешает все операции. |
Развертывание шаблона
Выберите следующее изображение, чтобы войти в Azure и открыть шаблон. Шаблон создает хранилище ключей и ключ.
Введите или выберите следующие значения. Если оно не указано, используйте значение по умолчанию.
- Subscription: выберите подписку Azure.
- Группа ресурсов. Щелкните Создать, введите уникальное имя новой группы ресурсов и щелкните ОК.
- Регион: выберите расположение. Например, центральная часть США.
-
Имя хранилища: введите имя хранилища ключей, которое должно быть глобально уникальным в
vault.azure.netпространстве имен. - Имя ключа: введите имя ключа, который вы храните в хранилище ключей.
- Имя SKU: выберите "Стандартный " или "Премиум". Значение по умолчанию является стандартным.
- Тип ключа: выберите тип ключа. По умолчанию используется RSA.
- Размер ключа: введите размер ключа (ключи RSA). Значение по умолчанию — 2048.
- Имя кривой: для ключей EC выберите кривую. Оставьте поле пустым для ключей RSA.
Выберите Проверить и создать, а затем выберите Создать. После успешного развертывания хранилища ключей и ключа вы получите уведомление.
Вы также можете использовать Azure PowerShell, Azure CLI или REST API для развертывания шаблона. Сведения о других методах развертывания см. в статье Deploy templates.
Назначьте роль RBAC для Key Vault
Хранилище ключей, созданное этим шаблоном, использует Azure RBAC для авторизации. Чтобы получить доступ к ключам через плоскость данных (например, с помощью Azure CLI или Azure PowerShell), необходимо назначить себе соответствующую роль.
Получите идентификатор объекта пользователя Microsoft Entra:
az ad signed-in-user show --query id -o tsvНазначьте себе роль Key Vault Crypto Officer для хранилища ключей:
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
Изменения в назначении ролей могут вступить в силу через одну-две минуты.
Проверка развернутых ресурсов
Портал 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" управление доступом на основе ролей (Azure RBAC). Встроенная роль 'Key Vault Contributor' достаточна, так как она авторизует все действия Azure RBAC, которые совпадают с шаблоном "Microsoft.KeyVault/*".
Существующий API (создание ключа с помощью плоскости данных)
- Можно создать новые ключи, обновить существующие ключи и создать новые версии существующих ключей.
- Вызывающий объект должен быть авторизован для использования этого API. Если хранилище включено для Azure RBAC, вызывающий объект должен иметь "Microsoft". KeyVault/vaults/key/create/action" Azure 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 ..."
Note
При удалении группы ресурсов также удаляется хранилище ключей, но затем оно переходит в состояние обратимого удаления и может быть восстановлено в течение срока хранения (по умолчанию 90 дней). Имя хранилища остается зарезервированным глобально в течение этого периода, и поскольку защита очистки включена, хранилище не может быть удалено рано. Для стандартных хранилищ ключей плата за хранилища, помеченные как обратимо удаленные, не взимается. Дополнительные сведения см. в разделе Обзор обратимого удаления в Key Vault.
Дальнейшие шаги
В этом кратком руководстве вы создали хранилище ключей и ключ, используя шаблон ARM, и проверили развертывание. Дополнительные сведения о Key Vault и Azure Resource Manager см. в следующих статьях.
- Прочитайте обзор Azure Key Vault
- Сведения об Azure Resource Manager
- Просмотрите обзор безопасности Key Vault