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.-
Para
WHEN: una expresión booleana que coincide con elementos protegibles (por ejemplo, condiciones de etiqueta de nivel de tabla). ParaMATCH COLUMNS: una expresión booleana que coincide con las columnas (por ejemplo,hasTag('tag_name')). El plano de control evalúa las condiciones en metadatos protegibles. Las únicas funciones orientadas al usuario admitidas en condiciones sonhasTag()yhasTagValue(). Si la condición no es válida, Azure Databricks genera UC_INVALID_POLICY_CONDITION. 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 hasTag('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 hasTagValue('sensitivity', 'high')
MATCH COLUMNS hasTag('geo_region') AS region
USING COLUMNS (region);