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


Защита рабочей области Машинного обучения Azure с помощью виртуальных сетей

ОБЛАСТЬ ПРИМЕНЕНИЯ:Расширение машинного обучения Azure CLI версии 2 (current)Python SDK azure-ai-ml версии 2 (current)

Совет

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

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

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

Руководство по созданию безопасной рабочей области см . в руководстве по созданию безопасной рабочей области, шаблона Bicep или шаблона Terraform.

Из этой статьи вы узнаете, как настроить следующие ресурсы рабочих областей в виртуальной сети:

  • Рабочая область службы "Машинное обучение Azure"
  • Учетные записи хранения Azure
  • Azure Key Vault
  • Реестр контейнеров Azure

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

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

  • Изучите подробности в статье Рекомендации по обеспечению корпоративной безопасности с помощью службы "Машинное обучение Azure".

  • Существующие виртуальная сеть и подсеть для использования с вычислительными ресурсами.

    Предупреждение

    Не используйте диапазон IP-адресов 172.17.0.0/16 для виртуальной сети. Это диапазон подсети по умолчанию, используемый сетью моста Docker, и приведет к ошибкам при использовании для виртуальной сети. Другие диапазоны также могут конфликтовать в зависимости от того, что вы хотите подключить к виртуальной сети. Например, если вы планируете подключить локальную сеть к виртуальной сети, а локальная сеть также использует диапазон 172.16.0.0/16. В конечном счете, это поможет вам спланировать сетевую инфраструктуру.

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

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

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

Реестр контейнеров Azure

  • Реестр контейнеров Azure должен иметь версию "Премиум". Дополнительные сведения об обновлении см. в разделе Изменение SKU.

  • Если Реестр контейнеров Azure использует частную конечную точку, рекомендуется использовать ее в той же виртуальной сети, что и учетная запись хранения и целевые объекты вычислений, используемые для обучения или вывода. Однако он также может находиться в одноранговой виртуальной сети.

    Если же используется конечная точка службы, то она должна находиться в той же виртуальной сети и подсети, что и учетная запись хранения и целевые объекты вычислений.

  • Рабочая область Машинного обучения Azure должна содержать кластер вычислительных ресурсов Машинного обучения Azure.

Ограничения

Учетная запись хранения Azure

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

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

Экземпляры контейнеров Azure

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

Реестр контейнеров Azure

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

Внимание

Вычислительный кластер, используемый для создания образов Docker, должен иметь доступ к репозиториям пакетов, с помощью которых обучаются и развертываются модели. Возможно, потребуется добавить правила безопасности сети, разрешающие доступ к общедоступным репозиториям, использовать частные пакеты Python или использовать пользовательские образы Docker (SDK версии 1), которые уже включают пакеты.

Предупреждение

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

Azure Monitor

Предупреждение

Azure Monitor поддерживает использование Приватного канала Azure для подключения к виртуальной сети. Однако в Azure Monitor необходимо использовать открытый режим для Приватного канала. Дополнительные сведения см. в разделе Режимы доступа к Приватному каналу: только частный или открытый.

Требуется общий доступ в Интернет

Машинному обучению 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 удаленному вычислительному экземпляру потребуется доступ к общедоступным репозиториям для установки пакетов, необходимых для расширения. Если вычислительному экземпляру требуется прокси-сервер для доступа к этим общедоступным репозиториям или Интернету, вам потребуется установить и экспортировать переменные среды HTTP_PROXY и HTTPS_PROXY в файл ~/.bashrc вычислительного экземпляра. Этот процесс можно автоматизировать во время подготовки с помощью пользовательского скрипта.

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

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

Защита рабочей области с помощью частной конечной точки

Приватный канал Azure позволяет подключаться к рабочей области через частную конечную точку. Частная конечная точка — это набор частных IP-адресов в виртуальной сети. Затем можно ограничить доступ к рабочей области, чтобы он выполнялся только по частным IP-адресам. Частная конечная точка помогает снизить риск утечки данных.

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

Предупреждение

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

