Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
В этой статье описывается модель привилегий для устаревшего хранилища метаданных Azure Databricks Hive, встроенного в каждую рабочую область Azure Databricks. В нем также описывается, как предоставлять, запрещать и отзывать привилегии для объектов в встроенном хранилище метаданных Hive. Каталог Unity использует другую модель для предоставления разрешений. Смотрите справочник по привилегиям Unity Catalog.
Note
Управление доступом к таблицам для данных, управляемых хранилищем метаданных Hive, является устаревшей моделью управления данными. Databricks рекомендует обновить таблицы, управляемые хранилищем метаданных Hive, до хранилища метаданных каталога Unity. Каталог Unity помогает упростить защиту и управление данными благодаря централизованному управлению и проверке доступа к данным во множестве рабочих областей в вашей учетной записи. Дополнительные сведения о том, как устаревшая модель привилегий отличается от модели привилегий каталога Unity, см. в статье "Работа с устаревшим хранилищем метаданных Hive" вместе с каталогом Unity.
Requirements
- Администратор должен включить и применить управление доступом к таблицам для рабочей области.
- В кластере должн быть включено управление доступом к таблицам.
Note
- Управление доступом к данным всегда включено в Databricks SQL, даже если управление доступом к таблицам не включено для рабочей области.
- Если для рабочей области включен контроль доступа к таблицам и вы уже указали списки управления доступом (предоставленные и запрещенные привилегии) в рабочей области, эти списки управления доступом учитываются в Databricks SQL.
Управление привилегиями для объектов в хранилище метаданных Hive
Привилегии для объектов данных, управляемых хранилищем метаданных Hive, могут предоставляться администратором рабочей области или владельцем объекта. Вы можете управлять привилегиями для объектов хранилища метаданных Hive с помощью команд SQL.
Для управления привилегиями в SQL используется GRANT, REVOKE, DENY, MSCKи инструкции SHOW GRANTS в записной книжке или редакторе запросов Databricks SQL с помощью синтаксиса:
GRANT privilege_type ON securable_object TO principal
Where:
-
privilege_type— это тип привилегий хранилища метаданных Hive -
securable_object— это защищаемый объект в хранилище метаданных Hive -
principal— это пользователь, служебный субъект (представленный значением 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`
Note
Если управление доступом к таблицам отключено в кластере или хранилище SQL, владельцы не будут зарегистрированы при создании схемы, таблицы или представления. Администратор рабочей области должен назначить владельца объекту с помощью ALTER <object> OWNER TO команды.
Защищаемые объекты в хранилище метаданных Hive
Защищаемые объекты:
CATALOGуправляет доступом ко всему каталогу данных.-
SCHEMAуправляет доступом к схеме.-
TABLEуправляет доступом к управляемой или внешней таблице. -
VIEW: управляет доступом к представлениям SQL. -
FUNCTIONуправляет доступом к именованной функции.
-
-
ANONYMOUS FUNCTIONуправляет доступом к анонимным или временным функциям.Note
Объекты
ANONYMOUS FUNCTIONне поддерживаются в SQL Databricks.ANY FILEуправляет доступом к базовой файловой системе.Предупреждение
Пользователи, которым предоставлен доступ к
ANY FILE, могут обойти ограничения, накладываемые на каталог, схемы, таблицы и представления, путем непосредственного чтения из файловой системы.
Note
Привилегии в глобальных и локальных временных представлениях не поддерживаются. Локальные временные представления видны только в рамках одного сеанса, а представления, созданные в схеме global_temp, видны всем пользователям, которые совместно используют кластер или хранилище SQL. Однако применяются привилегии к базовым таблицам и представлениям, на которые ссылаются все временные представления.
Привилегии, которые можно предоставить в объектах хранилища метаданных Hive
-
SELECTпредоставляет доступ на чтение объекта. -
CREATEпозволяет создавать объект (например, таблицу в схеме). -
MODIFYдает возможность добавлять данные в объект, удалять их и изменять в нем. -
USAGEне дает никаких возможностей, но является дополнительным требованием для выполнения каких-либо действий с объектом схемы. -
READ_METADATAпозволяет просматривать объект и его метаданные. -
CREATE_NAMED_FUNCTIONпозволяет создать именованную UDF в существующем каталоге или схеме. -
MODIFY_CLASSPATHдает возможность добавлять файлы в путь к классу Spark. -
ALL PRIVILEGESпредоставляет все права доступа (переводится во все указанные выше привилегии).
Note
Привилегия 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