Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Приступите к работе с клиентской библиотекой Azure Key Vault для Python. Выполните приведенные здесь действия, чтобы установить пакет и протестировать пример кода для выполнения базовых задач. Используя Key Vault для хранения криптографических ключей, вам не надо сохранять их в коде. Это повышает безопасность приложения.
Справочная документация по API | Исходный код библиотеки | Пакет (Python Package Index)
Требования
- Подписка Azure — создайте бесплатную учетную запись.
- Python 3.7+
- Azure CLI
Предполагается, что в этом кратком руководстве вы используете Azure CLI или Azure PowerShell в окне терминала Linux.
Настройка локальной среды
В этом кратком старте используется библиотека Azure Identity с Azure CLI или Azure PowerShell для аутентификации пользователя в службах Azure. Разработчики также могут использовать Visual Studio или Visual Studio Code для проверки подлинности своих вызовов. Дополнительные сведения см. в статье «Проверка подлинности клиента с использованием клиентской библиотеки удостоверений Azure».
Вход в Azure
- Azure CLI
- Azure PowerShell
Запустите команду
login.az loginЕсли CLI может открыть ваш браузер по умолчанию, он откроет его и загрузит страницу входа в Azure.
В противном случае откройте страницу в браузере по адресу https://aka.ms/devicelogin и введите код авторизации, отображаемый в вашем терминале.
Выполните вход в браузере с помощью учетных данных.
Установка пакетов
В терминале или в командной строке создайте подходящую папку проекта, а затем создайте и активируйте виртуальную среду Python, как описано в разделе Используйте виртуальные окружения Python.
Установите библиотеку удостоверений Microsoft Entra:
pip install azure-identityУстановите клиентскую библиотеку ключей Azure Key Vault:
pip install azure-keyvault-keys
Создание группы ресурсов и хранилища ключей
- Azure CLI
- Azure PowerShell
Для создания группы ресурсов используйте команду
az group create:az group create --name "myResourceGroup" --location "EastUS"Если вы предпочитаете, вы можете изменить "EastUS" на расположение ближе к вам.
Используйте
az keyvault createдля создания хранилища ключей:az keyvault create --name "<vault-name>" --resource-group "myResourceGroup" --enable-rbac-authorization true --enable-purge-protection trueЗамените
<vault-name>именем, уникальным в пределах Azure. Обычно используется личное имя или название организации, а также числа и идентификаторы.
Задайте переменную среды KEY_VAULT_NAME
Наш скрипт будет использовать значение, присвоенное переменной среды KEY_VAULT_NAME, в качестве имени для хранилища ключей. Поэтому задайте это значение с помощью следующей команды:
export KEY_VAULT_NAME=<vault-name>
Предоставление доступа к хранилищу ключей
Чтобы получить разрешения для хранилища ключей с помощью контроля доступа на основе ролей (RBAC), назначьте роль для "User Principal Name" (UPN) с помощью команды Azure CLI az role assignment create.
az role assignment create --role "Key Vault Crypto Officer" --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 Key Vault для Python позволяет управлять криптографическими ключами. В приведенном ниже примере кода показано, как создать клиент, а также как задать, извлечь и удалить ключ.
Создайте файл с именем kv_keys.py, который содержит этот код.
import os
from azure.keyvault.keys import KeyClient
from azure.identity import DefaultAzureCredential
keyVaultName = os.environ["KEY_VAULT_NAME"]
KVUri = "https://" + keyVaultName + ".vault.azure.net"
credential = DefaultAzureCredential()
client = KeyClient(vault_url=KVUri, credential=credential)
keyName = input("Input a name for your key > ")
print(f"Creating a key in {keyVaultName} called '{keyName}' ...")
rsa_key = client.create_rsa_key(keyName, size=2048)
print(" done.")
print(f"Retrieving your key from {keyVaultName}.")
retrieved_key = client.get_key(keyName)
print(f"Key with name '{retrieved_key.name}' was found.")
print(f"Deleting your key from {keyVaultName} ...")
poller = client.begin_delete_key(keyName)
deleted_key = poller.result()
print(" done.")
Выполнение кода
Убедитесь, что код из предыдущего раздела находится в файле с именем kv_keys.py. Затем выполните следующую команду, чтобы запустить код:
python kv_keys.py
Повторное выполнение кода с тем же именем ключа может привести к ошибке "(Конфликт) Ключ <name> в настоящее время находится в удаленном, но восстанавливаемом состоянии". Используйте другое имя ключа.
Сведения о коде
Аутентификация и создание клиента
Запросы приложений к большинству служб Azure должны быть авторизованы. Использование класса DefaultAzureCredential, предоставленного клиентской библиотекой удостоверений Azure, является рекомендуемым подходом для реализации подключений без пароля к службам Azure в вашем коде.
DefaultAzureCredential поддерживает несколько способов аутентификации и определяет, какой из них следует использовать во время выполнения. Такой подход позволяет приложению использовать различные способы проверки подлинности в разных средах (локальной и рабочей) без реализации кода для конкретной среды.
В этом быстром старте DefaultAzureCredential выполняет проверку подлинности в хранилище ключей, используя учетные данные локального пользователя разработки, вошедшего в Azure CLI. При развертывании приложения в Azure тот же DefaultAzureCredential код может автоматически обнаруживать и использовать управление удостоверением, назначенное на службе приложений, виртуальной машине или другие службы. Дополнительные сведения см. в статье Что такое управляемые удостоверения для ресурсов Azure?.
В примере кода имя хранилища ключей расширяется с помощью значения KVUri переменной в формате: https://<vault-name>.vault.azure.net
credential = DefaultAzureCredential()
client = KeyClient(vault_url=KVUri, credential=credential)
Сохранение ключа
После получения клиентского объекта для хранилища ключей можно сохранить ключ с помощью метода create_rsa_key.
rsa_key = client.create_rsa_key(keyName, size=2048)
Кроме того, можно использовать create_key или create_ec_key.
Вызов метода create вызывает REST API для Azure хранилища ключей.
Когда Azure обрабатывает запрос, он проверяет подлинность удостоверения вызывающего объекта (субъекта-службы) с помощью объекта учетных данных, предоставленного клиенту.
Получение ключа
Чтобы прочитать ключ из Key Vault, используйте метод get_key:
retrieved_key = client.get_key(keyName)
Вы также можете убедиться, что ключ установлен с помощью команды Azure CLI az keyvault key show или командлета Azure PowerShell Get-AzKeyVaultKey.
Удаление ключа
Чтобы удалить ключ, используйте метод
poller = client.begin_delete_key(keyName)
deleted_key = poller.result()
Метод begin_delete_key является асинхронным и возвращает объект опросчика. При вызове метода result модуля опроса необходимо дождаться его завершения.
Вы можете убедиться, что ключ был успешно удален, используя команду Azure CLI az keyvault key show или командлет Azure PowerShell Get-AzKeyVaultKey.
После удаления ключ остается в удаленном, но восстанавливаемом состоянии в течение некоторого времени. При повторном выполнении кода используйте другое имя ключа.
Очистка ресурсов
Если вы хотите также поэкспериментировать с сертификатами и секретами, вы можете повторно использовать Key Vault, описанный в этой статье.
В противном случае после завершения работы с созданными в этой статье ресурсами используйте следующую команду, чтобы удалить группу ресурсов и все содержащиеся в ней ресурсы:
- Azure CLI
- Azure PowerShell
az group delete --resource-group "myResourceGroup"
Следующие шаги
- Общие сведения об Azure Key Vault
- Безопасный доступ к хранилищу ключей
- Рекомендации по обеспечению безопасности для определенных ключей
- Руководство по RBAC
- Руководство разработчика Azure Key Vault
- Аутентификация с помощью Key Vault