Защита учетных записей хранения Azure

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

  1. На портале Azure выберите учетную запись службы хранилища Azure.

  2. Изучите информацию в статье Использование частных конечных точек для службы хранилища Azure, чтобы добавить частные конечные точки для следующих ресурсов хранилища:

    • Большой двоичный объект
    • Файл
    • Очередь — требуется только в том случае, если планируется использовать конечные точки пакетной службы или ParallelRunStep в конвейере Машинное обучение Azure.
    • Таблица — требуется только в том случае, если планируется использовать конечные точки пакетной службы или ParallelRunStep в конвейере Машинное обучение Azure.

    Снимок экрана: страница настройки частной конечной точки, где можно выбрать большой двоичный объект или файл

    Совет

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

  3. После создания частных конечных точек для ресурсов хранилища перейдите на вкладку Брандмауэры и виртуальные сети в разделе Сеть для учетной записи хранения.

  4. Нажмите Выбранные сети, а затем в разделе Экземпляры ресурсов в списке Тип ресурса выберите Microsoft.MachineLearningServices/Workspace. Выберите свою рабочую область в списке Имя экземпляра. Дополнительные сведения см. в разделе Доверенный доступ на основе управляемого удостоверения, назначаемого системой.

    Совет

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

    Область сети на странице службы хранилища Azure на портале Azure при использовании частной конечной точки

  5. Выберите Сохранить, чтобы сохранить конфигурацию.

Совет

При использовании частной конечной точки можно также отключить анонимный доступ. Дополнительные сведения см. в разделе о запрете анонимного доступа.

Защищенное хранилище Azure Key Vault

Машинное обучение Azure использует сопоставленный с этой службой экземпляр Key Vault для хранения следующих учетных данных:

  • строка подключения связанной учетной записи хранения;
  • пароли для экземпляров репозитория контейнеров Azure;
  • строки подключения к хранилищам данных.

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

Совет

Рекомендуется, чтобы хранилище ключей было в той же виртуальной сети, что и рабочая область, но она может находиться в одноранговой виртуальной сети.

Сведения об использовании частной конечной точки с Azure Key Vault см. в статье Интеграция Key Vault со службой "Приватный канал Azure".

Настройка Реестра контейнеров Azure (ACR)

Совет

Если при создании рабочей области вы не указали существующий Реестр контейнеров Azure, возможно, у вас его нет. По умолчанию рабочая область не создает экземпляр ACR, пока он не понадобится. Чтобы принудительно создать такой экземпляр, обучите или разверните модель в этой рабочей области, прежде чем переходить к дальнейшим шагам в этом разделе.

Реестр контейнеров Azure можно настроить для использования частной конечной точки. Чтобы настроить рабочую область для использования Реестра контейнеров Azure в виртуальной сети, выполните следующие действия.

  1. Чтобы найти имя Реестра контейнеров Azure для рабочей области, используйте один из следующих методов:

    ОБЛАСТЬ ПРИМЕНЕНИЯ: расширение машинного обучения Azure CLI версии 2 (текущее)

    Если вы установили расширение Машинного обучения (версию 2) для Azure CLI, то сможете использовать команду az ml workspace show для отображения сведений о рабочей области. Расширение версии 1 не возвращает эти сведения.

    az ml workspace show -n yourworkspacename -g resourcegroupname --query 'container_registry'
    

    Эта команда возвращает значение следующего вида: "/subscriptions/{GUID}/resourceGroups/{resourcegroupname}/providers/Microsoft.ContainerRegistry/registries/{ACRname}". Последняя часть строки — это имя реестра контейнеров Azure для рабочей области.

  2. Ограничьте доступ к виртуальной сети по инструкции из статьи Частное подключение к Реестру контейнеров Azure . При добавлении виртуальной сети выберите виртуальную сеть и подсеть для ресурсов Машинного обучения Azure.

  3. В ACR для рабочей области нужно разрешить доступ доверенным службам.

  4. По умолчанию Машинное обучение Azure попытается использовать бессерверные вычисления для создания образа. Это работает только в том случае, если ресурсы, зависящие от рабочей области, такие как учетная запись хранения или реестр контейнеров, не находятся под ограничением сети (частными конечными точками). Если ресурсы, зависящие от рабочей области, ограничены сетью, используйте вместо этого вычислительные ресурсы, зависящие от рабочей области, используйте вычислительные ресурсы, зависящие от рабочей области.

  5. Чтобы настроить вычисление сборки образов, создайте вычислительный кластер SKU ЦП Машинное обучение Azure в той же виртуальной сети, что и ресурсы, зависящие от рабочей области. Затем этот кластер можно задать как вычисление сборки образа по умолчанию и будет использоваться для создания каждого образа в рабочей области с этого момента. Используйте один из описанных ниже методов, чтобы настроить рабочую область для создания образов Docker с помощью вычислительного кластера.

    Внимание

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

    • Поддерживается только SKU c ЦП.
    • Если вы используете вычислительный кластер, настроенный для отсутствия общедоступного IP-адреса, то для доступа к общедоступному Интернету кластеру необходимо предоставить какой-то способ. Доступ к Интернету необходим при доступе к образам, хранящимся в реестре контейнеров Майкрософт, пакетам, установленным на Pypi, Conda и т. д. Вам необходимо настроить определяемую пользователем маршрутизацию (UDR) для доступа к общедоступному IP-адресу, чтобы получить доступ к Интернету. Например, вы можете воспользоваться общедоступным IP-адресом своего брандмауэра или использовать NAT виртуальных сетей с общедоступным IP-адресом. Дополнительные сведения см. в статье о безопасном обучении в виртуальной сети.

    Вы можете использовать команду az ml workspace update, чтобы задать вычисление сборки. Эта команда одинакова для расширений Azure CLI версии 1 и версии 2 для Машинного обучения. В приведенной ниже команде замените myworkspace на имя рабочей области, myresourcegroup — на группу ресурсов, которая содержит эту рабочую область, а mycomputecluster — на имя вычислительного кластера.

    az ml workspace update --name myworkspace --resource-group myresourcegroup --image-build-compute mycomputecluster
    

    Вы можете вернуться к бессерверным вычислениям, выполнив ту же команду и ссылаясь на вычисление как пустое пространство: --image-build-compute ''

