Привилегии хранилища метаданных Hive и защищаемые объекты (устаревшие версии)
В этой статье описывается модель привилегий для устаревшего хранилища метаданных Azure Databricks Hive, встроенного в каждую рабочую область Azure Databricks. В нем также описывается, как предоставлять, запрещать и отзывать привилегии для объектов в встроенном хранилище метаданных Hive. Каталог Unity использует другую модель для предоставления разрешений. См. статью Защищаемые объекты и привилегии Unity Catalog.
Примечание.
Управление доступом к таблицам для данных, управляемых хранилищем метаданных Hive, является устаревшей моделью управления данными. Databricks рекомендует обновить таблицы, управляемые хранилищем метаданных Hive, до хранилища метаданных каталога Unity. Каталог Unity помогает упростить защиту и управление данными благодаря централизованному управлению и проверке доступа к данным во множестве рабочих областей в вашей учетной записи. Дополнительные сведения о том, как устаревшая модель привилегий отличается от модели привилегий каталога Unity, см. в статье "Работа с каталогом Unity" и устаревшим хранилищем метаданных Hive.
Требования
- Администратор должен включить и применить управление доступом к таблицам для рабочей области.
- В кластере должн быть включено управление доступом к таблицам.
Примечание.
- Управление доступом к данным всегда включено в Databricks SQL, даже если управление доступом к таблицам не включено для рабочей области.
- Если для рабочей области включен контроль доступа к таблицам и вы уже указали списки управления доступом (предоставленные и запрещенные привилегии) в рабочей области, эти списки управления доступом учитываются в Databricks SQL.
Управление привилегиями для объектов в хранилище метаданных Hive
Привилегии для объектов данных, управляемых хранилищем метаданных Hive, могут предоставляться администратором рабочей области или владельцем объекта. Вы можете управлять привилегиями для объектов хранилища метаданных Hive с помощью команд SQL.
Для управления привилегиями в SQL используйте инструкции GRANT, REVOKE, DENY, MSCK и SHOW GRANT в записной книжке или редакторе запросов Databricks SQL с помощью синтаксиса:
GRANT privilege_type ON securable_object TO principal
Где:
privilege_type
— это тип привилегий хранилища метаданных Hivesecurable_object
— это защищаемый объект в хранилище метаданных Hiveprincipal
— пользователь, субъект-служба (представленный значением applicationId) или группа. Необходимо заключать пользователей, субъектов-служб и имена групп со специальными символами в обратные символы (` `
). См. раздел "Субъект".
Чтобы предоставить права всем пользователям в рабочей области, предоставьте группе права users
. Например:
GRANT SELECT ON TABLE <schema-name>.<table-name> TO users
Дополнительные сведения об управлении привилегиями для объектов в хранилище метаданных Hive с помощью команд SQL см. в разделе "Привилегии" и защищаемые объекты в хранилище метаданных Hive.
Вы также можете управлять доступом к таблицам в полностью автоматизированной настройке с помощью поставщика Databricks Terraform и databricks_sql_permissions.
Владелец объекта
Если управление доступом к таблице включено в кластере или хранилище SQL, пользователь, создающий схему, таблицу, представление или функцию, становится ее владельцем. Владельцу предоставляются все привилегии, и он может предоставлять привилегии другим пользователям.
Группы могут владеть объектами. В этом случае все участники этой группы считаются владельцами.
Владелец объекта или администратора рабочей области может передать владение объектом с помощью следующей команды:
ALTER <object> OWNER TO `<user-name>@<user-domain>.com`
Примечание.
Если управление доступом к таблицам отключено в кластере или хранилище SQL, владельцы не будут зарегистрированы при создании схемы, таблицы или представления. Администратор рабочей области должен назначить владельца объекту с помощью ALTER <object> OWNER TO
команды.
Защищаемые объекты в хранилище метаданных Hive
Защищаемые объекты:
CATALOG
управляет доступом ко всему каталогу данных.SCHEMA
управляет доступом к схеме.TABLE
управляет доступом к управляемой или внешней таблице.VIEW
: управляет доступом к представлениям SQL.FUNCTION
управляет доступом к именованной функции.
ANONYMOUS FUNCTION
управляет доступом к анонимным или временным функциям.Примечание.
Объекты
ANONYMOUS FUNCTION
не поддерживаются в SQL Databricks.ANY FILE
управляет доступом к базовой файловой системе.Предупреждение
Пользователи, которым предоставлен доступ к
ANY FILE
, могут обойти ограничения, накладываемые на каталог, схемы, таблицы и представления, путем непосредственного чтения из файловой системы.
Примечание.
Привилегии в глобальных и локальных временных представлениях не поддерживаются. Локальные временные представления видны только в рамках одного сеанса, а представления, созданные в схеме global_temp
, видны всем пользователям, которые совместно используют кластер или хранилище SQL. Однако применяются привилегии к базовым таблицам и представлениям, на которые ссылаются все временные представления.
Привилегии, которые можно предоставить в объектах хранилища метаданных Hive
SELECT
предоставляет доступ на чтение объекта.CREATE
позволяет создавать объект (например, таблицу в схеме).MODIFY
дает возможность добавлять данные в объект, удалять их и изменять в нем.USAGE
не дает никаких возможностей, но является дополнительным требованием для выполнения каких-либо действий с объектом схемы.READ_METADATA
позволяет просматривать объект и его метаданные.CREATE_NAMED_FUNCTION
позволяет создать именованную UDF в существующем каталоге или схеме.MODIFY_CLASSPATH
дает возможность добавлять файлы в путь к классу Spark.ALL PRIVILEGES
предоставляет все права доступа (переводится во все указанные выше привилегии).
Примечание.
Привилегия MODIFY_CLASSPATH
не поддерживаются в SQL Databricks.
Привилегия USAGE
Чтобы выполнить действие для объекта схемы в хранилище метаданных Hive, пользователь должен иметь USAGE
привилегии на этой схеме в дополнение к привилегии для выполнения этого действия. Любое из следующих требований удовлетворяет USAGE
требованиям:
- Быть администратором рабочей области
- иметь привилегию
USAGE
для схемы или находиться в группе, имеющей привилегиюUSAGE
для схемы; - иметь привилегию
USAGE
дляCATALOG
или быть в группе, имеющей привилегиюUSAGE
; - быть владельцем схемы или находиться в группе, которой принадлежит схема.
Даже владелец объекта в схеме должен обладать привилегией USAGE
, чтобы использовать его.
Иерархия привилегий
Если управление доступом к таблицам включено в рабочей области и на всех кластерах, объекты SQL в Azure Databricks являются иерархическими, а привилегии наследуются вниз. Это означает, что предоставление или отклонение привилегий для объекта CATALOG
автоматически предоставляет или запрещает привилегию для всех схем в каталоге. Аналогичным образом, привилегии, предоставленные для объекта схемы, наследуются всеми объектами в этой схеме. Этот принцип соблюдается для всех защищаемых объектов.
Если вы отклоните привилегии пользователя для таблицы, пользователь не увидит таблицу при получении списка всех таблицы в схеме. Если вы отклоните привилегии пользователя для схемы, пользователь не увидит схему при получении списка всех схем в каталоге.
Функции динамического представления
Azure Databricks включает две пользовательские функции, которые позволяют динамически выражать разрешения на уровне столбцов и строк в тексте определения представления, управляемого хранилищем метаданных Hive.
current_user()
возвращает текущую метку времени.is_member()
: определяет, является ли текущий пользователь членом определенной группы Azure Databricks на уровне рабочей области.
Следующий пример объединяет обе функции, чтобы определить, имеет ли пользователь соответствующее членство в группе:
-- Return: true if the user is a member and false if they are not
SELECT
current_user as user,
-- Check to see if the current user is a member of the "Managers" group.
is_member("Managers") as admin
Разрешения на уровне столбцов
Динамические представления можно использовать для ограничения столбцов определенной группы или пользователя. Рассмотрим следующий пример, в котором только пользователи, входящие в группу auditors
, могут просматривать адреса электронной почты из таблицы sales_raw
. Во время анализа Spark заменяет инструкцию CASE
либо литералом 'REDACTED'
, либо столбцом email
. Такое поведение позволяет выполнять все обычные оптимизации производительности, предоставляемые Spark.
-- Alias the field 'email' to itself (as 'email') to prevent the
-- permission logic from showing up directly in the column name results.
CREATE VIEW sales_redacted AS
SELECT
user_id,
CASE WHEN
is_group_member('auditors') THEN email
ELSE 'REDACTED'
END AS email,
country,
product,
total
FROM sales_raw
Разрешения уровня строк
С помощью динамического представления можно указать разрешения на уровне строк или полей. Рассмотрим следующий пример, в котором только пользователи, входящие в группу managers
, могут видеть суммы транзакций (столбец total
), превышающие 1 000 000,00 $:
CREATE VIEW sales_redacted AS
SELECT
user_id,
country,
product,
total
FROM sales_raw
WHERE
CASE
WHEN is_group_member('managers') THEN TRUE
ELSE total <= 1000000
END;
Маскирование данных
Как показано в предыдущих примерах, можно реализовать маскирование на уровне столбцов, чтобы пользователи не могли видеть определенные данные столбцов, если они не находятся в нужной группе. Так как эти представления являются стандартными представлениями SQL Spark, можно выполнять более сложные типы маскирования с более сложными выражениями SQL. В следующем примере всем пользователям разрешается выполнять анализ доменов электронной почты, но при этом члены группы auditors
могут видеть полные адреса электронной почты пользователей.
-- The regexp_extract function takes an email address such as
-- user.x.lastname@example.com and extracts 'example', allowing
-- analysts to query the domain name
CREATE VIEW sales_redacted AS
SELECT
user_id,
region,
CASE
WHEN is_group_member('auditors') THEN email
ELSE regexp_extract(email, '^.*@(.*)$', 1)
END
FROM sales_raw