Точное управление доступом для отдельных пользователей
В этой статье представлена функция фильтрации данных, которая обеспечивает детальное управление доступом к запросам, выполняющимся на вычислительных ресурсах одного пользователя (все назначения или задания, настроенные в режиме доступа с одним пользователем). См . режимы доступа.
Фильтрация данных выполняется за кулисами с помощью бессерверных вычислений.
Почему некоторые запросы к вычислительным ресурсам одного пользователя требуют фильтрации данных?
Unity Catalog позволяет управлять доступом к табличным данным на уровне column и на уровне строк (также известном как детальное управление доступом) с помощью следующих функций:
Когда пользователи выполняют запрос views, исключающий данные из ссылочного tables, или запрос tables, применяющий фильтры и маски, они могут использовать любой из следующих вычислительных ресурсов без ограничений:
- Хранилища SQL
- Общие вычислительные ресурсы
Однако если вы используете однопользовательские вычисления для выполнения таких запросов, вычислительные ресурсы и рабочая область должны соответствовать определенным требованиям:
Вычислительный ресурс одного пользователя должен находиться в Databricks Runtime 15.4 LTS или более поздней версии.
Для рабочей области необходимо включить для поддержки бессерверных вычислений в задачах, записных книжках и Delta Live Tables.
Чтобы убедиться, что регион рабочей области поддерживает бессерверные вычисления, см. сведения о функциях с ограниченной региональной доступностью.
Если вычислительный ресурс и рабочая область для одного пользователя соответствуют этим требованиям, фильтрация данных выполняется автоматически каждый раз, когда вы запрашиваете представление или table, использующие детальное управление доступом.
поддержка материализованных views, потоковой tablesи стандартной views
Помимо динамических views, фильтров строк и масок column, фильтрация данных также позволяет выполнять запросы на следующие views и tables, которые не поддерживаются на однопользовательских вычислениях, работающих под управлением Databricks Runtime 15.3 и ниже:
-
При использовании вычислительных процессов с одним пользователем под управлением Databricks Runtime версии 15.3 или ниже пользователь, выполняющий запрос в представлении, должен иметь
SELECT
на tables и views, на которые ссылается представление, что исключает возможность использования views для обеспечения тонкого управления доступом. В Databricks Runtime 15.4 с фильтрацией данных пользователь, запрашивающий представление, не нуждается в доступе к указанным tables и views.
Как фильтрация данных работает на вычислительных ресурсах одного пользователя?
Каждый раз, когда запрос обращается к следующим объектам базы данных, один пользователь вычислительный ресурс передает запрос на бессерверные вычисления для фильтрации данных:
-
Views, основанные на tables, что пользователь не имеет привилегии
SELECT
- Динамическая views
- Tables с определенными фильтрами строк или масками column
- Материализованные views и потоковые tables
На следующей схеме пользователь включен SELECT
table_1
view_2
и table_w_rls
имеет примененные фильтры строк. Пользователь не имеет на SELECT
table_2
ней ссылки view_2
.
Запрос table_1
полностью обрабатывается одним пользовательским вычислительным ресурсом, так как фильтрация не требуется. Запросы view_2
и table_w_rls
требуют фильтрации данных для возврата данных, к которым у пользователя есть доступ. Эти запросы обрабатываются функцией фильтрации данных на бессерверных вычислениях.
Какие расходы взимается?
Клиентам взимается плата за бессерверные вычислительные ресурсы, используемые для выполнения операций фильтрации данных. Сведения о ценах см. в разделе "Уровни платформы" и "Надстройки".
Вы можете запросить данные о системе выставления счетов table, чтобы узнать, сколько с вас взяли. Например, следующий запрос разбивает затраты на вычисления пользователем:
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, чтобы просмотреть метрики, которые касаются следующих вопросов:
- Сколько времени занимает фильтрация данных? Просмотрите "общее время удаленного выполнения".
- Сколько строк осталось после фильтрации данных? Просмотр выходных данных строк.
- Сколько данных (в байтах) было возвращено после фильтрации данных? Просмотрите "размер выходных данных строк".
- Сколько файлов с данными было прорежено (partition) и не потребовалось считывать из хранилища? Просмотрите "Файлы, отрезаемые" и "Размер файлов, отрезаемых".
- Сколько файлов данных не удалось выполнить и нужно было считывать из хранилища? Просмотр "Файлы считываются" и "Размер файлов считываются".
- Из файлов, которые должны были быть прочитаны, сколько уже было в кэше? Просмотр "Размер попаданий кэша" и "Кэш пропускает размер".
Ограничения
Нет поддержки операций записи или refreshtable в tables, которые имеют фильтры строк или применены маски column.
В частности, операции DML, такие как
INSERT,
DELETE
,UPDATE
REFRESH TABLE
и , неMERGE
поддерживаются. Из этих tablesможно прочитать только (SELECT
).Самосоединения блокируются по умолчанию при вызове фильтрации данных, но их можно разрешить, установив
spark.databricks.remoteFiltering.blockSelfJoins
значение false для вычислений, в которых выполняются эти команды.Прежде чем включить возможность самосоединения на одном вычислительном ресурсе пользователя, помните, что запрос типа self-join, обрабатываемый функцией фильтрации данных, может возвращать разные моментальные снимки одного и того же удаленного table.