Библиотеки allowlist и скрипты инициализации для вычислений с стандартным режимом доступа (ранее режим общего доступа)

В Databricks Runtime 13.3 LTS и более поздних версиях allowlist в каталоге Unity контролируется, какие библиотеки и скрипты инициализации могут выполняться в стандартном режиме доступа. Это позволяет пользователям использовать эти артефакты для вычислений, настроенных в стандартном режиме доступа.

По умолчанию список разрешений пуст. Вы не можете отключить эту функцию. Чтобы изменить список разрешений, необходимо иметь привилегии MANAGE ALLOWLIST . См. раздел MANAGE ALLOWLIST.

Вы можете добавить каталог или файл в список разрешений, даже если он еще не создан. См . статью "Работа с файлами в томах каталога Unity".

Внимание

Библиотеки, используемые как драйверы JDBC или пользовательские источники данных Spark на стандартных вычислительных ресурсах с поддержкой Unity Catalog, требуют ANY FILE разрешений.

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

Риски безопасности и эксплуатации

Понимание последствий безопасности разрешенных списков крайне важно для поддержания изоляции кластера и защиты данных в стандартном режиме доступа. Правильное использование списка разрешений запрещает пользователям добавлять произвольные библиотеки и скрипты инициализации. Это снижает вероятность проблем безопасности, нестабильности кластера и другого непредсказуемого поведения.

Будьте внимательны при определении, кто получает MANAGE ALLOWLIST привилегии. Пользователи с MANAGE ALLOWLIST привилегиями могут добавлять любой путь или координату Maven в список разрешенных, что позволяет эффективно контролировать, какой код может выполняться в стандартном режиме доступа на вычислительном устройстве.

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

Databricks рекомендует использовать следующие рекомендации по управлению списком разрешений:

  • Предоставьте MANAGE ALLOWLIST права только администраторам хранилища метаданных и администраторам доверенной платформы. Для других пользователей предоставьте MANAGE ALLOWLIST только на временной основе при необходимости.
  • Регулярно просматривайте и проверяйте дополнения списка разрешений.
  • Используйте определенные пути и координаты Maven, а не широкие шаблоны.
  • Настройте расположения хранилища для разрешенных артефактов с разрешениями только для чтения.
  • Реализуйте формальный процесс утверждения для добавления списка разрешений в рабочих средах.
  • Протестируйте разрешенные библиотеки и скрипты инициализации в средах, отличных от рабочей среды, прежде чем добавлять их в рабочие списки разрешений.

Добавление элементов в список разрешений

Элементы можно добавить в allowlist с помощью обозревателя каталога или REST API.

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

  1. В рабочей области Azure Databricks щелкните значок данных.Каталог.
  2. Щелкните значок шестеренки..
  3. Щелкните имя хранилища метаданных, чтобы открыть сведения о хранилище метаданных и пользовательский интерфейс разрешений.
  4. Выберите допустимые JAR-файлы/команды инициализации.
  5. Нажмите кнопку Добавить.

Внимание

Этот параметр отображается только для пользователей с MANAGE ALLOWLIST привилегиями в хранилище метаданных. Если вы не можете получить доступ к пользовательскому интерфейсу списка разрешений, обратитесь к администратору хранилища метаданных за помощью в библиотеках разрешенных списков и скриптах инициализации.

Добавление скрипта init в список разрешений

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

  1. Для Тип выберите "Init Script".
  2. Для Тип источника выберите Том или протокол хранилища объектов.
  3. Укажите исходный путь для добавления в список разрешений. См. перечень правил на путях в списке разрешённых..

Добавление JAR-файла в список разрешений

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

  1. Для типа выберите JAR.
  2. Для Тип источника выберите Том или протокол хранилища объектов.
  3. Укажите исходный путь для добавления в список разрешений. См. перечень правил на путях в списке разрешённых..

Добавление координат Maven в список разрешений

Внимание

