Обеспечение безопасности среды обучения "Машинное обучение Azure" с помощью виртуальных сетей (пакет SDK версии 1)

ОБЛАСТЬ ПРИМЕНЕНИЯ:Пакет SDK для Python для ML Azure версии 1

Из этой статьи вы узнаете, как защитить среды обучения "Машинное обучение Azure" с помощью виртуальной сети, используя пакет SDK для Python версии 1.

Машинное обучение Azure вычислительный экземпляр и вычислительный кластер можно использовать для безопасного обучения моделей в виртуальной сети. При планировании среды можно настроить вычислительный экземпляр или кластер с общедоступным IP-адресом или без нее. Общие различия между этими двумя:

  • Нет общедоступного IP-адреса: снижает затраты, так как они не имеют одинаковых требований к сетевым ресурсам. Повышает безопасность, удаляя требование для входящего трафика из Интернета. Однако существуют дополнительные изменения конфигурации, необходимые для включения исходящего доступа к необходимым ресурсам (идентификатор Microsoft Entra, Azure Resource Manager и т. д.).
  • Общедоступный IP-адрес: работает по умолчанию, но стоит больше из-за дополнительных сетевых ресурсов Azure. Требуется входящий обмен данными из службы Машинное обучение Azure через общедоступный Интернет.

В следующей таблице содержатся различия между этими конфигурациями:

Настройка С общедоступным IP-адресом Без общедоступного IP-адреса
Входящий трафик AzureMachineLearning тег службы. нет
Исходящий трафик По умолчанию доступ к общедоступному Интернету без ограничений.
Вы можете ограничить доступ к доступу с помощью группы безопасности сети или брандмауэра.
По умолчанию он не может получить доступ к Интернету. Если он по-прежнему может отправлять исходящий трафик в Интернет, это связано с исходящим доступом Azure по умолчанию, и у вас есть группа безопасности сети, которая разрешает исходящий трафик в Интернет. Не рекомендуется использовать исходящий доступ по умолчанию.
Если вам нужен исходящий доступ к Интернету, рекомендуется использовать шлюз NAT виртуальная сеть или брандмауэр, если необходимо перенаправить исходящий трафик в необходимые ресурсы в Интернете.
Сетевые ресурсы Azure Общедоступный IP-адрес, подсистема балансировки нагрузки, сетевой интерфейс нет

Вы также можете использовать Azure Databricks или HDInsight для обучения моделей в виртуальной сети.

Совет

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

Примечание.

Сведения об использовании Студии машинного обучения Azure и пакета SDK для Python версии 2 можно найти в статье Защита среды обучения (версия 2).

При необходимости ознакомьтесь с учебниками по созданию защищенной рабочей области на портале Azure или с помощью шаблона.

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

  • Вычислительный кластер Машинного обучения Azure
  • Вычислительная операция Машинного обучения Azure
  • Azure Databricks
  • Виртуальная машина
  • Кластер HDInsight

Внимание

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

Необходимые компоненты

  • Прочитайте статью Обзор сетевой безопасности, чтобы ознакомиться с типовыми сценариями виртуальной сети и общей архитектурой виртуальной сети.

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

    • Мы рекомендуем поместить учетные записи хранения, используемые рабочей областью и заданиями обучения в том же регионе Azure, который планируется использовать для вычислительных экземпляров и кластеров. Если они не в одном регионе Azure, вы можете нести расходы на передачу данных и увеличить задержку в сети.
    • Убедитесь, что обмен данными через WebSocket разрешен для *.instances.azureml.net и *.instances.azureml.ms в виртуальной сети. WebSocket используются Jupyter в вычислительных экземплярах.
  • Существующая подсеть в виртуальной сети. Эта подсеть используется при создании вычислительных экземпляров и кластеров.

    • Убедитесь, что подсеть не делегирована другим службам Azure.
    • Убедитесь, что подсеть содержит достаточно свободных IP-адресов. Для каждого вычислительного экземпляра требуется один IP-адрес. Для каждого узла в вычислительном кластере требуется один IP-адрес.
  • Если у вас есть собственный DNS-сервер, рекомендуется использовать перенаправление DNS для разрешения полных доменных имен (FQDN) вычислительных экземпляров и кластеров. Дополнительные сведения см. в разделе "Использование пользовательского DNS" с Машинное обучение Azure.

  • Чтобы развернуть ресурсы в виртуальной сети или подсети, учетная запись пользователя должна иметь разрешения на доступ к следующим действиям в управлении доступом на основе ролей в Azure (Azure RBAC):

    • "Microsoft.Network/*/read" в ресурсе виртуальной сети. Это разрешение не требуется для развертываний шаблонов Azure Resource Manager (ARM).
    • "Microsoft.Network/virtualNetworks/join/action" в ресурсе виртуальной сети.
    • "Microsoft.Network/virtualNetworks/subnets/join/action" в ресурсе подсети.

    Дополнительные сведения об Azure RBAC при работе с сетью см. в разделе Встроенные роли сети.

