Точное управление доступом на выделенных вычислительных ресурсах (ранее однопользовательские вычисления)
В этой статье представлена функция фильтрации данных, которая обеспечивает детализированное управление доступом к запросам, выполняющимся на выделенных вычислительных ресурсах (общего назначения или заданий, настроенных с помощью режима выделенного доступа). Смотрите режимы доступа.
Фильтрация данных выполняется за кулисами с помощью бессерверных вычислений.
Почему некоторые запросы на выделенные вычислительные ресурсы требуют фильтрации данных?
Каталог Unity позволяет управлять доступом к табличным данным на уровне столбца и строки (также известного как точное управление доступом) с помощью следующих функций:
Когда пользователи запрашивают представления, которые исключают данные из ссылочных таблиц или таблиц запросов, которые применяют фильтры и маски, они могут использовать любой из следующих вычислительных ресурсов без ограничений:
- Хранилища SQL
- Стандартные вычисления (прежнее общее вычисление)
Однако если вы используете выделенные вычислительные ресурсы для выполнения таких запросов, вычислительные ресурсы и рабочая область должны соответствовать определенным требованиям:
Выделенный вычислительный ресурс должен находиться в Databricks Runtime 15.4 LTS или более поздней версии.
Рабочая область должна быть включена для бессерверных вычислений для заданий, записных книжек и DLT.
Чтобы убедиться, что регион рабочей области поддерживает бессерверные вычисления, см. сведения о функциях с ограниченной региональной доступностью.
Если выделенный вычислительный ресурс и рабочая область соответствуют этим требованиям, фильтрация данных выполняется автоматически при запросе представления или таблицы, использующего точное управление доступом.
Поддержка материализованных представлений, потоковых таблиц и стандартных представлений
Помимо динамических представлений, фильтров строк и маски столбцов, фильтрация данных также включает запросы к следующим представлениям и таблицам, которые не поддерживаются для выделенных вычислений, работающих под управлением Databricks Runtime 15.3 и ниже:
При выделенных вычислениях, работающих под управлением Databricks Runtime 15.3 и ниже, пользователь, выполняющий запрос в представлении, должен иметь права SELECT
на таблицы и представления, на которые ссылается это представление. Это означает, что нельзя использовать представления для обеспечения точного или детализированного управления доступом. В Databricks Runtime 15.4 с фильтрацией данных пользователь, запрашивающий представление, не нуждается в доступе к указанным таблицам и представлениям.
Как фильтрация данных работает с выделенными вычислительными ресурсами?
Каждый раз, когда запрос обращается к следующим объектам базы данных, выделенный вычислительный ресурс передает запрос на бессерверные вычисления для фильтрации данных:
- Представления, созданные на основе таблиц, где у пользователя нет привилегий
SELECT
- Динамические представления
- Таблицы с определенными фильтрами строк или масками столбцов
- Материализованные представления и потоковые таблицы
В следующей схеме пользователь имеет SELECT
на table_1
, view_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.
Разверните узел оператора RemoteSparkConnectScan, чтобы просмотреть метрики, которые касаются следующих вопросов:
- Сколько времени занимает фильтрация данных? Просмотрите "общее время удаленного выполнения".
- Сколько строк осталось после фильтрации данных? Просмотр результата по строкам
- Сколько данных (в байтах) было возвращено после фильтрации данных? Просмотрите "размер строк выходных данных".
- Сколько файлов данных было исключено благодаря секционированию и которые не нужно было считывать из хранилища? Просмотрите "Файлы, отрезаемые" и "Размер файлов, отрезаемых".
- Сколько файлов данных не удалось сократить и пришлось считывать из хранилища? Просмотрите "Считанные файлы" и "Размер считанных файлов".
- Из файлов, которые должны были быть прочитаны, сколько уже было в кэше? Просмотрите "Размер попаданий в кэш" и "Размер пропусков кэша".
Ограничения
Нет поддержки операций записи или обновления таблиц в таблицах с примененными фильтрами строк или масками столбцов.
В частности, операции DML, такие как
INSERT,
,DELETE
,UPDATE
,REFRESH TABLE
иMERGE
не поддерживаются. Из этих таблиц можно читать только (SELECT
).Самосоединения блокируются по умолчанию при вызове фильтрации данных, но их можно разрешить, установив
spark.databricks.remoteFiltering.blockSelfJoins
значение false для вычислений, в которых выполняются эти команды.Прежде чем включить самостоятельное присоединение к выделенному вычислительному ресурсу, помните, что запрос самосоединения, обрабатываемый функцией фильтрации данных, может возвращать различные моментальные снимки одной удаленной таблицы.
- Нет поддержки для образов Docker.