Перед добавлением координат Maven в список разрешений необходимо иметь разрешения CAN ATTACH TO и CAN MANAGE для вычислительных ресурсов, в которых требуется установить библиотеку. См. статью "Разрешения вычислений".

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

  1. Для типа выберите Maven.
  2. Для исходного типа выберите координаты.
  3. Введите координаты в следующем формате: groudId:artifactId:version
    • Вы можете включить все версии библиотеки, указав следующий формат: groudId:artifactId
    • Все артефакты можно включить в группу, указав следующий формат: groupId

Как разрешения на пути применяются в списке разрешений?

Список разрешений можно использовать для предоставления доступа к JAR или скриптам init, хранящимся в томах каталога Unity и хранилище объектов. Если вы добавляете путь к каталогу, а не файлу, разрешения списка разрешений распространяются на содержащиеся файлы и каталоги.

Сопоставление префиксов используется для всех артефактов, хранящихся в томах каталога Unity или хранилище объектов. Чтобы предотвратить сопоставление префиксов на определенном уровне каталога, добавьте косую черту (/). Например, /Volumes/prod-libraries/ не будет выполнять сопоставление префиксов для файлов, имеющих префикс prod-libraries. Вместо этого все файлы и каталоги в /Volumes/prod-libraries/ списке разрешений добавляются.

Разрешения можно определить на следующих уровнях:

  1. Базовый путь для дискового тома или контейнера хранилища.
  2. Каталог, вложенный на любой глубине от базового пути.
  3. Один файл.

Добавление пути к списку разрешений означает, что путь можно использовать только для сценариев инициализации или установки JAR-файлов. Azure Databricks по-прежнему проверяет разрешения на доступ к данным в указанном расположении.

Субъект, используемый, должен иметь READ VOLUME разрешения на указанный том. См. РАЗДЕЛ ОБЪЕМА ЧТЕНИЯ.

В выделенном режиме доступа (ранее однопользовательском режиме доступа) используется удостоверение назначенного участника (пользователя или группы).

В стандартном режиме доступа:

  • Библиотеки используют удостоверение установщика библиотеки.
  • Скрипты init используют удостоверение владельца кластера.

Примечание.

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

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

Databricks рекомендует использовать учетные записи служб Microsoft Entra ID для управления доступом к JAR-файлам или скриптам инициализации, хранящимся в Azure Data Lake Storage. Чтобы завершить настройку, используйте следующую связанную документацию:

  1. Создайте учетную запись службы с разрешениями на чтение и просмотр списка для ваших нужных больших двоичных объектов. См. статью "Подключение к Azure Data Lake Storage и хранилищу BLOB-объектов".

  2. Сохраните учетные данные с помощью секретов. См. раздел "Управление секретами".

  3. Задайте свойства в конфигурации Spark и переменных среды при создании кластера, как показано в следующем примере:

    Конфигурация Spark:

    spark.hadoop.fs.azure.account.auth.type.<storage-account>.dfs.core.windows.net OAuth
    spark.hadoop.fs.azure.account.oauth.provider.type.<storage-account>.dfs.core.windows.net org.apache.hadoop.fs.azurebfs.oauth2.ClientCredsTokenProvider
    spark.hadoop.fs.azure.account.oauth2.client.id.<storage-account>.dfs.core.windows.net <application-id>
    spark.hadoop.fs.azure.account.oauth2.client.secret.<storage-account>.dfs.core.windows.net {{secrets/<secret-scope>/<service-credential-key>}}
    spark.hadoop.fs.azure.account.oauth2.client.endpoint.<storage-account>.dfs.core.windows.net https://login.microsoftonline.com/<tenant-id>/oauth2/token
    

    Переменные среды:

    SERVICE_CREDENTIAL={{secrets/<secret-scope>/<service-credential-key>}}
    
  4. (Необязательно) Рефакторинг скриптов инициализации с помощью azcopy или Azure CLI.

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

Примечание.

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