Ограничения

Вычислительный кластер или экземпляр Машинного обучения Azure

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

  • Развертывание вычислительного кластера или экземпляра в виртуальной сети не поддерживается в Azure Lighthouse.

  • Во время обучения порт 445 должен быть открыт для обмена данными по частной сети между вычислительными экземплярами и учетной записью хранения по умолчанию. Например, если вычислительные ресурсы находятся в одной виртуальной сети, а учетная запись хранения — в другой, не блокируйте порт 445 для виртуальной сети этой учетной записи.

Azure Databricks

  • Виртуальная сеть должна размещаться в той же подписке и том же регионе, что и рабочая область Машинного обучения Azure.
  • Если учетные записи хранения Azure для рабочей области также предусмотрены в виртуальной сети, они должны находиться в той же виртуальной сети, что и кластер Azure Databricks.
  • В дополнение к подсетям databricks-private и databricks-public, используемым Azure Databricks, необходимо также создать подсеть по умолчанию для виртуальной сети.
  • Azure Databricks не использует частную конечную точку для взаимодействия с виртуальной сетью.

Дополнительные сведения об использовании Azure Databricks в виртуальной сети см. в разделе Развертывание Azure Databricks в виртуальной сети Azure.

Azure HDInsight или виртуальная машина

  • Машинное обучение Azure поддерживает только виртуальные машины под управлением Ubuntu.

Вычислительный экземпляр или кластер без общедоступного IP-адреса

Внимание

Если вы использовали вычислительные экземпляры или вычислительные кластеры, настроенные для отсутствия общедоступного IP-адреса без предварительной версии, необходимо удалить и повторно создать их после 20 января 2023 г. (если эта функция общедоступна).

Если вы ранее использовали предварительную версию общедоступного IP-адреса, возможно, вам также потребуется изменить трафик, разрешенный входящий и исходящий трафик, так как требования изменились для общедоступной доступности:

  • Требования к исходящему трафику — два дополнительных исходящих трафика, которые используются только для управления вычислительными экземплярами и кластерами. Назначение этих тегов службы принадлежит корпорации Майкрософт:
    • AzureMachineLearning тег службы на порте UDP 5831.
    • BatchNodeManagement тег службы на TCP-порте 443.

Следующие конфигурации в дополнение к перечисленным в разделе предварительных требований и относятся к созданию вычислительных экземпляров и кластеров, настроенных для отсутствия общедоступного IP-адреса:

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

  • В виртуальной сети разрешите исходящий трафик следующим тегам службы или полным доменным именам (FQDN):

    Тег службы Протокол Порт Примечания.
    AzureMachineLearning TCP
    UDP
    443/8787/18881
    5831
    Связь со службой "Машинное обучение Azure".
    BatchNodeManagement.<region> ЛЮБАЯ 443 Для параметра <region> укажите регион Azure, в котором находится ваша рабочая область Машинного обучения Azure. Связь с пакетной службой Azure. Вычислительные экземпляр и кластер внедряются с помощью пакетной службы Azure.
    Storage.<region> TCP 443 Для параметра <region> укажите регион Azure, в котором находится ваша рабочая область Машинного обучения Azure. Этот тег службы нужен для взаимодействия с учетной записью хранения Azure, используемой пакетной службой Azure.

    Внимание

    Исходящий доступ Storage.<region> к потенциальному использованию для получения данных из рабочей области. С помощью Политики конечной точки службы можно устранить эту уязвимость. Дополнительные сведения см. в статье о предотвращении кражи данных Машинного обучения Azure.

    Полное доменное имя Протокол Порт Примечания.
    <region>.tundra.azureml.ms UDP 5831 Для параметра <region> укажите регион Azure, в котором находится ваша рабочая область Машинного обучения Azure.
    graph.windows.net TCP 443 Связь с API Microsoft Graph.
    *.instances.azureml.ms TCP 443/8787/18881 Связь с Машинным обучением Azure.
    *.<region>.batch.azure.com ЛЮБАЯ 443 Для параметра <region> укажите регион Azure, в котором находится ваша рабочая область Машинного обучения Azure. Связь с пакетной службой Azure.
    *.<region>.service.batch.azure.com ЛЮБАЯ 443 Для параметра <region> укажите регион Azure, в котором находится ваша рабочая область Машинного обучения Azure. Связь с пакетной службой Azure.
    *.blob.core.windows.net TCP 443 Связь с хранилищем BLOB-объектов Azure.
    *.queue.core.windows.net TCP 443 Связь с хранилищем очередей Azure.
    *.table.core.windows.net TCP 443 Связь с хранилищем таблиц Azure.
  • Создайте правила брандмауэра и исходящего трафика или шлюз NAT и группы сетевых служб, чтобы разрешить исходящий трафик. Так как вычислительные ресурсы не имеют общедоступного IP-адреса, он не может взаимодействовать с ресурсами в общедоступном Интернете без этой конфигурации. Например, он не сможет взаимодействовать с идентификатором Microsoft Entra или Azure Resource Manager. Для установки пакетов Python из общедоступных источников также потребуется эта конфигурация.

    Дополнительные сведения об исходящем трафике, используемом службой "Машинное обучение Azure", см. в этих статьях:

