Руководство. Использование Azure Key Vault с виртуальной машиной в Python

Azure Key Vault помогает защитить ключи, секреты и сертификаты, такие как ключи API и строки подключения к базе данных.

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

  • Создание хранилища ключей
  • Хранение секрета в Key Vault
  • Создание виртуальной машины Linux Azure
  • Включите управляемое удостоверение для виртуальной машины.
  • Предоставьте необходимые разрешения для консольного приложения для чтения данных из Key Vault
  • Получение секрета из Key Vault

Прежде чем начать, прочитайте Key Vault основные понятия.

Если у вас нет подписки Azure, создайте учетную запись free.

Предпосылки

Для Windows, Mac и Linux:

  • Git
  • Текущая версия Azure CLI. Запустите az --version , чтобы проверить установленную версию.

Вход в Azure

Войдите в Azure с помощью Azure CLI:

az login

Создание группы ресурсов и хранилища ключей

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

В качестве альтернативы, можно выполнить команды Azure CLI или Azure PowerShell.

Это важно

Каждое хранилище ключей должно иметь уникальное имя. Замените <vault-name> именем хранилища ключей в следующих примерах.

az group create --name "myResourceGroup" -l "EastUS"

az keyvault create --name "<vault-name>" -g "myResourceGroup" --enable-rbac-authorization true

Запись секрета в хранилище ключей

Мы создадим секрет с именем mySecret и значением Success!. Секрет может быть паролем, SQL строка подключения или любой другой информацией, необходимой для обеспечения безопасности и доступности приложения.

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

az keyvault secret set --vault-name "<vault-name>" --name "mySecret" --value "Success!"

Создание виртуальной машины

Создайте виртуальную машину с именем myVM с помощью одного из следующих методов:

Линукс Windows
Azure CLI; Azure CLI;
PowerShell PowerShell
портал Azure портал Azure

Чтобы создать виртуальную машину Linux с помощью Azure CLI, используйте команду az vm create. В примере ниже добавляется учетная запись пользователя с именем azureuser. Параметр --generate-ssh-keys автоматически создает ключ SSH и сохраняет его в стандартное расположение (~/.ssh).

az vm create \
  --resource-group <resource-group> \
  --name myVM \
  --image Ubuntu2204 \
  --admin-username azureuser \
  --generate-ssh-keys

Запишите значение publicIpAddress в выходных данных.

Назначьте удостоверение виртуальной машине

Создайте управляемое удостоверение, назначаемое системой для виртуальной машины, с помощью команды az vm identity assign :

az vm identity assign --name "myVM" --resource-group "<resource-group>"

Обратите внимание на идентификатор, назначенный системой, в выводе:

{
  "systemAssignedIdentity": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
  "userAssignedIdentities": {}
}

Назначение разрешения для идентификатора виртуальной машины

Чтобы получить разрешения для хранилища ключей через Role-Based контроль доступа (RBAC), назначьте роль вашему "User Principal Name" (UPN) с помощью команды Azure CLI az role assignment create.

az role assignment create --role "Key Vault Secrets User" --assignee "<upn>" --scope "/subscriptions/<subscription-id>/resourceGroups/myResourceGroup/providers/Microsoft.KeyVault/vaults/<vault-name>"

Замените <upn>, <subscription-id>а <vault-name> также фактическими значениями. Если вы использовали другое имя группы ресурсов, замените myResourceGroup. Ваше Уникальное Имя Пользователя (UPN) обычно имеет формат адреса электронной почты (например, username@domain.com).

Вход на виртуальную машину

Чтобы войти на виртуальную машину, следуйте инструкциям в разделе "Подключение" и войдите в виртуальную машину Azure под управлением Linux или Connect и выполните вход в виртуальную машину Azure с Windows.

Чтобы войти на виртуальную машину Linux, используйте ssh с <public-ip-address> помощью шага "Создать виртуальную машину ":

ssh azureuser@<public-ip-address>

Установка библиотек Python на виртуальной машине

На виртуальной машине установите две Python библиотеки, которые использует пример скрипта: azure-keyvault-secrets и azure-identity.

На виртуальной машине Linux установите их с помощью pip3:

pip3 install azure-keyvault-secrets azure-identity

Создание и изменение примера скрипта Python

На виртуальной машине создайте файл Python с именемsample.py. Вставьте следующий код в файл, заменив <vault-name> на имя вашего хранилища ключей:

from azure.keyvault.secrets import SecretClient
from azure.identity import DefaultAzureCredential

key_vault_name = "<vault-name>"
key_vault_uri = f"https://{key_vault_name}.vault.azure.net"
secret_name = "mySecret"

credential = DefaultAzureCredential()
client = SecretClient(vault_url=key_vault_uri, credential=credential)
retrieved_secret = client.get_secret(secret_name)

print(f"The value of secret '{secret_name}' in '{key_vault_name}' is: '{retrieved_secret.value}'")

Запуск примера приложения Python

Выполните команду sample.py. Если все настроено правильно, приложение выводит значение секрета:

python3 sample.py

The value of secret 'mySecret' in '<vault-name>' is: 'Success!'

Очистка ресурсов

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

az group delete -g "myResourceGroup"

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

REST API службы Azure Key Vault