Защита рабочей области Машинного обучения Azure с помощью виртуальных сетей (версия 1)
ОБЛАСТЬ ПРИМЕНЕНИЯ:Расширение ML для Azure CLI версии 1
пакет SDK Python для ML Azure версии 1
Из этой статьи вы узнаете, как защитить рабочую область Машинного обучения Azure и связанные с ней ресурсы в виртуальная сеть Azure.
Совет
Машинное обучение Azure также предоставляет управляемые виртуальные сети (предварительная версия). С помощью управляемой виртуальной сети Машинное обучение Azure обрабатывает задание сетевой изоляции для рабочей области и управляемых вычислений. Вы также можете добавить частные конечные точки для ресурсов, необходимых рабочей области, таких как учетная запись хранения Azure. Дополнительные сведения см. в статье Изоляция управляемой сети рабочей области.
Эта статья входит в серию статей, посвященных вопросам защиты рабочего процесса Машинного обучения Azure. Другие статьи этой серии:
- Общие сведения о виртуальных сетях
- Обеспечение безопасности среды обучения
- Безопасная среда вывода
- Включение функций Студии
- Использование пользовательских DNS-серверов
- Использование брандмауэра
- Сетевая изоляция платформы API
Учебник по созданию защищенной рабочей области см. в разделе Учебник. Создание защищенной рабочей области или Учебник. Создание защищенной рабочей области с помощью шаблона.
Из этой статьи вы узнаете, как настроить следующие ресурсы рабочих областей в виртуальной сети:
- Рабочая область службы "Машинное обучение Azure"
- Учетные записи службы хранилища Azure
- хранилища данных и наборы данных Машинного обучения Azure;
- Хранилище ключей Azure;
- Реестр контейнеров Azure
Предварительные требования
Прочитайте статью Обзор сетевой безопасности, чтобы ознакомиться с типовыми сценариями виртуальной сети и общей архитектурой виртуальной сети.
Изучите подробности в статье Рекомендации по обеспечению корпоративной безопасности с помощью службы "Машинное обучение Azure".
Существующие виртуальная сеть и подсеть для использования с вычислительными ресурсами.
Важно!
Мы не рекомендуем использовать для виртуальной сети диапазон IP-адресов 172.17.0.0/16. Это диапазон подсетей по умолчанию, используемый сетью моста Docker. Другие диапазоны также могут конфликтовать в зависимости от того, что вы хотите подключить к виртуальной сети. Например, если вы планируете подключить локальную сеть к виртуальной сети, а локальная сеть также использует диапазон 172.16.0.0/16. В конечном счете, это поможет вам спланировать сетевую инфраструктуру.
Чтобы развернуть ресурсы в виртуальной сети или подсети, учетная запись пользователя должна иметь разрешения на доступ к следующим действиям в управлении доступом на основе ролей в Azure (Azure RBAC):
- "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
:
Совет
На вкладке "Обязательный" перечислены необходимые конфигурации для входящего и исходящего трафика. На ситуационной вкладке перечислены необязательные входящие и исходящие конфигурации, необходимые для конкретных конфигураций, которые могут потребоваться включить.
Направление | Протокол & ports; |
Тег службы | Назначение |
---|---|---|---|
Исходящие | TCP: 80, 443 | AzureActiveDirectory |
Проверка подлинности с помощью Azure AD. |
Исходящие | TCP: 443, 18881 UDP: 5831 |
AzureMachineLearning |
Использование служб Машинного обучения Azure. Intellisense для Python в записных книжках использует порт 18881. При создании, обновлении и удалении вычислительного экземпляра Машинного обучения Azure используется порт 5831. |
Исходящие | ЛЮБОЙ: 443 | BatchNodeManagement.region |
Взаимодействие с пакетная служба Azure внутренней частью для вычислительных экземпляров и кластеров Машинного обучения Azure. |
Исходящие | TCP: 443 | AzureResourceManager |
Создание ресурсов Azure с помощью Машинного обучения Azure, Azure CLI и пакета SDK для Машинного обучения Azure. |
Исходящие | TCP: 443 | Storage.region |
Доступ к данным, хранящимся в учетной записи хранения Azure, для вычислительного кластера и вычислительного экземпляра. Сведения о предотвращении кражи данных из-за этого исходящего трафика см. в разделе Защита от кражи данных. |
Исходящие | TCP: 443 | AzureFrontDoor.FrontEnd * Не требуется в Azure для Китая. |
Глобальная точка входа для Студии машинного обучения Azure. Хранение образов и сред для AutoML. Сведения о предотвращении кражи данных из-за этого исходящего трафика см. в разделе Защита от кражи данных. |
Исходящие | TCP: 443 | MicrosoftContainerRegistry.region Обратите внимание, что этот тег зависит от тега AzureFrontDoor.FirstParty |
Доступ к образом Docker, предоставляемым корпорацией Майкрософт. Настройка маршрутизатора Машинного обучения Azure для Службы Kubernetes Azure. |
Совет
Если вам нужны IP-адреса вместо тегов служб, используйте один из следующих вариантов.
- Скачайте список из диапазонов IP-адресов Azure и тегов служб.
- Используйте команду Azure CLI az network list-service-tags.
- Используйте команду Azure PowerShell Get-AzNetworkServiceTag.
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.
- Общие требования к входящему/исходящему трафику для AKS приведены в статье Ограничение исходящего трафика в Службе Azure Kubernetes.
- Исходящий трафик на mcr.microsoft.com.
- При развертывании модели в кластере AKS используйте руководство в статье Развертывание моделей машинного обучения в Службе Azure Kubernetes.
Сведения об использовании решения брандмауэра см. в статье Использование рабочей области через брандмауэр для Машинного обучения Azure.
Защита рабочей области с помощью частной конечной точки
Приватный канал Azure позволяет подключаться к рабочей области через частную конечную точку. Частная конечная точка — это набор частных IP-адресов в виртуальной сети. Затем можно ограничить доступ к рабочей области, чтобы он выполнялся только по частным IP-адресам. Частная конечная точка помогает снизить риск утечки данных.
Дополнительные сведения о настройке частной конечной точки для рабочей области см. в статье Настройте частную конечную точку для рабочей области Машинного обучения Azure.
Предупреждение
Защита рабочей области с помощью частных конечных точек сама по себе не гарантирует комплексную безопасность. Чтобы защитить отдельные компоненты решения, дополнительно нужно выполнить действия, описанные в оставшейся части этой статьи и всей серии статей о виртуальных сетях. Например, если для рабочей области используется частная конечная точка, но учетная запись хранения Azure находится вне виртуальной сети, трафик между рабочей областью и этим хранилищем не будет защищен виртуальной сетью.
Защита учетных записей хранения Azure
Машинное обучение Azure поддерживает учетные записи хранения, которые настроены для использования частной конечной точки или конечной точки службы.
На портале Azure выберите учетную запись службы хранилища Azure.
Изучите информацию в статье Использование частных конечных точек для службы хранилища Azure, чтобы добавить частные конечные точки для следующих ресурсов хранилища:
- Большой двоичный объект
- Файл
- Очередь (если вы планируете использовать ParallelRunStep в конвейере Машинного обучения Azure)
- Таблица (если вы планируете использовать ParallelRunStep в конвейере Машинного обучения Azure)
Совет
Чтобы настроить учетную запись хранения, отличную от хранилища по умолчанию, выберите тип Целевой подресурс, который соответствует добавляемой учетной записи хранения.
После создания частных конечных точек для ресурсов хранилища перейдите на вкладку Брандмауэры и виртуальные сети в разделе Сеть для учетной записи хранения.
Нажмите Выбранные сети, а затем в разделе Экземпляры ресурсов в списке Тип ресурса выберите
Microsoft.MachineLearningServices/Workspace
. Выберите свою рабочую область в списке Имя экземпляра. Дополнительные сведения см. в разделе Доверенный доступ на основе управляемого удостоверения, назначаемого системой.Совет
Вы также можете установить флажок Разрешить службам Azure из списка доверенных служб доступ к этой учетной записи хранения, чтобы расширить возможности доступа из доверенных служб. Дополнительные сведения см. в статье Настройка брандмауэров службы хранилища Azure и виртуальных сетей.
Нажмите кнопку Сохранить, чтобы сохранить конфигурацию.
Совет
При использовании частной конечной точки можно отключить общий доступ. Дополнительные сведения см. в разделе Запрет общего доступа на чтение.
Защищенное хранилище Azure Key Vault
Машинное обучение Azure использует сопоставленный с этой службой экземпляр Key Vault для хранения следующих учетных данных:
- строка подключения связанной учетной записи хранения;
- пароли для экземпляров репозитория контейнеров Azure;
- строки подключения к хранилищам данных.
Azure Key Vault можно настроить для использования частной конечной точки или конечной точки службы. Чтобы использовать возможности экспериментирования в системе Машинного обучения Azure с хранилищем ключей Azure за виртуальной сетью, выполните следующие действия.
Совет
Неважно, используете ли вы частную конечную точку или конечную точку службы. В любом случае хранилище ключей должно находиться в той же сети, что и частная конечная точка рабочей области.
Сведения об использовании частной конечной точки с Azure Key Vault см. в статье Интеграция Key Vault со службой "Приватный канал Azure".
Настройка Реестра контейнеров Azure (ACR)
Совет
Если при создании рабочей области вы не указали существующий Реестр контейнеров Azure, возможно, у вас его нет. По умолчанию рабочая область не создает экземпляр ACR, пока он не понадобится. Чтобы принудительно создать такой экземпляр, обучите или разверните модель в этой рабочей области, прежде чем переходить к дальнейшим шагам в этом разделе.
Реестр контейнеров Azure можно настроить для использования частной конечной точки. Чтобы настроить рабочую область для использования Реестра контейнеров Azure в виртуальной сети, выполните следующие действия.
Чтобы найти имя Реестра контейнеров Azure для рабочей области, используйте один из следующих методов:
ОБЛАСТЬ ПРИМЕНЕНИЯ:
Расширение ml для 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 для рабочей области.Ограничьте доступ к виртуальной сети по инструкции из статьи Частное подключение к Реестру контейнеров Azure . При добавлении виртуальной сети выберите виртуальную сеть и подсеть для ресурсов Машинного обучения Azure.
В ACR для рабочей области нужно разрешить доступ доверенным службам.
создадите вычислительный кластер Машинного обучения Azure; Этот кластер используется для создания образов Docker, когда Реестр контейнеров 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
Совет
Если ACR находится за виртуальной сетью, вы можете дополнительно отключить общий доступ к службе.
Хранилища данных и наборы данных
В следующей таблице перечислены службы, которые необходимо пропустить при проверке.
Служба | Требуется пропустить проверку? |
---|---|
Хранилище BLOB-объектов Azure | Да |
Общая папка Azure | Да |
Azure Data Lake Store 1-го поколения | Нет |
Azure Data Lake Store 2-го поколения | Нет |
База данных 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 для рабочей области, выполните следующие действия.
Обновите экземпляр Application Insights для рабочей области. Инструкции по обновлению см. в статье Миграция на ресурсы Application Insights на основе рабочей области.
Совет
Новые рабочие области по умолчанию создают ресурс Application Insights на основе рабочей области.
Создайте 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. Другие статьи этой серии:
- Общие сведения о виртуальных сетях
- Обеспечение безопасности среды обучения
- Безопасная среда вывода
- Включение функций Студии
- Использование пользовательских DNS-серверов
- Использование брандмауэра
- Руководство. Создание защищенной рабочей области
- Руководство. Создание защищенной рабочей области с помощью шаблона
- Сетевая изоляция платформы API