Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
ОБЛАСТЬ ПРИМЕНЕНИЯ:
Пакет SDK для Python azure-ai-ml версии 2 (current)
Сведения о проверке подлинности, такие как имя пользователя и пароль, являются секретами. Например, если вы подключаетесь к внешней базе данных для запроса обучающих данных, необходимо передать имя пользователя и пароль в контекст удаленного задания. Кодирование таких значений в скрипты обучения в чистом тексте небезопасно, так как оно предоставляет секрет.
Azure Key Vault предоставляет безопасное хранилище и получение секретов. Из этой статьи вы узнаете, как получить секреты, хранящиеся в хранилище ключей, из задания обучения, выполняемого в вычислительном кластере.
Внимание
Используйте клиентскую библиотеку Azure Key Vault Secrets для Python для хранения и извлечения секретов. Пакет SDK машинного обучения Azure версии 2 предоставляет сведения о рабочей области, необходимые для подключения к хранилищу ключей.
Предварительные требования
Перед выполнением действий, описанных в этой статье, убедитесь, что выполнены следующие необходимые условия:
Совет
Для многих предварительных требований в этом разделе требуется доступ участника, владельца или эквивалентного доступа к подписке Azure или группе ресурсов Azure, содержащей ресурсы. Возможно, вам потребуется обратиться к администратору Azure и выполнить эти действия.
Подписка Azure. Если у вас еще нет подписки Azure, создайте бесплатную учетную запись, прежде чем начинать работу. Попробуйте бесплатную или платную версию Машинного обучения Azure.
Python 3.10 или более поздней версии. Для
azure-keyvault-secretsпакетовazure-identityтребуется Python 3.9 или более поздней версии, но рекомендуется использовать Python 3.10 или более поздней версии.Рабочая область Машинного обучения Azure. Если у вас нет одного, выполните действия, описанные в статье "Создание ресурсов", чтобы приступить к созданию.
Один Azure Key Vault. Если вы использовали статью
Создание ресурсов для начала работы , чтобы создать свою рабочую область, для вас было создано хранилище ключей. Вы также можете создать отдельный экземпляр хранилища ключей, используя информацию из статьи Быстрое начало: Создание хранилища ключей. Совет
Вам не нужно использовать то же хранилище ключей, что и рабочая область.
(Необязательно) Вычислительный кластер Azure Machine Learning настроен для использования управляемого удостоверения. Кластер можно настроить для управляемого удостоверения, которое назначается системой или пользователем.
Если ваше задание выполняется в вычислительном кластере, предоставьте управляемому удостоверению для вычислительного кластера доступ к секретам, хранящимся в хранилище ключей. Или, если задание выполняется на бессерверных вычислениях, предоставьте управляемому удостоверению, указанному для задания, доступ к секретам. Метод, используемый для предоставления доступа, зависит от настройки хранилища ключей:
- Управление доступом на основе ролей в Azure (Azure RBAC): при настройке Azure RBAC добавьте управляемое удостоверение в роль пользователя секретов Key Vault вашего хранилища ключей Azure.
- Политика доступа к Azure Key Vault. При настройке использования политик доступа добавьте новую политику, которая предоставляет операцию получения секретов и назначьте ее управляемому удостоверению.
Секретное значение, хранящееся в Key Vault. Это значение можно получить с помощью ключа. Дополнительные сведения см. в разделе "Быстрый старт: Настройка и извлечение секрета из Azure Key Vault".
Совет
Ссылка для быстрого старта ведет к шагам использования Python SDK для Azure Key Vault. В оглавлении в левой области ссылки на другие способы задания ключа.
Получение URL-адреса хранилища ключей
При создании рабочей области Машинного обучения Azure хранилище ключей по умолчанию подготавливается вместе с ним. Используйте MLClient для получения URL-адреса хранилища программным способом:
from azure.ai.ml import MLClient
from azure.identity import DefaultAzureCredential
subscription_id = "<subscription-id>"
resource_group = "<resource-group>"
workspace_name = "<workspace-name>"
ml_client = MLClient(
DefaultAzureCredential(),
subscription_id=subscription_id,
resource_group_name=resource_group,
workspace_name=workspace_name,
)
workspace = ml_client.workspaces.get(workspace_name)
key_vault_arm_id = workspace.key_vault
vault_name = key_vault_arm_id.split("/")[-1]
vault_url = f"https://{vault_name}.vault.azure.net/"
print(vault_url) # https://<your-vault-name>.vault.azure.net/
Затем вы можете передать это vault_url значение в задание обучения в качестве переменной среды, как показано в приведенных ниже примерах.
Совет
Вы также можете найти URL-адрес хранилища ключей на портале Azure , перейдя в рабочую область и выбрав "Обзор". Хранилище ключей отображается в свойствах рабочей области.
получение секретов;
Вы можете получить секреты во время обучения двумя способами:
- Используйте управляемую идентичность, ассоциированную с вычислительным ресурсом, на котором выполняется обучение.
- Используйте свою идентификацию, чтобы вычислительные ресурсы выполняли задание от вашего имени.
Добавьте пакеты
azure-keyvault-secretsиazure-identityв среду машинного обучения Azure, которую вы используете для обучения модели. Например, добавьте их в файл conda, используемый для сборки среды.Используйте эту среду для создания образа Docker, выполняемого заданием обучения в вычислительном кластере.
В вашем учебном коде используйте Azure Identity SDK и клиентскую библиотеку Key Vault, чтобы получить учетные данные управляемого удостоверения и аутентифицироваться в хранилище ключей. Переменная
KEY_VAULT_URLсреды передается заданию во время отправки (см. шаг 3).import os from azure.identity import DefaultAzureCredential, InteractiveBrowserCredential from azure.keyvault.secrets import SecretClient try: credential = DefaultAzureCredential() credential.get_token("https://management.azure.com/.default") except Exception: credential = InteractiveBrowserCredential() vault_url = os.environ["KEY_VAULT_URL"] secret_client = SecretClient(vault_url=vault_url, credential=credential)Совет
В рабочей среде задайте переменной среды
AZURE_TOKEN_CREDENTIALSзначениеManagedIdentityCredential, чтобы ограничитьDefaultAzureCredentialцепочку только учетными данными управляемого удостоверения. Это изменение улучшает время запуска и уменьшает неоднозначность.После проверки подлинности используйте клиентскую библиотеку Key Vault для получения секрета, предоставив ключ, связанный с секретом.
secret = secret_client.get_secret("secret-name") print(secret.value)При отправке задания обучения передайте URL-адрес хранилища ключей в качестве переменной среды. Используйте значение
vault_url, извлеченное в операции получения URL-адреса хранилища ключей.from azure.ai.ml import command job = command( code="./src", command="python train.py", environment="AzureML-sklearn-1.0-ubuntu20.04-py38-cpu:1", compute="cpu-cluster", environment_variables={"KEY_VAULT_URL": vault_url}, ) ml_client.jobs.create_or_update(job)
Связанный контент
Пример отправки задания обучения с использованием пакета Azure Machine Learning Python SDK версии 2 см. в разделе "Обучение моделей с использованием Python SDK версии 2".