Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
На этой странице описывается создание, изменение, просмотр и удаление политик ABAC в каталоге Unity. Общие сведения о концепциях политики см. в основных понятиях для ABAC.
Requirements
Все операции политики (создание, изменение, удаление, отображение, описание) требуют MANAGE на защищаемый объект или владение объектом. Для создания политики также требуется следующее:
- Databricks Runtime 16.4 или более поздней версии или бессерверные вычисления. См. требования к вычислениям.
- Для логики фильтрации или маскирования функция, определяемая пользователем (UDF) в каталоге Unity, которая включена
EXECUTE, или встроенная SQL-функция, определяемая при создании политики. - Управляемые теги, применяемые к целевым объектам. См. теги, управляемые.
Создание политики
Политику можно создать с помощью пользовательского интерфейса обозревателя каталогов, инструкции CREATE POLICY SQL или Azure Databricks REST API, пакетов SDK и Terraform.
Чтобы создать политику, необходимо иметь MANAGE на объекте безопасности, к которому политика присоединена (каталог, схема или таблица), или владеть объектом безопасности, и EXECUTE для UDF, которая реализует логику фильтрации или маскирования.
Обозреватель каталогов
В рабочей области Azure Databricks щелкните
Catalog.
Выберите объект, определяющий область политики, например каталог, схему или таблицу.
Перейдите на вкладку "Политики ".
Щелкните Создать политику.
Заполните раздел идентификации политики . В следующей таблице приводится сводка по каждому полю:
Поле Description Пример Имя Название политики. Должен быть уникальным среди всех политик, определенных в одном защищаемом объекте. hide_eu_customers,mask_ssnОписание Необязательно. Описание политики. Отображается в журналах аудита и помогает администраторам понять намерение политики. Restrict EU customer rows from US analysts,Mask SSN for all account usersЗаполните раздел "Субъекты" и "Область". В следующей таблице приводится сводка по каждому полю:
Поле Description Пример Применено к... Пользователи, группы или субъекты-службы, подлежащие политике. Когда эти принципы запрашивают таблицы в рамках области действия, применяется фильтр строк или маска столбцов. Чтобы применить политику ко всем субъектам в учетной записи, выберите All account users.us_analysts,All account usersЗа исключением Субъекты, исключенные из политики. Исключенные владельцы не подвергаются фильтрации и маскировке и видят полные и неизмененные данные. admins,compliance_teamОбъем Объект безопасности, к которому прикреплена политика. Политика оценивается по всем таблицам в выбранной области. Выберите каталог, схему или таблицу. Azure Databricks рекомендует применять политики на самом применимом уровне. Выберите каталог prod, а затем выберите схемуcustomers.Условие таблицы Определяет, к каким таблицам относится политика. Нет условия: Применяет политику ко всем таблицам в пределах области действия. Таблицы, соответствующие любому из этих тегов: применяет политику к указанному списку ключей тегов или пар "ключ-значение тега". Таблицы, в которых любое из этих условий соответствует политике. Таблицы, соответствующие пользовательскому выражению: можно создать логическое выражение с помощью has_tagиhas_tag_value, в сочетании сAND,ORиNOTдля более сложной логики сопоставления. Применяет политику к таблицам, где выражение, результатом которого являетсяTRUE, соответствует политике. Если таблица в пределах области не соответствует условию, политика не применяется к этой таблице.Выберите таблицы, соответствующие любому из этих тегов, а затем выберите ключ sensitivityтега со значениемhigh, чтобы ограничить политику только конфиденциальными таблицами.
Для типа политики выберите тип контроля доступа для принудительного применения:
Опция Description Используйте, когда Фильтр строк Создает политику фильтрации строк. UDF вычисляет каждую строку и возвращает булево значение. Строки, в которых UDF возвращает FALSE, исключаются из результатов запроса.Доступ зависит от значений в каждой строке, таких как фильтрация по значениям в столбце, который содержит географические регионы. Маска столбца Создает политику маскирования столбцов. UDF принимает значение столбца в качестве входных данных и возвращает исходную или маскированную версию. Возвращаемый тип должен быть приведен к типу данных целевого столбца. Необходимо отредактировать конфиденциальные поля, такие как СНИЛС, номера телефонов или адреса электронной почты, при этом позволяя пользователю запрашивать таблицу. Следующие несколько разделов зависят от выбора типа политики . Разверните раздел, соответствующий выбранному варианту:
Фильтр строк
В разделе функции фильтра строк выберите, как указать функцию фильтра строк:
-
Выберите существующий: выберите UDF, уже определенный в каталоге Unity. UDF оценивает каждую строку и возвращает логическое значение. Строки, возвращаемые функцией
FALSE, исключаются из результатов запроса. Необходимо иметьEXECUTEв UDF. - Создание: определение функции SQL для использования в качестве логики фильтра строк.
В разделе входных данных функции укажите значение для каждого параметра функции. Каждое входное значение может быть столбцом, сопоставленным тегами, столбцом, сопоставленным пользовательским выражением, или константным значением.
Маска столбца
В разделе условий столбца выберите, как определить столбцы для маскирования:
- Столбцы, соответствующие любому из этих тегов: укажите список ключей тегов или пар "ключ-значение тега". Столбцы с любым из них маскируются политикой.
-
Столбцы, соответствующие пользовательскому выражению: создание логического выражения с использованием
has_tagиhas_tag_value, в сочетании сAND,ORиNOTдля более сложной логики сопоставления. Столбцы, в которых выражение равноTRUE, скрываются.
Затем выберите функцию маскирования , чтобы применить к соответствующим столбцам:
-
Выберите существующий: выберите UDF, уже определенный в Unity Catalog. UDF возвращает исходное или маскированное значение. Возвращаемый тип должен быть приведён к типу данных целевого столбца. Необходимо иметь
EXECUTEв UDF. - Создание: определение функции SQL для использования в качестве логики маскирования столбцов.
В разделе входных данных функции укажите значение для каждого дополнительного параметра функции. Каждое входное значение может быть столбцом, сопоставленным с тегами, столбцом, соответствующим пользовательскому выражению, или константным значением.
В этом примере используется константное значение
4для отображения последних 4 символов SSN.
-
Выберите существующий: выберите UDF, уже определенный в каталоге Unity. UDF оценивает каждую строку и возвращает логическое значение. Строки, возвращаемые функцией
Нажмите кнопку "Создать политику".
SQL
Полная документация см. в статье CREATE POLICY.
CREATE [OR REPLACE] POLICY policy_name
ON { CATALOG catalog_name | SCHEMA schema_name | TABLE table_name }
[COMMENT description]
{ row_filter_body | column_mask_body }
Тело фильтра строк:
ROW FILTER function_name
TO principal [, ...]
[EXCEPT principal [, ...]]
FOR TABLES
[WHEN condition]
[MATCH COLUMNS condition [[AS] alias] [, ...]]
[USING COLUMNS (function_arg [, ...])]
Тело маски столбца:
COLUMN MASK function_name
TO principal [, ...]
[EXCEPT principal [, ...]]
FOR TABLES
[WHEN condition]
[MATCH COLUMNS condition [[AS] alias] [, ...]]
ON COLUMN alias
[USING COLUMNS (function_arg [, ...])]
Параметры:
-
policy_name: имя политики. Должен быть уникальным среди всех политик, определенных в одном защищаемом объекте. -
ON { CATALOG | SCHEMA | TABLE }: область, к которой применена политика. Политика оценивается по всем таблицам, которые являются потомками этого защищаемого объекта. -
function_name: полное имя UDF, реализующего логику фильтрации или маскирования. -
TO principal [, ...]: пользователи, группы или субъекты-службы, к которые применяется политика. -
EXCEPT principal [, ...]: субъекты, исключенные из политики. Исключенные субъекты не подвергаются фильтрации или маскировки. -
FOR TABLES: указывает, что политика предназначена для таблиц. В настоящее время таблицы являются единственным поддерживаемым защищаемым типом, включая потоковые таблицы и материализованные представления. -
WHEN condition: логическое выражение, определяющее, к каким таблицам применяется политика на основе их тегов. Использует встроенные функцииhas_tag('tag_name')иhas_tag_value('tag_name', 'tag_value'). Если параметр не указан, то значениеTRUEпо умолчанию применяется ко всем таблицам в указанной области. -
MATCH COLUMNS condition [[AS] alias] [, ...]: условия для столбцов, на которые направлена политика. Каждое условие является логическим выражением, созданным изhas_tag('tag_name')иhas_tag_value('tag_name', 'tag_value'), при необходимости, в сочетании сAND,ORиNOT. Каждому условию может быть назначен псевдоним для использования вON COLUMNиUSING COLUMNS. Политика может включать до 3MATCH COLUMNSвыражений, и все они должны соответствовать политике для применения. -
ON COLUMN alias: для политик маскирования столбцов указывает соответствующий столбец, который необходимо маскировать, ссылаясь на его псевдоним изMATCH COLUMNS. -
USING COLUMNS (function_arg [, ...]): аргументы, переданные в UDF. Каждый аргумент может быть псевдонимом изMATCH COLUMNSили константным литералом.
Пример: политика маски столбцов. Маскируйте все столбцы, помеченные pii:ssn в схеме prod.customers, показываются только 4 последних символа. Политика применяется к us_analysts, за исключением admins.
CREATE FUNCTION ssn_to_last_nr (ssn STRING, nr INT) RETURNS STRING
RETURN right(ssn, nr);
CREATE POLICY mask_ssn
ON SCHEMA prod.customers
COLUMN MASK ssn_to_last_nr
TO us_analysts EXCEPT admins
FOR TABLES
MATCH COLUMNS has_tag_value('pii', 'ssn') AS ssn
ON COLUMN ssn
USING COLUMNS (4);
Пример: политика фильтрации строк. Исключите строки с европейскими клиентами из таблиц, помеченных sensitivity:high в схеме prod.customers . Политика применяется к us_analysts строкам и фильтруется на основе столбца geo_region .
CREATE FUNCTION non_eu_region (geo_region STRING) RETURNS BOOLEAN
RETURN geo_region <> 'eu';
CREATE POLICY hide_eu_customers
ON SCHEMA prod.customers
COMMENT 'Exclude rows with European customers from sensitive tables'
ROW FILTER non_eu_region
TO us_analysts
FOR TABLES
WHEN has_tag_value('sensitivity', 'high')
MATCH COLUMNS has_tag('geo_region') AS region
USING COLUMNS (region);
пакет SDK Python
Полные сведения см. в документации Databricks SDK для Python.
В этом примере создается политика фильтрации строк, исключающая строки с европейскими клиентами, предназначенная для аналитиков, работающих в США.
from databricks.sdk import WorkspaceClient
from databricks.sdk.service.catalog import (
FunctionArgument,
MatchColumn,
PolicyInfo,
PolicyType,
RowFilterOptions,
SecurableType,
)
w = WorkspaceClient()
w.policies.create_policy(PolicyInfo(
name="hide_eu_customers",
comment="Exclude rows with European customers from sensitive tables",
on_securable_type=SecurableType.SCHEMA,
on_securable_fullname="prod.customers",
for_securable_type=SecurableType.TABLE,
policy_type=PolicyType.POLICY_TYPE_ROW_FILTER,
to_principals=["us_analysts"],
match_columns=[
MatchColumn(condition="has_tag('geo_region')", alias="region"),
],
row_filter=RowFilterOptions(
function_name="prod.customers.non_eu_region",
using=[FunctionArgument(alias="region")],
),
))
В этом примере создаётся политика маскирования столбцов, которая скрывает номера социального страхования для аналитиков из США, кроме тех, кто находится в группе admins.
from databricks.sdk import WorkspaceClient
from databricks.sdk.service.catalog import (
ColumnMaskOptions,
FunctionArgument,
MatchColumn,
PolicyInfo,
PolicyType,
SecurableType,
)
w = WorkspaceClient()
w.policies.create_policy(PolicyInfo(
name="mask_ssn",
comment="Mask social security numbers",
on_securable_type=SecurableType.SCHEMA,
on_securable_fullname="prod.customers",
for_securable_type=SecurableType.TABLE,
policy_type=PolicyType.POLICY_TYPE_COLUMN_MASK,
to_principals=["us_analysts"],
except_principals=["admins"],
match_columns=[
MatchColumn(condition="has_tag_value('pii', 'ssn')", alias="ssn"),
],
column_mask=ColumnMaskOptions(
function_name="prod.customers.ssn_to_last_nr",
on_column="ssn",
using=[FunctionArgument(constant="4")],
),
))
Изменение политики
Обозреватель каталогов
- В рабочей области Azure Databricks щелкните
Catalog.
- Выберите объект, к которому подключена политика.
- Перейдите на вкладку "Политики ".
- Выберите политику, которую требуется отредактировать.
- Обновите все поля, которые нужно изменить. Можно изменить описание, субъекты, тип политики, условия и входные сопоставления функций. Имя политики и защищаемый объект, в которых применяется политика, не могут быть изменены. Описания полей см. в разделе "Создание политики".
- Щелкните " Обновить политику".
SQL
CREATE OR REPLACE POLICY заменяет все определение политики. Укажите все предложения, а не только поля, которые нужно изменить. Политика замены должна иметь то же имя и находиться в той же защищенной среде.
CREATE OR REPLACE POLICY mask_ssn
ON SCHEMA prod.customers
COLUMN MASK ssn_to_last_nr
TO us_analysts EXCEPT admins, compliance_team
FOR TABLES
MATCH COLUMNS has_tag_value('pii', 'ssn') AS ssn
ON COLUMN ssn
USING COLUMNS (4);
пакет SDK Python
В отличие от CREATE OR REPLACE POLICY в SQL, update_policy поддерживает частичные обновления.
update_mask Используйте параметр, чтобы указать, какие поля нужно изменить. Обновляются только эти поля. Если update_mask это "*" или пусто, применяются все поля policy_info .
from databricks.sdk import WorkspaceClient
from databricks.sdk.service.catalog import PolicyInfo
w = WorkspaceClient()
w.policies.update_policy(
on_securable_type="SCHEMA",
on_securable_fullname="prod.customers",
name="mask_ssn",
policy_info=PolicyInfo(
except_principals=["admins", "compliance_team"],
),
update_mask="except_principals",
)
Удаление политики
Обозреватель каталогов
- В рабочей области Azure Databricks щелкните
Catalog.
- Выберите объект, к которому подключена политика.
- Перейдите на вкладку "Политики ".
- Выберите политику.
- Нажмите кнопку "Удалить политику".
SQL
Используется DROP POLICY для удаления политики.
DROP POLICY policy_name ON { CATALOG | SCHEMA | TABLE } securable_name
Примеры:
DROP POLICY mask_ssn ON SCHEMA prod.customers;
DROP POLICY hide_eu_customers ON SCHEMA prod.customers;
пакет SDK Python
from databricks.sdk import WorkspaceClient
w = WorkspaceClient()
w.policies.delete_policy(
on_securable_type="SCHEMA",
on_securable_fullname="prod.customers",
name="mask_ssn",
)
Показать политики
Используйте SHOW POLICIES для перечисления политик, определенных в защищаемом объекте. Также используется SHOW EFFECTIVE POLICIES для включения политик из родительских областей, таких как политики уровня каталога, влияющие на таблицу.
SHOW [EFFECTIVE] POLICIES ON { CATALOG | SCHEMA | TABLE } securable_name
Результат включает имя политики, тип политики и каталог, схему или таблицу, в которой определена каждая политика.
Просмотр эффективных политик для таблицы не требует разрешений родительского каталога или схемы. Это позволяет администратору таблицы просматривать правила, которые применяются, без доступа на чтение к политикам родственных таблиц.
Пример:
SHOW EFFECTIVE POLICIES ON SCHEMA prod.customers;
| policy_name | тип политики | catalog | schema | Комментарий |
|---|---|---|---|---|
| скрыть_eu_покупателей | ROW FILTER | продакшен | customers | |
| mask_ssn | COLUMN МАСКА | продакшен | customers |
Описание политики
Используется DESCRIBE POLICY для просмотра сведений о конкретной политике. Требуется MANAGE в отношении целевого защищаемого объекта или владения объектом.
{ DESC | DESCRIBE } POLICY policy_name ON { CATALOG | SCHEMA | TABLE } securable_name
В результате отображаются свойства политики в виде пар "ключ-значение", включая имя, защищаемый тип, защищаемые имена, субъекты, условия, имя функции и метки времени.
Пример:
DESCRIBE POLICY hide_eu_customers ON SCHEMA prod.customers;
| info_name | info_value |
|---|---|
| Имя | скрыть_пользователей_ЕС |
| Секурируемый тип | SCHEMA |
| В защищенном режиме | прод.customers |
| Директорам | американские_аналитики |
| Для защищаемого типа | TABLE |
| Сопоставление столбцов | has_tag('geo_region') как регион |
| Тип политики | Фильтр строк |
| Имя функции | прод.клиенты.не_из_ЕС_региона |
| Использование столбцов | region |
Ведение журнала аудита
Azure Databricks регистрирует операции, связанные с тегами и политиками ABAC, в таблице системного журнала аудита. Ниже приведены примеры запросов. Дополнительные сведения см. в журналах аудита.
-- All tag assignment and deletion events from the audit log
SELECT
event_time,
action_name,
user_identity.email AS actor,
request_params.workspace_id,
request_params.metastore_id,
request_params.tag_assignment,
response.status_code,
source_ip_address
FROM system.access.audit
WHERE service_name = 'unityCatalog'
AND action_name IN (
'createEntityTagAssignment',
'deleteEntityTagAssignment'
)
ORDER BY event_time DESC;
-- All ABAC policy CRUD operations
SELECT
event_time,
action_name,
user_identity.email AS actor,
request_params.name AS policy_name,
request_params.on_securable_type,
request_params.on_securable_fullname,
request_params.policy_info,
response.status_code
FROM system.access.audit
WHERE service_name = 'unityCatalog'
AND action_name IN ('createPolicy', 'deletePolicy', 'getPolicy', 'listPolicies')
ORDER BY event_time DESC;