Управление Key Vault с помощью Azure CLI

В этой статье описывается, как начать работу с Azure Key Vault с помощью Azure CLI. Вы можете просмотреть следующие данные:

  • как создать контейнер (хранилище) с усиленной защитой в Azure;
  • Добавление ключа, секрета или сертификата в хранилище ключей
  • Регистрация приложения с помощью идентификатора Microsoft Entra
  • Авторизация приложения для использования ключа или секрета
  • Установка политик расширенного доступа к хранилищу ключей
  • Работа с аппаратными модулями безопасности (HSM)
  • Удаление хранилища ключей, а также связанных ключей и секретов
  • Прочие команды в межплатформенном интерфейсе командной строки Azure

Хранилище ключей Azure доступно в большинстве регионов. Дополнительные сведения см. на странице цен на хранилище ключей.

Примечание.

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

Общие сведения об Azure Key Vault см. в статье Что такое хранилище ключей Azure? Если у вас нет подписки Azure, создайте бесплатную учетную запись, прежде чем приступить к работе.

Необходимые компоненты

Чтобы использовать команды Azure CLI из этой строки, вам необходимо следующее:

  • Подписка на Microsoft Azure. Если у вас ее нет, зарегистрируйтесь, чтобы воспользоваться бесплатной пробной версией.
  • Azure CLI 2.0 или более поздней версии. Чтобы установить последнюю версию, обратитесь к статье Установка Azure CLI.
  • Приложение, для которого вы будете настраивать использование ключа или пароля, созданного по этой статье. Пример приложения доступен в Центре загрузки Майкрософт. Инструкции см. в приложенном файле README.

Справка по межплатформенному интерфейсу командной строки Azure

В этой статье предполагается, что вы знакомы с интерфейсом командной строки (Bash, терминал, командная строка).

Параметр --help или -h может использоваться для просмотра справки по определенным командам. Также можно использовать формат Azure help [команда] [параметры]. Если вы сомневаетесь в том, какие параметры необходимы команде, обратитесь к справке. Например, все следующие команды возвращают одинаковые сведения:

az account set --help
az account set -h

Чтобы узнать, как работать с Azure Resource Manager в кроссплатформенном интерфейсе командной строки Azure, также прочитайте следующие статьи:

как создать контейнер (хранилище) с усиленной защитой в Azure;

Хранилища являются защищенными контейнерами, которые поддерживают аппаратные модули безопасности. Хранилища позволяют уменьшить вероятность случайной потери информации о безопасности путем централизации хранения секретов приложений. Хранилища Key Vault также контролируют и регистрируют доступ к чему-либо, что хранится в них. Azure Key Vault может обрабатывать запросы и обновлять сертификаты протокола TLS, предоставляя функции, необходимые для надежного решения по управлению жизненным циклом сертификата. На следующих шагах создается хранилище.

Подключение к своим подпискам

Чтобы войти в интерактивный режим, используйте следующую команду:

az login

Чтобы войти с помощью учетной записи организации, можно передать имя пользователя и пароль.

az login -u username@domain.com -p password

Если у вас несколько подписок и нужно указать, какая из них будет использоваться, введите приведенную ниже команду, чтобы увидеть подписки своей учетной записи:

az account list

Укажите подписку с помощью параметра подписки.

az account set --subscription <subscription name or ID>

Дополнительные сведения о настройке кроссплатформенного интерфейса командной строки Azure см. в разделе Установка Azure CLI 1.0.

Создание группы ресурсов

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

az group create -n "ContosoResourceGroup" -l "East Asia"

Первый параметр — имя группы ресурсов, а второй параметр — его расположение. Чтобы получить список доступных расположений, введите следующую команду:

az account list-locations

Регистрация поставщика ресурсов хранилища ключей

При попытке создать хранилище ключей может возникнуть ошибка "Подписка не зарегистрирована для использования пространства имен Microsoft.KeyVault". Если возникла эта ошибка, убедитесь, что поставщик ресурсов хранилища ключей зарегистрирован в вашей подписке. Эта операция выполняется один раз для каждой подписки.

az provider register -n Microsoft.KeyVault

Создание хранилища ключей

Для создания хранилища ключей используйте команду az keyvault create . Этот сценарий предусматривает три обязательных параметра: имя группы ресурсов, имя хранилища ключей и географическое расположение.

Чтобы создать новое хранилище с именем ContosoKeyVault, в группе ресурсов ContosoResourceGroup, находящейся в местоположении Восточная Азия, введите:

az keyvault create --name "ContosoKeyVault" --resource-group "ContosoResourceGroup" --location "East Asia"

В выходных данных команды будут показаны свойства созданного хранилища ключей. Среди всех свойств есть два самых важных:

  • name. В этом примере — ContosoKeyVault. Вы будете использовать это имя для выполнения других команд хранилища ключей.
  • vaultUri. В данном примере универсальный код ресурса (URI) — это https://contosokeyvault.vault.azure.net. Необходимо, чтобы приложения, использующие ваше хранилище через REST API, использовали этот URI.

