Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
На этой странице объясняется, как настроить политики сети и управлять ими для управления исходящими сетевыми подключениями из бессерверных рабочих нагрузок в Azure Databricks.
Для контроля входящего трафика см. раздел "Контроль входящего трафика на основе контекста".
Требования
- Рабочая область Azure Databricks должна находиться на уровне "Премиум".
- Разрешения для управления политиками сети ограничены администраторами учетных записей.
Доступ к политикам сети
Чтобы создать, просмотреть и обновить политики сети в учетной записи, выполните приведенные ниже действия.
- В консоли учетной записи щелкните "Безопасность".
- Перейдите на вкладку "Сеть ".
- В разделе "Политики" щелкните элемент Контекстное управление входом и выходом.
Создание политики сети
Нажмите кнопку "Создать новую политику сети".
Введите имя политики.
Перейдите на вкладку "Исходящий трафик ".
Сведения о настройке правил входящего трафика см. в разделе "Настройка правил входящего трафика".
Выберите режим доступа к сети:
- Разрешить доступ ко всем назначениям: неограниченный исходящий доступ к Интернету. Если выбрать полный доступ, исходящий интернет-доступ остается неограниченным.
- Ограниченный доступ к определенным назначениям: исходящий доступ ограничен указанными назначениями.
Настройка политик сети
В следующих шагах описаны необязательные параметры для режима ограниченного доступа.
Установка эгрессных правил
Перед настройкой правил исходящего трафика обратите внимание:
- При использовании контейнера S3 в хранилище метаданных необходимо использовать REST API для явного добавления контейнера в список разрешений исходящего трафика для успешного доступа.
- Максимальное количество поддерживаемых пунктов назначения — 2500.
- Число полных доменных имен, которые можно добавить в список разрешенных доменов, ограничено 100 на одну политику.
- Домены, добавленные в качестве записей Приватный канал для балансировщика нагрузки, неявно включены в списки разрешенных в сетевых политиках. При удалении домена или частной конечной точки может потребоваться до 24 часов, чтобы сетевые политики полностью применили изменения. См. статью "Настройка частного подключения к ресурсам в виртуальной сети".
- Хранилища Delta Sharing по умолчанию разрешены в политиках сети.
Примечание.
Неявное разрешение для подключений каталога Unity не рекомендуется. Для тех учетных записей, содержащих рабочие области, которые использовали разрешённый список до его отмены, этот режим будет продолжать действовать в течение ограниченного переходного периода.
Чтобы предоставить бессерверный вычислительный доступ к дополнительным доменам, нажмите кнопку "Добавить назначение " над списком разрешенных доменов .
Фильтр FQDN позволяет получить доступ ко всем доменам, которые используют один и тот же IP-адрес.
Примечание.
Модели, обслуживающие выделенные конечные точки с пропускной способностью, не поддерживают гранулированную фильтрацию полного доменного имени. При установке ограниченного сетевого доступа для этих конечных точек блокируется доступ к Интернету.
Чтобы предоставить рабочей области доступ к дополнительным учетным записям хранения Azure, нажмите кнопку Add destination над списком Allowed storage destinations.
Примечание.
Прямой доступ к облачным службам хранения из контейнеров пользовательского кода, таких как REPL или ОПФ, по умолчанию не разрешён. Чтобы включить этот доступ, добавьте полное доменное имя ресурса хранилища в разделе "Разрешенные домены " в политике. Добавление только базового домена ресурса хранилища может непреднамеренно предоставить доступ ко всем ресурсам хранилища в регионе.
Применение политик
Режим сухого запуска позволяет протестировать конфигурацию политики и отслеживать исходящие подключения без нарушения доступа к ресурсам. Если режим сухого запуска включен, запросы, которые нарушают политику, регистрируются, но не блокируются. Вы можете выбрать следующие параметры:
Databricks SQL: хранилища Databricks SQL работают в режиме сухого выполнения.
Обслуживание моделей ИИ: конечные точки обслуживания моделей работают в режиме тестового запуска.
All products: все службы Azure Databricks работают в режиме пробного запуска, отменяя все другие варианты выбора.
Обновление политики по умолчанию
Каждая учетная запись Azure Databricks включает политику default. Политика по умолчанию связана со всеми рабочими областями без явного назначения политики сети, включая только что созданные рабочие области. Эту политику можно изменить, но ее нельзя удалить.
Стандартные политики применяются только к рабочим пространствам не ниже уровня "Премиум".
Связывание политики сети с рабочими областями
Если вы обновили политику по умолчанию с дополнительными конфигурациями, они автоматически применяются к рабочим областям, у которых нет существующей сетевой политики.
Рабочая область должна находиться на уровне "Премиум".
Чтобы связать рабочую область с другой политикой, сделайте следующее:
- Выберите рабочую область.
- В разделе "Политика сети" нажмите кнопку "Обновить сетевую политику".
- Выберите нужную сетевую политику из списка.
- Нажмите кнопку "Применить политику".
Применение изменений политики сети
Большинство обновлений конфигурации сети автоматически распространяется на бессерверные вычисления через десять минут. Сюда входит следующее:
- Добавление нового внешнего местоположения или подключения в Unity Catalog.
- Присоединение рабочей области к другому хранилищу метаданных.
- Изменение разрешенного хранилища или назначения для интернета.
Примечание.
При изменении параметра доступа к Интернету или режима сухого запуска необходимо перезапустить вычислительные ресурсы.
Перезапуск или повторное развертывание бессерверных рабочих нагрузок
Необходимо обновить только при переключении режима доступа к Интернету или при обновлении режима сухого запуска.
Чтобы определить соответствующую процедуру перезапуска, ознакомьтесь со следующим списком по продукту:
- Служба машинного обучения Databricks: повторно разверните конечную точку обслуживания машинного обучения. См. статью "Создание пользовательских конечных точек обслуживания моделей"
- Конвейеры: остановите и перезапустите запущенные конвейеры Lakeflow Spark Декларативные конвейеры. См. статью "Запуск обновления конвейера".
- Бессерверное хранилище SQL: остановка и перезапуск хранилища SQL. См. раздел "Управление хранилищем SQL".
- Задания Lakeflow. Изменения политики сети автоматически применяются при запуске нового задания или перезапуске существующего задания.
-
Записные книжки:
- Если ваш блокнот не взаимодействует с Spark, можно завершить вычисления, а затем снова подключить бессерверные вычисления для обновления сетевой политики.
- Если записная книжка взаимодействует с Spark, бессерверные ресурсы обновляются и автоматически обнаруживают изменения. Большинство изменений будут обновлены через десять минут, но переключение режимов доступа к Интернету, обновление режима сухого запуска или изменение между подключенными политиками с различными типами принудительного применения может занять до 24 часов. Чтобы ускорить обновление для этих конкретных типов изменений, отключите все связанные ноутбуки и задания.
Декларативные зависимости пользовательского интерфейса пакета автоматизации
При использовании режима ограниченного доступа с элементом управления бессерверным исходящим трафиком функции пользовательского интерфейса декларативного пакета автоматизации требуют доступа к определенным внешним доменам. Если исходящий доступ полностью ограничен, пользователи могут видеть ошибки в интерфейсе рабочей области при работе с декларативными пакетами автоматизации.
Чтобы сохранить функции пользовательского интерфейса пакета декларативной автоматизации, работающие с ограниченными политиками сети, добавьте эти домены в разрешенные домены в политике:
- github.com
- objects.githubusercontent.com
- release-assets.githubusercontent.com
- checkpoint-api.hashicorp.com
- releases.hashicorp.com
- registry.terraform.io
Проверка применения политики сети
Вы можете проверить правильность применения политики сети, пытаясь получить доступ к ограниченным ресурсам из разных бессерверных рабочих нагрузок. Процесс проверки зависит от бессерверного продукта.
Валидация с использованием декларативных конвейеров Lakeflow Spark
- Создайте записную книжку Python. Вы можете использовать пример записной книжки, предоставленной в руководстве по Python для декларативных конвейеров Lakeflow Spark.
- Создание конвейера:
- В рабочей области щелкните на
Задания и конвейеры на боковой панели.
- Нажмите кнопку "Создать", а затем конвейер ETL.
- Настройте конвейер со следующими параметрами:
- Режим конвейера: бессерверный
- Исходный код: выберите созданную записную книжку.
- Параметры хранилища: каталог Unity. Выберите нужный каталог и схему.
- Нажмите кнопку "Создать".
- В рабочей области щелкните на
- Запустите конвейер.
- На странице конвейера нажмите кнопку "Пуск".
- Дождитесь завершения конвейера.
- Проверка результатов
- Надежное назначение: поток данных успешно запускается и записывает данные в назначение.
- Ненадежный адрес назначения: конвейер завершается сбоем из-за ошибок, указывающих на блокировку сетевого доступа.
Проверка с помощью Databricks SQL
Создайте хранилище SQL.
Запустите тестовый запрос в редакторе SQL, который пытается получить доступ к ресурсу, управляемому политикой сети.
Проверьте результаты:
- Надежное назначение: запрос успешно выполнен.
- Ненадежный адрес: запрос завершается ошибкой доступа к сети.
Чтобы подключиться к сети из UDF с помощью стандартной библиотеки Python, выполните следующее определение UDF:
CREATE OR REPLACE TEMPORARY FUNCTION ping_google(value DOUBLE) RETURNS STRING LANGUAGE python AS $$ import requests url = "https://www.google.com" response = requests.get(url, timeout=5) if response.status_code == 200: return "UDF has network!" else: return "UDF has no network!" $$;
Проверка с помощью службы моделей
Перед тем как начать
При создании конечной точки обслуживания модели образ контейнера создается для обслуживания модели. Правила сети применяются на этом этапе сборки. При использовании модели, обслуживающей политики сети, следует учитывать следующее:
Dependency access: Любые внешние зависимости сборки, такие как пакеты Python из PyPI и conda-forge, базовые образы контейнеров или файлы из внешних URL-адресов, указанных в среде модели или контексте Docker, должны разрешаться сетевой политикой.
- Например, если для модели требуется определенная версия scikit-learn, которая должна быть загружена во время сборки, политика сети должна разрешить доступ к репозиторию, на котором размещен пакет.
Сбои сборки: Если политика сети блокирует доступ к необходимым зависимостям, сборка контейнера службы модели завершится ошибкой. Это уменьшает вероятность успешного развертывания обслуживающей конечной точки и может привести к сбоям в хранении или функционировании.
Устранение неполадок с отказами: Отказы в доступе к сети во время этапа сборки регистрируются. Эти записи имеют
network_source_typeполе со значениемML Build. Эта информация важна для идентификации определенных заблокированных ресурсов, которые необходимо добавить в политику сети, чтобы обеспечить успешное завершение сборки.
Проверка сетевого доступа во время выполнения
В следующих шагах показано, как проверить сетевую политику для развернутой модели во время выполнения, специально для попыток доступа к внешним ресурсам во время вывода. Предполагается, что контейнер для обслуживания модели успешно создан, что означает, что все зависимости на этапе сборки были разрешены в политике сети.
Создание тестовой модели
В записной книжке Python создайте модель, которая пытается получить доступ к общедоступному интернет-ресурсу в момент проведения вывода, например, сделать запрос API или скачать файл.
Запустите эту записную книжку, чтобы создать модель в тестовой рабочей области. Например:
import mlflow import mlflow.pyfunc import mlflow.sklearn import requests class DummyModel(mlflow.pyfunc.PythonModel): def load_context(self, context): # This method is called when the model is loaded by the serving environment. # No network access here in this example, but could be a place for it. pass def predict(self, _, model_input): # This method is called at inference time. first_row = model_input.iloc[0] try: # Attempting network access during prediction response = requests.get(first_row['host']) except requests.exceptions.RequestException as e: # Return the error details as text return f"Error: An error occurred - {e}" return [response.status_code] with mlflow.start_run(run_name='internet-access-model'): wrappedModel = DummyModel() # When this model is deployed to a serving endpoint, # the environment will be built. If this environment # itself (e.g., specified conda_env or python_env) # requires packages from the internet, the build-time serverless network policy applies. mlflow.pyfunc.log_model( artifact_path="internet_access_ml_model", python_model=wrappedModel, registered_model_name="internet-http-access" )
Создание конечной точки обслуживания
В меню навигации рабочей области выберите AI/ML.
Перейдите на вкладку "Обслуживание ".
Нажмите кнопку "Создать конечную точку обслуживания".
Настройте конечную точку со следующими параметрами:
- Имя конечной точки обслуживания: укажите описательное имя.
- Сведения о сущностях: выбор модели реестра моделей.
-
Модель. Выберите модель, созданную на предыдущем шаге (
internet-http-access).
Нажмите кнопку "Подтвердить". На этом этапе начинается процесс сборки контейнера для обслуживания модели. Сетевые политики для
ML Buildбудут применяться. Если сборка завершается ошибкой из-за заблокированного сетевого доступа для зависимостей, конечная точка не будет готова.Подождите, пока конечная точка обслуживания достигнет состояния готовности. Если не удается подготовиться, проверьте журналы отказа для
network_source_type: ML Buildзаписей.
Запрос конечной точки.
Используйте параметр "Конечная точка запроса " на странице конечной точки обслуживания для отправки тестового запроса.
{ "dataframe_records": [{ "host": "[https://www.google.com](https://www.google.com)" }] }
Проверьте результат доступа во время выполнения:
-
Доступ к Интернету включен во время выполнения: запрос успешно выполняется и возвращает код состояния, например
200. -
Доступ к Интернету ограничен во время выполнения: запрос завершается ошибкой доступа к сети, например сообщение об ошибке из
try-exceptблока в коде модели, указывающее время ожидания подключения или сбой разрешения узла.
-
Доступ к Интернету включен во время выполнения: запрос успешно выполняется и возвращает код состояния, например
Обновление политики сети
Вы можете обновить политику сети в любое время после ее создания. Чтобы обновить сетевую политику, выполните следующие действия.
- На странице сведений о политике сети в консоли учетных записей измените политику:
- Измените режим доступа к сети.
- Включите или отключите режим сухого запуска для определенных служб.
- Добавьте или удалите FQDN или места хранения.
- Нажмите кнопку "Обновить".
- Чтобы убедиться, что обновления применяются к существующим рабочим нагрузкам, см. в статье "Применение изменений политики сети ".
Проверка журналов отказа
Журналы отказов хранятся в таблице system.access.outbound_network в каталоге Unity. Эти журналы отслеживают, когда исходящие сетевые запросы запрещены. Чтобы получить доступ к журналам отказа, убедитесь, что схема доступа включена в хранилище метаданных каталога Unity. См. Включите системные таблицы.
Используйте SQL-запрос, например приведенный ниже, для просмотра событий отказа. Если включены журналы сухого выполнения, запрос возвращает как журналы отказа, так и журналы сухого выполнения, которые можно отличить с помощью столбца access_type. Журналы отказа имеют значение DROP, а журналы в тестовом режиме имеют значение DRY_RUN_DENIAL.
В следующем примере извлекаются журналы за последние 2 часа:
SELECT *
FROM system.access.outbound_network
WHERE event_time >= CURRENT_TIMESTAMP() - INTERVAL 2 HOUR
ORDER BY event_time DESC;
Для режима сухого выполнения и внешних генеративных моделей искусственного интеллекта верно следующее:
- Если ваша сетевая политика блокирует доступ к необходимым зависимостям, сначала проверьте журналы отказа в
system.access.outbound_network. Кроме того, журналы сборки для контейнера обслуживания модели могут предоставить полезные сведения о том, какие домены были заблокированы. - Если сборка контейнера службы модели завершается сбоем, проверьте журналы отказа, чтобы определить, какие домены были заблокированы
system.access.outbound_network. - Контроль соблюдения доступа к внешней модели через Mosaic AI Serving продолжается даже в тестовом режиме.
Примечание.
Между временем доступа и появлением журналов отказов может возникнуть неучитаемая задержка.
Ограничения
-
Размер отправки артефактов: при использовании внутренней файловой системы Databricks MLflow с форматом
dbfs:/databricks/mlflow-tracking/<experiment_id>/<run_id>/artifacts/<artifactPath>загрузка артефактов ограничена 5 ГБ для APIlog_artifact,log_artifactsиlog_model. - Обслуживание моделей: управление исходящими данными не применяется при создании образов для обслуживания моделей.
- Доставка журналов отказов для краткосрочных задач сборки мусора (GC): журналы отказов от GC задач продолжительностью менее 120 секунд могут не быть доставлены до завершения работы узла из-за задержек в ведении журнала. Хотя доступ по-прежнему применяется, соответствующая запись журнала может быть отсутствует.
- Сетевое подключение для определяемых пользователем функций Databricks SQL: чтобы включить сетевой доступ в Databricks SQL, обратитесь к группе учетной записи Databricks.
- Ведение журнала событий конвейера: декларативные перехватчики конвейеров Lakeflow Spark, предназначенные для другой рабочей области, не регистрируются. Это относится к Eventhooks, настроенным как для рабочих областей в разных регионах, так и для рабочих областей в одном регионе.
- Изменения привязки рабочей области каталога Unity: изменения привязок могут занять до 24 часов, чтобы вступить в силу. Чтобы ускорить этот процесс, добавьте контейнер хранилища в политику сети. См. связывание каталога рабочей области.
- Доступ к сети в облаках: рабочие области Azure, использующие хранилища S3 для использования внешних расположений в каталоге Unity, в настоящее время не разрешены бессерверными сетевыми политиками.
Дальнейшие шаги
- Настройте управление входом на основе контекста: определите политики входящего доступа на основе идентификации, типа запроса и сетевого источника, чтобы обеспечить безопасность доступа к рабочей области. См. Контекстное управление доступом.
- Управление правилами частной конечной точки: управляйте сетевым трафиком и из частных конечных точек, определяя определенные правила, разрешающие или запрещающие подключения для повышения безопасности. См. Управление правилами частной конечной точки.
- Настройте брандмауэр для бессерверного доступа к вычислительным ресурсам: реализуйте брандмауэр для ограничения и защиты входящих и исходящих сетевых подключений для бессерверных вычислительных сред. См . раздел "Настройка брандмауэра для бессерверного доступа к вычислительным ресурсам (устаревшая версия)".
- Общие сведения о затратах на передачу данных и подключение. Узнайте о затратах при реализации средств управления безопасностью сети и частных подключений для бессерверных рабочих нагрузок. Ознакомьтесь с разделом "Общие сведения о затратах на бессерверные сети Databricks".