Поделиться через


Использование секретов учетных данных для проверки подлинности в обучающих заданиях Машинного обучения Azure

ПРИМЕНЯЕТСЯ К:Пакет SDK машинного обучения Azure версии 1 для Python

Внимание

В этой статье содержатся сведения об использовании пакета SDK машинного обучения Azure версии 1. Пакет SDK версии 1 устарел с 31 марта 2025 г. Поддержка будет завершена 30 июня 2026 г. Вы можете установить и использовать пакет SDK версии 1 до этой даты.

Рекомендуется перейти на пакет SDK версии 2 до 30 июня 2026 г. Дополнительные сведения о пакете SDK версии 2 см. в статье "Что такое ИНТЕРФЕЙС командной строки Машинного обучения Azure" и пакет SDK для Python версии 2 исправочник по пакету SDK версии 2.

Из этой статьи вы узнаете, как безопасно использовать секреты в обучающих заданиях. Сведения проверки подлинности, такие как имя пользователя и пароль, являются секретами. Например, при подключении к внешней базе данных для запроса обучающих данных необходимо передать имя пользователя и пароль в контекст удаленного задания. Включение таких значений в сценарии обучения в виде открытого текста не является безопасным, так как секрет может быть раскрыт.

Вместо этого в рабочей области Машинного обучения Azure есть связанный ресурс, называемый Azure Key Vault. Это хранилище Key Vault применяется для безопасной передачи секретов в удаленные задания с помощью различных API из пакета SDK Машинного обучения Azure для Python.

Стандартный поток использования секретов выглядит следующим образом.

  1. На локальном компьютере войдите в Azure и подключитесь к рабочей области.
  2. На локальном компьютере задайте секрет в Key Vault рабочей области.
  3. Отправьте удаленное задание.
  4. В удаленном задании получите секрет из Key Vault и используйте его.

Настройка секретов

В Машинном обучении Azure класс Keyvault содержит методы для настройки секретов. В локальном сеансе Python сначала получите ссылку на Key Vault вашей рабочей области, а затем используйте метод set_secret(), чтобы задать секрет по имени и значению. Метод set_secret обновляет значение секрета, если такое имя уже существует.

from azureml.core import Workspace
from azureml.core import Keyvault
import os


ws = Workspace.from_config()
my_secret = os.environ.get("MY_SECRET")
keyvault = ws.get_default_keyvault()
keyvault.set_secret(name="mysecret", value = my_secret)

Не помещайте значение секрета в код Python, так как оно небезопасно для хранения его в файле в виде ясного текста. Вместо этого получите значение секрета из переменной среды, например Azure DevOps build secret, или из интерактивных данных, введенных пользователем.

Вы можете перечислить имена секретов с помощью list_secrets() метода, а также пакетную версию set_secrets(), которая позволяет задать несколько секретов одновременно.

Внимание

Использование list_secrets() будет перечислять только секреты, созданные set_secret() с помощью пакета set_secrets() SDK для Машинное обучение Azure. Не будут перечислены секреты, созданные с помощью средств, отличных от пакета SDK. Например, в списке не будет секрета, созданного с помощью портала Azure или Azure PowerShell.

Вы можете использовать get_secret() для получения значения секрета из хранилища ключей, независимо от того, как он был создан. Таким образом, вы можете получить секреты, которые не перечислены в list_secrets().

получение секретов;

Для получения значения секрета по имени в локальном коде вы можете использовать метод get_secret().

Для заданий, отправленных Experiment.submit, используйте метод get_secret() с классом Run. Так как отправленный запуск осведомлен о своей рабочей области, этот метод сокращает создание экземпляра рабочей области и напрямую возвращает значение секрета.

# Code in submitted job
from azureml.core import Experiment, Run

run = Run.get_context()
secret_value = run.get_secret(name="mysecret")

Будьте внимательны, чтобы не раскрыть значение секрета, написав или напечатав его.

Существует также пакетная версия, get_secrets() для доступа к нескольким секретам одновременно.