Совет

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

Защита Azure Monitor и Application Insights

Чтобы включить сетевую изоляцию для Azure Monitor и экземпляр Application Insights для рабочей области, выполните следующие действия.

  1. Откройте ресурс Application Insights на портале Azure. Вкладка "Обзор" может иметь или не может иметь свойство "Рабочая область". Если у него нет свойства, выполните шаг 2. Если это так, можно перейти непосредственно к шагу 3.

    Совет

    Новые рабочие области по умолчанию создают ресурс Application Insights на основе рабочей области. Если рабочая область была создана недавно, вам не потребуется выполнить шаг 2.

  2. Обновите экземпляр Application Insights для рабочей области. Инструкции по обновлению см. в статье "Миграция на ресурсы Application Insights на основе рабочей области".

  3. Создайте область Приватный канал Azure Monitor и добавьте экземпляр Application Insights из шага 1 в область. Дополнительные сведения см. в статье "Настройка приватного канала Azure Monitor".

Безопасное подключение к рабочей области

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

  • VPN-шлюз Azure подключает локальные сети к виртуальной сети через частное подключение. Подключение осуществляется через общедоступный Интернет. Доступно два типа VPN-шлюзов.

    • "точка — сеть": каждый клиентский компьютер использует VPN-клиент для подключения к виртуальной сети;
    • "сеть — сеть": VPN-устройство подключает виртуальную сеть к локальной сети.
  • ExpressRoute. Подключает локальные сети к облаку через частное подключение. Подключение устанавливается с помощью поставщика услуг подключения.

  • Бастион Azure. В этом сценарии вы создаете виртуальную машину Azure (иногда называемую блоком перехода) в виртуальной сети. Затем вы подключаетесь к виртуальной машине с помощью Бастиона Azure. Бастион позволяет подключаться к виртуальной машине с помощью сеанса RDP или SSH из локального веб-браузера. Затем вы используете блок перехода в качестве среды разработки. Так как он находится внутри виртуальной сети, он имеет прямой доступ к рабочей области. Пример использования инсталляционного сервера приведен в разделе Создание защищенной рабочей области.

Внимание

При использовании VPN-шлюза или шлюза ExpressRoute необходимо спланировать разрешение имен в локальных ресурсах и в виртуальной сети. Дополнительные сведения см. в статье Использование настраиваемого DNS-сервера.

Если у вас возникли проблемы с подключением к рабочей области, см. статью Устранение неполадок с безопасным подключением к рабочей области.

Диагностика рабочей области

Из Студии машинного обучения Azure или пакета SDK Python можно запустить диагностику в рабочей области. После выполнения диагностики возвращается список всех обнаруженных проблем. Этот список содержит ссылки на возможные решения. Дополнительные сведения см. в статье Как использовать диагностику рабочей области.

Общедоступный доступ к рабочей области

Внимание

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

В некоторых случаях может потребоваться разрешить доступ к рабочей области из общедоступной сети (без подключения через виртуальную сеть с помощью методов, подробных сведений о безопасном подключении к разделу рабочей области ). Доступ через общедоступный Интернет защищен с помощью TLS.

Чтобы включить доступ к рабочей области общедоступной сети, выполните следующие действия.

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

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

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