Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Начало работы с клиентской библиотекой сертификатов Azure Key Vault для Python. Выполните приведенные здесь действия, чтобы установить пакет и протестировать пример кода для выполнения базовых задач. Используя Key Vault для хранения сертификатов, вы избегаете хранения сертификатов в коде, что повышает безопасность приложения.
Справочная документация по | APIИсходный код | библиотекиПакет (индекс пакета Python)
Prerequisites
- Подписка Azure — создайте бесплатную учетную запись.
- Python 3.7+
- Azure CLI
В этом кратком руководстве предполагается, что вы используете Azure CLI или Azure PowerShell в окне терминала Linux.
Настройка локальной среды
В этом кратком руководстве используется библиотека удостоверений Azure с помощью Azure CLI или Azure PowerShell для аутентификации пользователя в службах Azure. Разработчики также могут использовать Visual Studio или Visual Studio Code для проверки подлинности своих вызовов. Дополнительные сведения см. в статье "Проверка подлинности клиента с помощью клиентской библиотеки удостоверений Azure".
Вход в Azure
Выполните команду
login.az loginЕсли CLI может открыть ваш браузер по умолчанию, он сделает это и загрузит страницу входа в Azure.
В противном случае откройте в браузере страницу https://aka.ms/devicelogin и введите код авторизации, отображаемый в терминале.
Выполните вход в браузере с помощью учетных данных.
Установка пакетов
В терминале или командной строке создайте подходящую папку проекта, а затем создайте и активируйте виртуальную среду Python, как описано в разделе "Использование виртуальных сред Python"
Установите библиотеку удостоверений Microsoft Entra:
pip install azure.identityУстановите клиентская библиотека сертификатов Key Vault:
pip install azure-keyvault-certificates
Создание группы ресурсов и хранилища ключей
az group createИспользуйте команду для создания группы ресурсов:az group create --name myResourceGroup --location eastusВы можете изменить "eastus" на расположение ближе к вам, если вы предпочитаете.
Используйте
az keyvault createдля создания хранилища ключей.az keyvault create --name <your-unique-keyvault-name> --resource-group myResourceGroupЗамените
<your-unique-keyvault-name>именем, уникальным в пределах Azure. Обычно вы используете личное или корпоративное имя вместе с другими номерами и идентификаторами.
Установка переменной среды KEY_VAULT_NAME
Наш скрипт будет использовать значение, назначенное KEY_VAULT_NAME переменной среды в качестве имени хранилища ключей. Поэтому необходимо задать это значение с помощью следующей команды:
export KEY_VAULT_NAME=<your-unique-keyvault-name>
Предоставление доступа к хранилищу ключей
Чтобы получить доступ к хранилищу ключей через контроль доступа на основе ролей (RBAC), сначала назначьте роль для учетной записи пользователя (UPN) с помощью команды Azure CLI az role assignment create.
az role assignment create --role "Key Vault Certificates Officer" --assignee "<upn>" --scope "/subscriptions/<subscription-id>/resourceGroups/<resource-group-name>/providers/Microsoft.KeyVault/vaults/<your-unique-keyvault-name>"
Замените <upn>, <subscription-id>, <resource-group-name> и <your-unique-keyvault-name> на ваши фактические значения. Ваше Уникальное Имя Пользователя (UPN) обычно имеет формат адреса электронной почты (например, username@domain.com).
Создание примера кода
Клиентская библиотека сертификатов Azure Key Vault для Python позволяет управлять сертификатами. В следующем примере кода показано, как создать клиент, задать сертификат, получить сертификат и удалить сертификат.
Создайте файл с именем kv_certificates.py , содержащий этот код.
import os
from azure.keyvault.certificates import CertificateClient, CertificatePolicy
from azure.identity import DefaultAzureCredential
keyVaultName = os.environ["KEY_VAULT_NAME"]
KVUri = "https://" + keyVaultName + ".vault.azure.net"
credential = DefaultAzureCredential()
client = CertificateClient(vault_url=KVUri, credential=credential)
certificateName = input("Input a name for your certificate > ")
print(f"Creating a certificate in {keyVaultName} called '{certificateName}' ...")
policy = CertificatePolicy.get_default()
poller = client.begin_create_certificate(certificate_name=certificateName, policy=policy)
certificate = poller.result()
print(" done.")
print(f"Retrieving your certificate from {keyVaultName}.")
retrieved_certificate = client.get_certificate(certificateName)
print(f"Certificate with name '{retrieved_certificate.name}' was found'.")
print(f"Deleting your certificate from {keyVaultName} ...")
poller = client.begin_delete_certificate(certificateName)
deleted_certificate = poller.result()
print(" done.")
Запустите код
Убедитесь, что код в предыдущем разделе находится в файле с именем kv_certificates.py. Затем запустите код с помощью следующей команды:
python kv_certificates.py
- При возникновении ошибок разрешений убедитесь, что вы выполнили
az keyvault set-policyкоманду илиSet-AzKeyVaultAccessPolicyкоманду. - Повторное выполнение кода с тем же именем ключа может привести к ошибке "(Конфликт) Имя< сертификата >в настоящее время находится в удаленном, но восстанавливаемом состоянии". Используйте другое имя ключа.
Сведения о коде
Проверка подлинности и создание клиента
Запросы приложений к большинству служб Azure должны быть авторизованы. Использование класса DefaultAzureCredential , предоставленного клиентской библиотекой удостоверений Azure , является рекомендуемым подходом для реализации бессерверных подключений к службам Azure в коде.
DefaultAzureCredential поддерживает несколько методов проверки подлинности и определяет, какой метод следует использовать во время выполнения. Такой подход позволяет приложению использовать различные способы проверки подлинности в разных средах (локальной и рабочей) без реализации кода для конкретной среды.
В этом кратком руководстве DefaultAzureCredential выполняет аутентификацию в хранилище ключей с использованием учетных данных пользователя локальной разработки, вошедшего в Azure CLI. При развертывании приложения в Azure тот же DefaultAzureCredential код может автоматически обнаруживать и использовать управляемое удостоверение, назначенное службе приложений, виртуальной машине или другим службам. Дополнительные сведения см. в разделе "Обзор управляемого удостоверения".
В примере кода имя хранилища ключей преобразуется в URI хранилища ключей в формате https://\<your-key-vault-name>.vault.azure.net.
credential = DefaultAzureCredential()
client = CertificateClient(vault_url=KVUri, credential=credential)
Сохранение сертификата
Получив клиентский объект для хранилища ключей, можно создать сертификат с помощью метода begin_create_certificate :
policy = CertificatePolicy.get_default()
poller = client.begin_create_certificate(certificate_name=certificateName, policy=policy)
certificate = poller.result()
Здесь сертификату требуется политика, полученная с помощью метода CertificatePolicy.get_default .
begin_create_certificate Вызов метода создает асинхронный вызов REST API Azure для хранилища ключей. Асинхронный вызов возвращает объект "poller". Чтобы дождаться результата операции, вызовите метод poller result.
Когда Azure обрабатывает запрос, он проверяет подлинность удостоверения вызывающего объекта (субъекта-службы) с помощью объекта учетных данных, предоставленного клиенту.
Получение сертификата
Чтобы прочитать сертификат из Key Vault, используйте метод get_certificate :
retrieved_certificate = client.get_certificate(certificateName)
Вы также можете проверить, задан ли сертификат с помощью команды Azure CLI az keyvault certificate show или командлета Azure PowerShell Get-AzKeyVaultCertificate
Удаление сертификата
Чтобы удалить сертификат, используйте метод begin_delete_certificate :
poller = client.begin_delete_certificate(certificateName)
deleted_certificate = poller.result()
Метод begin_delete_certificate является асинхронным и возвращает объект опроса. Вызов метода опроса result ожидает завершения.
Вы можете убедиться, что сертификат удален с помощью команды Azure CLI az keyvault certificate show или командлета Azure PowerShell Get-AzKeyVaultCertificate.
После удаления сертификат остается в удаленном, но восстанавливаемом состоянии в течение некоторого времени. При повторном запуске кода используйте другое имя сертификата.
Очистите ресурсы
Если вы хотите также поэкспериментировать с секретами и ключами, можно повторно использовать Хранилище ключей, созданное в этой статье.
В противном случае, когда вы завершите работу с ресурсами, созданными в этой статье, используйте следующую команду, чтобы удалить группу ресурсов и все содержащиеся в ней ресурсы:
az group delete --resource-group myResourceGroup