Теперь ваша учетная запись Azure авторизована, и вы можете выполнять любые операции в этом хранилище ключей. Но пока никто другой не авторизован.

Добавление ключа, секрета или сертификата в хранилище ключей

Если вам необходимо создать для себя ключ с программной защитой с помощью Azure Key Vault, используйте команду az key create.

az keyvault key create --vault-name "ContosoKeyVault" --name "ContosoFirstKey" --protection software

Если у вас уже есть ключ в PEM-файле, его можно загрузить в Azure Key Vault. Вы можете защитить ключ с помощью программного обеспечения или HSM. В этом примере ключ импортируется из PEM-файла и защищается с помощью программного обеспечения и пароля hVFkk965BuUv:

az keyvault key import --vault-name "ContosoKeyVault" --name "ContosoFirstKey" --pem-file "./softkey.pem" --pem-password "hVFkk965BuUv" --protection software

Теперь для доступа к ключу, созданному или загруженному в хранилище ключей Azure, вы сможете использовать его URI. https://ContosoKeyVault.vault.azure.net/keys/ContosoFirstKey всегда предоставляет текущую версию. https://<keyvault-name>.vault.azure.net/keys/<keyname>/<key-unique-id> позволяет получить конкретную версию. Например, https://ContosoKeyVault.vault.azure.net/keys/ContosoFirstKey/cgacf4f763ar42ffb0a1gca546aygd87.

Добавьте в Azure Key Vault секрет, который представляет собой пароль с именем SQLPassword и значением Pa$$hVFkk965BuUv.

az keyvault secret set --vault-name "ContosoKeyVault" --name "SQLPassword" --value "hVFkk965BuUv "

Ссылайтесь на этот пароль с помощью URI. Всегда https://ContosoVault.vault.azure.net/secrets/SQLPassword используется для получения текущей версии и https://<keyvault-name>.vault.azure.net/secret/<secret-name>/<secret-unique-id> получения этой конкретной версии. Например, https://ContosoVault.vault.azure.net/secrets/SQLPassword/90018dbb96a84117a0d2847ef8e7189d.

Импортируйте сертификат в хранилище с помощью PEM- или PFX-файла.

az keyvault certificate import --vault-name "ContosoKeyVault" --file "c:\cert\cert.pfx" --name "ContosoCert" --password "hVFkk965BuUv"

Давайте посмотрим на созданный вами ключ, секрет или сертификат:

  • Чтобы просмотреть свои ключи, введите:
az keyvault key list --vault-name "ContosoKeyVault"
  • Чтобы просмотреть свои секреты, введите:
az keyvault secret list --vault-name "ContosoKeyVault"
  • Чтобы просмотреть сертификаты, введите:
az keyvault certificate list --vault-name "ContosoKeyVault"

Регистрация приложения с помощью идентификатора Microsoft Entra

Обычно этот шаг выполняет разработчик на отдельном компьютере. Он не относится к Azure Key Vault, но включен в эту статью для информации. Чтобы завершить регистрацию приложения, поместите вашу учетную запись, хранилище и приложение в один каталог Azure.

Приложения, использующие хранилище ключей, должны проходить проверку подлинности с помощью маркера из идентификатора Microsoft Entra. Сначала владелец приложения должен зарегистрировать его в Microsoft Entra. В конце регистрации владелец приложения получает следующие значения.

  • Идентификатор приложения (также известный как идентификатор клиента Microsoft Entra или appID)
  • Ключ проверки подлинности (также известный как общий секрет).

Чтобы получить маркер, приложение должно представить оба этих значения в идентификатор Microsoft Entra ID. Настройка приложения для получения маркера будет зависеть от приложения. В примере приложения, использующего Key Vault, владелец приложения задает эти значения в файле app.config.

Подробные инструкции по регистрации приложения с помощью идентификатора Microsoft Entra id см. в статьях с названием "Интеграция приложений с идентификатором Microsoft Entra ID", "Использование портала для создания приложения Microsoft Entra и субъекта-службы, который может получить доступ к ресурсам" и "Создание субъекта-службы Azure" с помощью Azure CLI.

Чтобы зарегистрировать приложение в идентификаторе Microsoft Entra, выполните следующие действия.

az ad sp create-for-rbac -n "MyApp" --password "hVFkk965BuUv" --role Contributor --scopes /subscriptions/<subscription id>
# If you don't specify a password, one will be created for you.

Авторизация приложения для использования ключа или секрета

Чтобы авторизовать приложение для получения доступа к ключу или секрету в хранилище, используйте команду az keyvault set-policy .

