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

ОБЛАСТЬ ПРИМЕНЕНИЯ: пакет SDK для Python azure-ai-ml версии 2 (текущая версия)

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

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

Важно!

Пакет SDK Python для Машинного обучения Azure версии 2 и расширение Azure CLI версии 2 для машинного обучения не предоставляют возможности для установки или получения секретов. Вместо этого в этой статье используется клиентская библиотека секретов Azure Key Vault для Python.

Предварительные требования

Перед выполнением действий, описанных в этой статье, убедитесь, что выполнены следующие необходимые условия:

Совет

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

  • Подписка Azure. Если у вас еще нет подписки Azure, создайте бесплатную учетную запись, прежде чем начинать работу. Попробуйте бесплатную или платную версию Машинного обучения Azure.

  • Рабочая область машинного обучения Azure. Если у вас ее нет, выполните действия, описанные в статье Создание ресурсов для начала работы .

  • Azure Key Vault. Если вы использовали статью Создание ресурсов для начала работы для создания рабочей области, хранилище ключей было создано для вас. Вы также можете создать отдельный экземпляр хранилища ключей, используя сведения из статьи Краткое руководство. Создание хранилища ключей .

    Совет

    Вам не нужно использовать то же хранилище ключей, что и рабочая область.

  • Вычислительный кластер Машинного обучения Azure, настроенный для использования управляемого удостоверения. Кластер можно настроить для управляемого удостоверения, назначаемого системой или пользователем.

  • Предоставьте управляемому удостоверению доступ вычислительного кластера к секретам, хранящимся в хранилище ключей. Метод, используемый для предоставления доступа, зависит от того, как настроено хранилище ключей:

    • Управление доступом на основе ролей Azure (Azure RBAC). Если вы настроены для Azure RBAC, добавьте управляемое удостоверение в роль пользователя секретов Key Vault в хранилище ключей.
    • Политика доступа Azure Key Vault. Если настроено использование политик доступа, добавьте новую политику, которая предоставляет операцию получения для секретов и назначьте ее управляемому удостоверению.
  • Значение секрета, сохраненное в хранилище ключей. Затем это значение можно получить с помощью ключа. Дополнительные сведения см. в статье Краткое руководство. Установка и получение секрета из Azure Key Vault.

    Совет

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

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

  1. azure-keyvault-secrets Добавьте пакеты и azure-identity в среду Машинного обучения Azure, используемую при обучении модели. Например, добавив их в файл conda, используемый для сборки среды.

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

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

    from azure.identity import DefaultAzureCredential
    from azure.keyvault.secrets import SecretClient
    
    credential = DefaultAzureCredential()
    
    secret_client = SecretClient(vault_url="https://my-key-vault.vault.azure.net/", credential=credential)
    
  3. После проверки подлинности используйте клиентская библиотека Key Vault, чтобы получить секрет, предоставив связанный ключ:

    secret = secret_client.get_secret("secret-name")
    print(secret.value)
    

Дальнейшие действия

Пример отправки задания обучения с помощью пакета SDK Python для Машинного обучения Azure версии 2 см. в статье Обучение моделей с помощью пакета SDK для Python версии 2.