Руководство по Использование Azure Key Vault с виртуальной машиной в Python
Azure Key Vault помогает защищать ключи, секреты и сертификаты, например ключи API и строки подключения к базам данных.
В этом учебнике описано, как настроить приложение Python, чтобы оно считывало данные из Azure Key Vault с помощью управляемых удостоверений для ресурсов Azure. Вы узнаете, как выполнять следующие задачи:
- Создайте хранилище ключей.
- хранение секрета в Key Vault;
- создание виртуальной машины Linux в Azure;
- включение управляемого удостоверения для виртуальной машины;
- предоставление разрешений, необходимых консольному приложению для чтения данных из Key Vault;
- получение секрета из Key Vault.
Перед началом работы ознакомьтесь c основными понятиями службы Key Vault.
Если у вас еще нет подписки Azure, создайте бесплатную учетную запись Azure.
Предварительные требования
Для Windows, Mac и Linux:
- Git;
- Для этого руководства требуется запустить Azure CLI локально. Необходимо установить Azure CLI версии 2.0.4 или более поздней. Чтобы узнать версию, выполните команду
az --version
. Если вам необходимо установить или обновить CLI, ознакомьтесь со статьей Установка Azure CLI 2.0.
Вход в Azure
Чтобы войти в Azure с помощью Azure CLI, введите следующую команду:
az login
Создание группы ресурсов и хранилища ключей
В этом кратком руководстве используется предварительно созданное хранилище ключей Azure. Хранилище ключей можно создать, выполнив действия, описанные в кратких руководствах по Azure CLI, Azure PowerShell или порталу Azure.
Можно также выполнить команды Azure CLI или Azure PowerShell, приведенные ниже.
Важно!
Каждое хранилище ключей должно иметь уникальное имя. В следующих примерах замените <your-unique-keyvault-name> именем своего хранилища ключей.
az group create --name "myResourceGroup" -l "EastUS"
az keyvault create --name "<your-unique-keyvault-name>" -g "myResourceGroup"
Запись секрета в хранилище ключей
Мы создадим секрет с именем mySecret и значением Success! . Секретом может быть пароль, строка подключения SQL или другие сведения, которые должны быть защищены и при этом доступны приложению.
Чтобы добавить секрет в новое созданное хранилище ключей, используйте следующую команду:
az keyvault secret set --vault-name "<your-unique-keyvault-name>" --name "mySecret" --value "Success!"
Создание виртуальной машины
Создайте виртуальную машину с именем myVM одним из следующих способов:
Linux | 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 myResourceGroup \
--name myVM \
--image Ubuntu2204 \
--admin-username azureuser \
--generate-ssh-keys
Запишите значение publicIpAddress
в выходных данных.
Назначение удостоверения виртуальной машине
Создайте назначаемое системой удостоверение для виртуальной машины с помощью команды Azure CLI az vm identity assign:
az vm identity assign --name "myVM" --resource-group "myResourceGroup"
Обратите внимание на присвоенный системой идентификатор, который отображается в следующем коде. Выходные данные приведенной выше команды выглядят следующим образом.
{
"systemAssignedIdentity": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"userAssignedIdentities": {}
}
Назначение разрешения для идентификатора виртуальной машины
Теперь вы можете предоставить созданному выше идентификатору разрешение для хранилища ключей, выполнив следующую команду.
az keyvault set-policy --name "<your-unique-keyvault-name>" --object-id "<systemAssignedIdentity>" --secret-permissions get list
Вход на виртуальную машину
Чтобы войти в виртуальную машину, следуйте инструкциям по подключению и входу в виртуальную машину Azure на платформе Windows или Linux.
Чтобы войти на виртуальную машину Linux, можно использовать команду SSH с <publicIpAddress> из шага по созданию виртуальной машин:
ssh azureuser@<PublicIpAddress>
Установка библиотек Python на виртуальной машине
На виртуальной машине установите две библиотеки Python, которые будут использоваться в нашем скрипте Python: azure-keyvault-secrets
и azure.identity
.
Например, на виртуальной машине Linux их можно установить с помощью pip3
:
pip3 install azure-keyvault-secrets
pip3 install azure.identity
Создание и изменение примера скрипта Python
На виртуальной машине создайте файл Python с именем sample.py. Измените файл, чтобы он содержал следующий код, заменив <your-unique-keyvault-name> именем своего хранилища ключей:
from azure.keyvault.secrets import SecretClient
from azure.identity import DefaultAzureCredential
key_vault_name = "<your-unique-keyvault-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 '<your-unique-keyvault-name>' is: 'Success!'
Очистка ресурсов
Если они больше не нужны, удалите виртуальную машину и хранилище ключей. Вы можете быстро сделать это, удалив группу ресурсов, к которой они принадлежат:
az group delete -g myResourceGroup