Nota
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Se aplica a:
Databricks SQL
Databricks Runtime 16.4 y versiones posteriores
solo Unity Catalog
Crea una directiva con nombre en un elemento protegible. Las directivas pueden ser filtros de fila o máscaras de columna aplicados a catálogos, esquemas o tablas. El nombre de la directiva tiene como ámbito el elemento protegible en el que se define la directiva.
Para ejecutar esta instrucción, debe tener el MANAGE privilegio en el elemento protegible de destino o ser su propietario.
Sintaxis
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_body
ROW FILTER function_name
TO principal [, ...]
[ EXCEPT principal [, ...] ]
FOR TABLES
[ WHEN condition ]
[ MATCH COLUMNS condition [ [ AS ] alias ] [, ...] ]
[ USING COLUMNS ( function_arg [, ...] ) ]
column_mask_body
COLUMN MASK function_name
TO principal [, ...]
[ EXCEPT principal [, ...] ]
FOR TABLES
[ WHEN condition ]
[ MATCH COLUMNS condition [ [ AS ] alias ] [, ...] ]
ON COLUMN alias
[ USING COLUMNS ( function_arg [, ...] ) ]
Parámetros
-
Nombre de la directiva. El nombre tiene como ámbito el elemento protegible en el que se define la directiva. Si ya existe una directiva con el mismo nombre y
OR REPLACEno se especifica, Azure Databricks genera POLICY_ALREADY_EXISTS. -
Nombre del catálogo en el que se define la directiva. Si no se admite el tipo protegible para las directivas, Azure Databricks genera POLICY_ON_SECURABLE_TYPE_NOT_SUPPORTED.
-
Nombre del esquema en el que se define la directiva.
-
Nombre de la tabla en la que se define la directiva.
descripción
Comentario de cadena opcional para la directiva.
-
Nombre de la UDF usada para el filtro de fila o la máscara de columna.
principal
Un nombre de usuario, grupo o entidad de seguridad de servicio. Se pueden enumerar varias entidades de seguridad después
TOde . Las entidades de seguridad enumeradas despuésEXCEPTse excluyen de la directiva.-
WHENes una expresión booleana que determina si la política se aplica, basándose en las etiquetas del seguro, los atributos de identidad del usuario que consulta y/o el contexto de la solicitud.MATCH COLUMNSes una expresión booleana que coincide con las columnas según sus etiquetas (por ejemplo,has_tag('pii')).Las condiciones se evalúan mediante el plano de control. Las siguientes funciones están soportadas en condiciones:
-
Funciones de etiqueta (
has_tag()yhas_tag_value()): soportadas tantoWHENen comoMATCH COLUMNSen . Cuando se usan enWHEN, comprueban etiquetas establecidas directamente en la tabla o heredadas de un catálogo o esquema padre. Cuando se usa enMATCH COLUMNS, comprueban las etiquetas establecidas directamente en la columna únicamente. Las formas camelCase anteriores (hasTag,hasTagValue) siguen funcionando con compatibilidad con versiones anteriores. -
Funciones de atributos identidad (
has_identity_attribute_value()yhas_identity_attribute_tag_match()): soportadas en laWHENcláusula de las políticas de columna de máscara, donde evalúan los atributos de identidad del usuario que ejecuta la consulta. No están respaldados enGRANTniDENYen las políticas ni enMATCH COLUMNS. Consulta Enmascarar una columna basada en los atributos del usuario que hace la consulta. -
Funciones de atributos de contexto (
has_context_attribute()yhas_context_attribute_value()): soportadas en laWHENcláusula de filtros de fila y políticas de máscara de columna, donde evalúan el contexto de la solicitud, como la aplicación que llama. No están soportados enMATCH COLUMNS. Véase Restringir el acceso para agentes externos que actúan en nombre de un usuario.
Si la condición no es válida, Azure Databricks genera UC_INVALID_POLICY_CONDITION.
-
Funciones de etiqueta (
alias
En
MATCH COLUMNS, un identificador opcional para la columna coincidente. Se puede hacer referencia al alias enUSING COLUMNS(filtro de fila) o enON COLUMNyUSING COLUMNS(máscara de columna).function_arg
En
USING COLUMNS, cada argumento es una expresión constante o un alias deMATCH COLUMNS. Los argumentos se pasan a la función de directiva en orden. Si las opciones no coinciden con el tipo de directiva, Azure Databricks genera UC_POLICY_TYPE_OPTIONS_MISMATCH.
Ejemplos
En el ejemplo siguiente se crea una directiva de máscara de columna:
> CREATE FUNCTION ssn_to_last_nr (ssn STRING, nr INT) RETURNS STRING
RETURN right(ssn, nr);
> CREATE POLICY ssn_mask
ON CATALOG employees
COLUMN MASK ssn_to_last_nr
TO 'All Users' EXCEPT 'HR admins'
FOR TABLES
MATCH COLUMNS has_tag('ssn') AS ssn
ON COLUMN ssn
USING COLUMNS (4);
En el ejemplo siguiente se crea una directiva de filtro de fila:
> CREATE FUNCTION non_eu_region (geo_region STRING) RETURNS BOOLEAN
RETURN geo_region <> 'eu';
> CREATE POLICY hide_eu_customers
ON SCHEMA prod.customers
COMMENT 'Hide European customers from sensitive tables'
ROW FILTER non_eu_region
TO analysts
FOR TABLES
WHEN has_tag_value('sensitivity', 'high')
MATCH COLUMNS has_tag('geo_region') AS region
USING COLUMNS (region);