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


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

ОБЛАСТЬ ПРИМЕНЕНИЯ:Расширение Машинного обучения для Azure CLI версии 1пакет SDK для Python azureml версии 1

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

Совет

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

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

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

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

  • Рабочая область службы "Машинное обучение Azure"
  • Учетные записи хранения 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

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

Внимание

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

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

Если Реестр контейнеров 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.

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

Приватный канал 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 версии 1

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

    az ml workspace show -w yourworkspacename -g resourcegroupname --query 'containerRegistry'
    

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

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

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

  4. создадите вычислительный кластер Машинного обучения Azure; Этот кластер используется для создания образов Docker, когда Реестр контейнеров Azure находится в виртуальной сети. Дополнительные сведения см. в разделе Создание вычислительного кластера.

  5. Используйте один из описанных ниже методов, чтобы настроить рабочую область для создания образов 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
    

Совет

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

Хранилища данных и наборы данных

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

Service Требуется пропустить проверку?
Хранилище BLOB-объектов Azure Да
Общая папка Azure Да
Azure Data Lake Store 1-го поколения No
Azure Data Lake Store 2-го поколения No
База данных SQL Azure Да
PostgreSQL Да

Примечание.

Azure Data Lake Store 1-го поколения и Azure Data Lake Store 2-го поколения по умолчанию не используют эту проверку, поэтому для них какие-либо действия не требуются.

С помощью следующего примера кода создается хранилище данных для больших двоичных объектов Azure и настраивается значение skip_validation=True.

blob_datastore = Datastore.register_azure_blob_container(workspace=ws,  

                                                         datastore_name=blob_datastore_name,  

                                                         container_name=container_name,  

                                                         account_name=account_name, 

                                                         account_key=account_key, 

                                                         skip_validation=True ) // Set skip_validation to true

Использование наборов данных

Отключение проверки набора данных схожим образом выполняется для следующих типов наборов данных:

  • файл с разделителями;
  • JSON
  • Parquet
  • SQL
  • Файлы

С помощью следующего кода создается новый набор данных в формате JSON и задается значение validate=False.

json_ds = Dataset.Tabular.from_json_lines_files(path=datastore_paths, 

validate=False) 

Защита 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. Другие статьи этой серии: