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


Точное управление доступом для вычислений с одним пользователем

Внимание

Эта функция предоставляется в режиме общедоступной предварительной версии.

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

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

Почему для некоторых запросов для вычислений с одним пользователем требуется фильтрация данных?

Каталог Unity позволяет управлять доступом к табличным данным на уровне столбца и строки (также известного как точное управление доступом) с помощью следующих функций:

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

  • Хранилища SQL
  • Общие вычислительные ресурсы

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

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

Поддержка материализованных представлений, потоковых таблиц и стандартных представлений

Помимо динамических представлений, фильтров строк и маски столбцов, фильтрация данных также позволяет выполнять запросы к следующим представлениям и таблицам, которые не поддерживаются для вычислений с одним пользователем, работающих под управлением Databricks Runtime 15.3 и ниже:

  • Стандартные представления

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

  • Потоковая передача таблиц

  • Материализованные представления

Как фильтрация данных работает с однопользовательскими вычислениями?

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

  • Представления, созданные на основе таблиц, в которых у пользователя нет SELECT прав
  • Динамические представления
  • Таблицы с определенными фильтрами строк или масками столбцов
  • Материализованные представления и таблицы потоковой передачи

На следующей схеме пользователь включен SELECT table_1view_2и table_w_rlsимеет примененные фильтры строк. Пользователь не имеет на SELECT table_2ней ссылки view_2.

Схема, показывающая, как работает фильтрация данных

Запрос table_1 полностью обрабатывается одним пользователем вычислительным ресурсом, так как фильтрация не требуется. Запросы view_2 и table_w_rls требуют фильтрации данных для возврата данных, к которым у пользователя есть доступ. Эти запросы обрабатываются функцией фильтрации данных на бессерверных вычислениях.

Какие расходы взимается?

Клиентам взимается плата за бессерверные вычислительные ресурсы, используемые для выполнения операций фильтрации данных. Сведения о ценах см. в разделе "Уровни платформы" и "Надстройки".

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

SELECT usage_date,
sku_name,
 identity_metadata.run_as,
SUM(usage_quantity) AS `DBUs consumed by FGAC`
FROM system.billing.usage
WHERE usage_date BETWEEN '2024-08-01' AND '2024-09-01'
 AND billing_origin_product = 'FINE_GRAINED_ACCESS_CONTROL'
GROUP BY 1, 2, 3 ORDER BY 1;

Просмотр производительности запросов при использовании фильтрации данных

Пользовательский интерфейс Spark для вычислений с одним пользователем отображает метрики, которые можно использовать для понимания производительности запросов. Для каждого запроса, выполняемого на вычислительном ресурсе, вкладка SQL/Dataframe отображает представление графа запросов. Если запрос был вовлечен в фильтрацию данных, пользовательский интерфейс отображает узел оператора RemoteSparkConnectScan в нижней части графа. На этом узле отображаются метрики, которые можно использовать для изучения производительности запросов. Просмотр сведений о вычислениях в пользовательском интерфейсе Apache Spark.

SparkUI с узлом RemoteSparkConnectScan

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

  • Сколько времени занимает фильтрация данных? Просмотрите "общее время удаленного выполнения".
  • Сколько строк осталось после фильтрации данных? Просмотр выходных данных строк.
  • Сколько данных (в байтах) было возвращено после фильтрации данных? Просмотрите "размер выходных данных строк".
  • Сколько файлов данных было прорезано секционированием и не должно быть считываться из хранилища? Просмотрите "Файлы, отрезаемые" и "Размер файлов, отрезаемых".
  • Сколько файлов данных не удалось выполнить и нужно было считывать из хранилища? Просмотр "Файлы считываются" и "Размер файлов считываются".
  • Из файлов, которые должны были быть прочитаны, сколько уже было в кэше? Просмотр "Размер попаданий кэша" и "Кэш пропускает размер".

Ограничения

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

  • Нет поддержки операций записи или обновления таблиц в таблицах с примененными фильтрами строк или масками столбцов.

    В частности, операции DML, такие как INSERT, DELETE, UPDATEREFRESH TABLEи , не MERGEподдерживаются. Из этих таблиц можно прочитать только (SELECT).

  • Самосоединения блокируются по умолчанию при вызове фильтрации данных, но их можно разрешить, установив spark.databricks.remoteFiltering.blockSelfJoins значение false для вычислений, в которых выполняются эти команды.

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