Например, если имя хранилища — ContosoKeyVault, идентификатор приложения — 8f8c4bbd-485b-45fd-98f7-ec6300b7b4ed, и вам нужно авторизовать это приложение для расшифровки и подписи с использованием ключей в вашем хранилище, выполните следующую команду:

az keyvault set-policy --name "ContosoKeyVault" --spn 8f8c4bbd-485b-45fd-98f7-ec6300b7b4ed --key-permissions decrypt sign

Чтобы разрешить этому же приложению читать секреты в хранилище, выполните следующую команду:

az keyvault set-policy --name "ContosoKeyVault" --spn 8f8c4bbd-485b-45fd-98f7-ec6300b7b4ed --secret-permissions get

Установка политик расширенного доступа к хранилищу ключей

Включите политики расширенного доступа к хранилищу ключей с помощью команды az keyvault update.

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

az keyvault update --name "ContosoKeyVault" --resource-group "ContosoResourceGroup" --enabled-for-deployment "true"

Включение хранилища ключей для шифрования диска — требуется при использовании хранилища для шифрования диска Azure.

az keyvault update --name "ContosoKeyVault" --resource-group "ContosoResourceGroup" --enabled-for-disk-encryption "true"

Включение хранилища ключей для развертывания шаблона — позволяет диспетчеру ресурсов получать секреты из хранилища.

az keyvault update --name "ContosoKeyVault" --resource-group "ContosoResourceGroup" --enabled-for-template-deployment "true"

Работа с аппаратными модулями безопасности (HSM)

Чтобы обеспечить более высокий уровень защиты, можно импортировать ключи или создать их в аппаратных модулях безопасности (HSM) — ключи никогда не покидают их пределы. HSM проверены FIPS 140. Если это требование вас не касается, пропустите этот подраздел и перейдите к разделу "Удаление хранилища ключей, а также связанных ключей и секретов".

Чтобы создать ключи, защищенные аппаратным модулем безопасности, у вас должна быть подписка на хранилище, которая поддерживает ключи, защищенные аппаратным модулем безопасности.

При создании хранилища добавьте параметр sku:

az keyvault create --name "ContosoKeyVaultHSM" --resource-group "ContosoResourceGroup" --location "East Asia" --sku "Premium"

В это хранилище можно добавлять ключи с программной защитой (как показано выше) и ключи, защищенные аппаратным модулем безопасности. Чтобы создать ключ, защищенный аппаратным модулем безопасности, задайте значение HSM для параметра Destination:

az keyvault key create --vault-name "ContosoKeyVaultHSM" --name "ContosoFirstHSMKey" --protection "hsm"

Вы можете использовать следующую команду для импорта ключа из PEM-файла на своем компьютере. Эта команда импортирует ключ в аппаратные модули безопасности в службе хранилища ключей:

az keyvault key import --vault-name "ContosoKeyVaultHSM" --name "ContosoFirstHSMKey" --pem-file "/.softkey.pem" --protection "hsm" --pem-password "PaSSWORD"

Следующая команда импортирует пакет собственного ключа клиента (BYOK). Это дает возможность создать ключ в своем локальном аппаратном модуле безопасности и передать его в аппаратные модули безопасности в службе хранилища ключей так, чтобы ключ не покидал их пределы:

az keyvault key import --vault-name "ContosoKeyVaultHSM" --name "ContosoFirstHSMKey" --byok-file "./ITByok.byok" --protection "hsm"

Более подробные инструкции по созданию пакета BYOK см. в статье Создание ключей, защищенных аппаратным модулем безопасности, и их передача в хранилище ключей Azure.

Удаление хранилища ключей, а также связанных ключей и секретов

Если хранилище ключей и его ключи и секреты больше не нужны, хранилище можно удалить, используя команду az keyvault delete:

az keyvault delete --name "ContosoKeyVault"

Как вариант, можно удалить всю группу ресурсов Azure, которая включает в себя хранилище ключей и другие ресурсы, которые вы добавили в эту группу:

az group delete --name "ContosoResourceGroup"

Прочие команды в межплатформенном интерфейсе командной строки Azure

Другие команды, которые могут быть полезны при управлении Azure Key Vault.

Эта команда перечисляет все ключи и выбранные свойства в виде таблицы:

az keyvault key list --vault-name "ContosoKeyVault"

Эта команда отображает полный список свойств для указанного ключа:

az keyvault key show --vault-name "ContosoKeyVault" --name "ContosoFirstKey"

Эта команда перечисляет все имена секретов и выбранные свойства в виде таблицы:

az keyvault secret list --vault-name "ContosoKeyVault"

Пример удаления конкретного ключа:

az keyvault key delete --vault-name "ContosoKeyVault" --name "ContosoFirstKey"

Пример удаления конкретного секрета:

az keyvault secret delete --vault-name "ContosoKeyVault" --name "SQLPassword"

Следующие шаги