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


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

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

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

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

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

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

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

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

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

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

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

  • стандартный views

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

  • стриминг tables

  • Материализованные views

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

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

  • Views, основанные на tables, что пользователь не имеет привилегии SELECT
  • Динамическая views
  • Tables с определенными фильтрами строк или масками column
  • Материализованные views и потоковые tables

На следующей схеме пользователь включен SELECTtable_1view_2и table_w_rlsимеет примененные фильтры строк. Пользователь не имеет на SELECTtable_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.

SparkUI с узлом RemoteSparkConnectScan

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

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

Ограничения

  • Нет поддержки операций записи или refreshtable в tables, которые имеют фильтры строк или применены маски column.

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

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

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