Используйте следующие сведения для создания вычислительного экземпляра или кластера без общедоступного IP-адреса:

Чтобы создать вычислительный экземпляр или вычислительный кластер без общедоступного IP-адреса, используйте пользовательский интерфейс Студия машинного обучения Azure для создания ресурса:

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

  2. Выберите страницу вычислений в левой панели навигации.

  3. Выберите +Создать на панели навигации вычислительного экземпляра или вычислительного кластера.

  4. Настройте нужный размер и конфигурацию виртуальной машины, а затем нажмите кнопку "Далее".

  5. В расширенной Параметры выберите "Включить виртуальную сеть", виртуальную сеть и подсеть и, наконец, выберите параметр "Нет общедоступного IP-адреса" в разделе "Виртуальная сеть или подсеть".

    A screenshot of how to configure no public IP for compute instance and compute cluster.

Совет

Вы также можете использовать расширение пакета SDK для Машинное обучение Azure версии 2 или Azure CLI для МАШИНного обучения версии 2. Сведения о создании вычислительного экземпляра или кластера без общедоступного IP-адреса см. в статье о защите среды обучения Машинное обучение Azure версии 2.

Вычислительный экземпляр или кластер с общедоступным IP-адресом

Следующие конфигурации в дополнение к перечисленным в разделе "Предварительные требования" и относятся к созданию вычислительных экземпляров и кластеров с общедоступным IP-адресом:

  • Если вы помещаете несколько вычислительных экземпляров или кластеров в одну виртуальную сеть, может потребоваться запросить увеличение квоты для одного или нескольких ресурсов. Экземпляр или кластер вычислительных ресурсов машинного обучения автоматически выделяет сетевые ресурсы в группе ресурсов, которая содержит виртуальную сеть. Для каждого экземпляра или кластера вычислительных ресурсов служба выделяет следующие ресурсы:

    • Группа безопасности сети (NSG) создается автоматически. Эта группа безопасности сети разрешает входящий TCP-трафик через порт 44224 из тега AzureMachineLearning службы.

      Внимание

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

      Если у вас есть другая группа безопасности сети на уровне подсети, правила в NSG уровня подсети не должны конфликтовать с правилами в автоматически созданной NSG.

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

    • Одна подсистема балансировки нагрузки

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

    Эти ресурсы сохраняются для вычислительного экземпляра до тех пор, пока он не будет удален. При остановке экземпляра ресурсы не удаляются.

    Внимание

    Эти ресурсы ограничены квотами ресурсов в подписке. Если группа ресурсов виртуальной сети заблокирована, удаление вычислительного кластера/экземпляра завершится сбоем. Невозможно удалить балансировщик нагрузки, пока не удален вычислительный кластер/экземпляр. Также убедитесь в отсутствии назначения Политики Azure, которое запрещает создание групп безопасности сети.

  • В виртуальной сети разрешите входящий TCP-трафик через порт 44224 из тега AzureMachineLearning службы.

    Внимание

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

  • В виртуальной сети разрешите исходящий трафик следующим тегам службы:

    Тег службы Протокол Порт Примечания.
    AzureMachineLearning TCP
    UDP
    443/8787/18881
    5831
    Связь со службой "Машинное обучение Azure".
    BatchNodeManagement.<region> ЛЮБАЯ 443 Для параметра <region> укажите регион Azure, в котором находится ваша рабочая область Машинного обучения Azure. Связь с пакетной службой Azure. Вычислительные экземпляр и кластер внедряются с помощью пакетной службы Azure.
    Storage.<region> TCP 443 Для параметра <region> укажите регион Azure, в котором находится ваша рабочая область Машинного обучения Azure. Этот тег службы нужен для взаимодействия с учетной записью хранения Azure, используемой пакетной службой Azure.

    Внимание

    Исходящий доступ Storage.<region> к потенциальному использованию для получения данных из рабочей области. С помощью Политики конечной точки службы можно устранить эту уязвимость. Дополнительные сведения см. в статье о предотвращении кражи данных Машинного обучения Azure.

    Полное доменное имя Протокол Порт Примечания.
    <region>.tundra.azureml.ms UDP 5831 Для параметра <region> укажите регион Azure, в котором находится ваша рабочая область Машинного обучения Azure.
    graph.windows.net TCP 443 Связь с API Microsoft Graph.
    *.instances.azureml.ms TCP 443/8787/18881 Связь с Машинным обучением Azure.
    *.<region>.batch.azure.com ЛЮБАЯ 443 Для параметра <region> укажите регион Azure, в котором находится ваша рабочая область Машинного обучения Azure. Связь с пакетной службой Azure.
    *.<region>.service.batch.azure.com ЛЮБАЯ 443 Для параметра <region> укажите регион Azure, в котором находится ваша рабочая область Машинного обучения Azure. Связь с пакетной службой Azure.
    *.blob.core.windows.net TCP 443 Связь с хранилищем BLOB-объектов Azure.
    *.queue.core.windows.net TCP 443 Связь с хранилищем очередей Azure.
    *.table.core.windows.net TCP 443 Связь с хранилищем таблиц Azure.

