CREAR POLÍTICA

Se aplica a:marcado con sí Databricks SQL marcado con sí Databricks Runtime 16.4 y versiones posteriores marcado con sí 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

  • policy_name

    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 REPLACE no se especifica, Azure Databricks genera POLICY_ALREADY_EXISTS.

  • catalog_name

    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.

  • schema_name

    Nombre del esquema en el que se define la directiva.

  • table_name

    Nombre de la tabla en la que se define la directiva.

  • descripción

    Comentario de cadena opcional para la directiva.

  • function_name

    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és EXCEPT se excluyen de la directiva.

  • condición

    WHEN es 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 COLUMNS es 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() y has_tag_value()): soportadas tanto WHEN en como MATCH COLUMNSen . Cuando se usan en WHEN, comprueban etiquetas establecidas directamente en la tabla o heredadas de un catálogo o esquema padre. Cuando se usa en MATCH 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() y has_identity_attribute_tag_match()): soportadas en la WHEN clá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 en GRANT ni DENY en las políticas ni en MATCH COLUMNS. Consulta Enmascarar una columna basada en los atributos del usuario que hace la consulta.
    • Funciones de atributos de contexto (has_context_attribute() y has_context_attribute_value()): soportadas en la WHEN clá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 en MATCH 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.

  • alias

    En MATCH COLUMNS, un identificador opcional para la columna coincidente. Se puede hacer referencia al alias en USING COLUMNS (filtro de fila) o en ON COLUMN y USING COLUMNS (máscara de columna).

  • function_arg

    En USING COLUMNS, cada argumento es una expresión constante o un alias de MATCH 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);