ОБЛАСТЬ ПРИМЕНЕНИЯ:Пакет SDK для Python для ML Azure версии 1

import datetime
import time

from azureml.core.compute import ComputeTarget, ComputeInstance
from azureml.core.compute_target import ComputeTargetException

# Choose a name for your instance
# Compute instance name should be unique across the azure region
compute_name = "ci{}".format(ws._workspace_id)[:10]

# Verify that instance does not exist already
try:
    instance = ComputeInstance(workspace=ws, name=compute_name)
    print('Found existing instance, use it.')
except ComputeTargetException:
    compute_config = ComputeInstance.provisioning_configuration(
        vm_size='STANDARD_D3_V2',
        ssh_public_access=False,
        vnet_resourcegroup_name='vnet_resourcegroup_name',
        vnet_name='vnet_name',
        subnet_name='subnet_name',
        # admin_user_ssh_public_key='<my-sshkey>'
    )
    instance = ComputeInstance.create(ws, compute_name, compute_config)
    instance.wait_for_completion(show_output=True)

Когда процесс создания завершится, вы обучите модель. Дополнительные сведения вы найдете в статье Настройка целевых объектов вычислений для обучения моделей.

Azure Databricks

  • Виртуальная сеть должна размещаться в той же подписке и том же регионе, что и рабочая область Машинного обучения Azure.
  • Если учетные записи хранения Azure для рабочей области также предусмотрены в виртуальной сети, они должны находиться в той же виртуальной сети, что и кластер Azure Databricks.
  • В дополнение к подсетям databricks-private и databricks-public, используемым Azure Databricks, необходимо также создать подсеть по умолчанию для виртуальной сети.
  • Azure Databricks не использует частную конечную точку для взаимодействия с виртуальной сетью.

Конкретные сведения об использовании Azure Databricks с виртуальной сетью см. в разделе Развертывание Azure Databricks в виртуальной сети Azure.

Обязательный общедоступный доступ к Интернету для обучения моделей

Внимание

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

Машинному обучению Azure требуется как входящий, так и исходящий доступ к общедоступному Интернету. В следующих таблицах представлены общие сведения о требуемом доступе и назначении, которые она служит. Для тегов служб, которые заканчиваются на .region, замените region на регион Azure, содержащий рабочую область. Например, Storage.westus:

Совет

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

Направление Протокол &
порты
Тег службы Характер использования
Исходящие TCP: 80, 443 AzureActiveDirectory Проверка подлинности с использованием Microsoft Entra ID.
Исходящие TCP: 443, 18881
UDP: 5831
AzureMachineLearning Использование служб Машинного обучения Azure.
Intellisense Python в записных книжках использует порт 18881.
Создание, обновление и удаление экземпляра вычислений Машинное обучение Azure использует порт 5831.
Исходящие ANY: 443 BatchNodeManagement.region Обмен данными с пакетная служба Azure внутреннего сервера для Машинное обучение Azure вычислительных экземпляров или кластеров.
Исходящие TCP: 443 AzureResourceManager Создание ресурсов Azure с помощью Машинное обучение Azure, Azure CLI и пакета SDK для Машинное обучение Azure.
Исходящие TCP: 443 Storage.region Доступ к данным, хранящимся в учетной записи хранения Azure, для вычислительного кластера и вычислительного экземпляра. Сведения о предотвращении кражи данных по этому исходящему трафику см. в разделе "Защита от кражи данных".
Исходящие TCP: 443 AzureFrontDoor.FrontEnd
* Не требуется в Microsoft Azure под управлением 21Vianet.
Глобальная точка входа для Студии машинного обучения Azure. Хранение образов и сред для AutoML. Сведения о предотвращении кражи данных по этому исходящему трафику см. в разделе "Защита от кражи данных".
Исходящие TCP: 443 MicrosoftContainerRegistry.region
Обратите внимание, что этот тег имеет зависимость от тега AzureFrontDoor.FirstParty
Доступ к образом Docker, предоставляемым корпорацией Майкрософт. Настройка маршрутизатора Машинного обучения Azure для Службы Kubernetes Azure.

Совет

Если вам нужны IP-адреса вместо тегов служб, используйте один из следующих вариантов.

IP-адреса периодически могут меняться.

Кроме того, может потребоваться разрешить исходящий трафик к Visual Studio Code и на сайты, не относящиеся к Майкрософт, для установки пакетов, необходимых для проекта машинного обучения. В следующей таблице перечислены часто используемые репозитории для машинного обучения.

Имя узла Назначение
anaconda.com
*.anaconda.com
Используется для установки пакетов по умолчанию.
*.anaconda.org Используется для получения данных репозитория.
pypi.org Используется для вывода списка зависимостей из индекса по умолчанию, если таковые имеются, а индекс не перезаписывается параметрами пользователя. Если индекс перезаписан, необходимо также разрешить *.pythonhosted.org.
cloud.r-project.org Используется при установке пакетов CRAN для разработки R.
*.pytorch.org Используется в некоторых примерах на основе PyTorch.
*.tensorflow.org Используется в некоторых примерах на основе Tensorflow.
code.visualstudio.com Требуется для скачивания и установки рабочего стола Visual Studio Code. Это не обязательно для Visual Studio Code Web.
update.code.visualstudio.com
*.vo.msecnd.net
Используется для извлечения битов сервера Visual Studio Code, установленных на вычислительном экземпляре с помощью скрипта установки.
marketplace.visualstudio.com
vscode.blob.core.windows.net
*.gallerycdn.vsassets.io
Требуется для скачивания и установки расширений Visual Studio Code. Эти узлы позволяют удаленному подключению к вычислительным экземплярам, предоставляемым расширением Машинного обучения Azure для Visual Studio Code. Дополнительные сведения см. в статье Подключение к вычислительному экземпляру Машинного обучения Azure в Visual Studio Code.
raw.githubusercontent.com/microsoft/vscode-tools-for-ai/master/azureml_remote_websocket_server/* Используется для получения битов сервера WebSocket, установленных на вычислительном экземпляре. Сервер WebSocket используется для передачи запросов от клиента Visual Studio Code (классического приложения) на сервер Visual Studio Code, работающий на вычислительном экземпляре.

Примечание.

При использовании расширения VS Code Машинное обучение Azure удаленному вычислительному экземпляру потребуется доступ к общедоступным репозиториям для установки пакетов, необходимых для расширения. Если для экземпляра вычислений требуется прокси-сервер для доступа к этим общедоступным репозиториям или Интернету, необходимо задать и HTTPS_PROXY экспортировать HTTP_PROXY переменные среды в ~/.bashrc файле вычислительного экземпляра. Этот процесс можно автоматизировать во время подготовки с помощью пользовательского скрипта.

При использовании службы Azure Kubernetes Service (AKS) с Машинным обучением Azure разрешите следующий трафик в виртуальной сети AKS.

Сведения об использовании решения брандмауэра см. в статье Использование рабочей области через брандмауэр для Машинного обучения Azure.

Следующие шаги

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