CRIAR POLÍTICA

Aplica-se a:Marcado como sim Databricks SQL Marcado como sim Databricks Runtime 16.4 e acima Marcado como sim Somente Unity Catalog

Cria uma política nomeada em um protegível. As políticas podem ser filtros de linha, máscaras de coluna ou políticas ABACGRANT. Filtros de linha e máscaras de coluna são aplicados a catálogos, esquemas ou tabelas, e estão disponíveis no Databricks Runtime 16.4 e superior. As políticas ABAC GRANT são aplicadas a catálogos ou esquemas, e concedem privilégios dinamicamente sobre os valores securáveis que eles têm como alvo. Você também pode anexar uma política à metastore para que ela se aplique a todos os catálogos da metastore. Veja políticas ABAC em nível Metastore (Beta). O nome da política tem como escopo o protegível em que a política está definida.

Para executar essa instrução, você deve ter o MANAGE privilégio no destino protegível ou ser seu proprietário. Para criar uma política ON METASTORE (Beta), você deve ser administrador de metastore.

Criar, modificar ou eliminar uma política DENY ou política ABAC GRANT (Beta) com SQL requer Databricks Runtime 18 LTS ou superior. Em warehouses SQL, o suporte depende do canal de lançamento do warehouse. Veja os requisitos de computação para GRANT políticas e DENY políticas.

Criar, modificar ou eliminar uma política em nível de metastore (Beta) com SQL requer Databricks Runtime 19 ou superior. Consulte os requisitos de computação.

Nota

O Databricks Runtime 18 é mais recente que o Databricks Runtime 18.0, 18.1 e 18.2. Os recursos que anteriormente seriam lançados em uma versão numerada posterior agora passam a ser lançados na forma de atualizações datadas para o Databricks Runtime 18. Para obter detalhes, consulte Sobre notas de versão unificadas.

Sintaxe

CREATE [ OR REPLACE ] POLICY policy_name
ON { METASTORE | CATALOG catalog_name | SCHEMA schema_name | TABLE table_name }
[ COMMENT description ]
{ row_filter_body | column_mask_body | grant_policy_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 [, ...] ) ]

grant_policy_body
  TO principal [, ...]
  [ EXCEPT principal [, ...] ]
  GRANT privilege [, ...]
  FOR grant_target_type
  [ WHEN condition ]

Políticas de filtro de linha e máscaras de coluna podem ser definidas em uma metastore (Beta), catálogo, esquema ou tabela. GRANT Políticas podem ser definidas em uma metastore, catálogo ou esquema. ON METASTORE não toma nome e mira na metastore onde você está operando atualmente.

Parâmetros

  • policy_name

    O nome da política. O nome tem como escopo o protegível em que a política está definida. Se uma política com o mesmo nome já existir e OR REPLACE não for especificada, o Azure Databricks gerará POLICY_ALREADY_EXISTS.

  • catalog_name

    O nome do catálogo no qual a política é definida. Se o tipo protegível não tiver suporte para políticas, o Azure Databricks gerará POLICY_ON_SECURABLE_TYPE_NOT_SUPPORTED.

  • schema_name

    O nome do esquema no qual a política é definida.

  • table_name

    O nome da tabela na qual a política é definida.

  • descrição

    Um comentário de cadeia de caracteres opcional para a política.

  • function_name

    O nome da UDF usada para o filtro de linha ou máscara de coluna.

  • privilégio

    Em grant_policy_body, um privilégio para conceder sobre cada garantia que corresponda à apólice. Os privilégios válidos dependem de grant_target_type. Veja Tipos e privilégios de segurança suportados.

  • grant_target_type

    Em grant_policy_body, o tipo de garantia ao qual os privilégios concedidos se aplicam. Use a forma plural: MODELS, MODEL SERVICES, MODEL PROVIDER SERVICES, MCP SERVICES, ou AGENT SERVICES. A forma sublinhada, como MODEL_SERVICES, também é aceita. Formas singulares não são aceitas.

  • principal

    Um nome de usuário, grupo ou entidade de serviço. Várias entidades de segurança podem ser listadas após TO. As entidades de segurança listadas depois EXCEPT são excluídas da política.

  • Condição

    WHEN é uma expressão booleana que determina se a política se aplica, com base nas tags do segurável, nos atributos de identidade do usuário que consulta e/ou no contexto da solicitação.

    MATCH COLUMNS é uma expressão booleana que corresponde às colunas com base em suas tags (por exemplo, has_tag('pii')).

    As condições são avaliadas pelo plano de controle. As seguintes funções são suportadas em condições:

    • Funções de tag (has_tag() e has_tag_value()): suportadas tanto WHEN em quanto MATCH COLUMNSem . Quando usados em WHEN, eles verificam tags definidas diretamente na tabela ou herdadas de um catálogo ou esquema pai. Quando usados, MATCH COLUMNSeles verificam as marcas definidas diretamente apenas na coluna. Os formulários camelCase mais antigos (hasTag, hasTagValue) continuam funcionando para compatibilidade com versões anteriores.
    • Funções de atributos identidade (has_identity_attribute_value() e has_identity_attribute_tag_match()): suportadas na WHEN cláusula das políticas de máscara de coluna, onde avaliam os atributos de identidade do usuário que executa a consulta. Eles não são apoiados em GRANT políticas DENY ou em MATCH COLUMNS. Veja Mascarar uma coluna baseada nos atributos do usuário que faz a consulta.
    • Funções de atributo de contexto (has_context_attribute() e has_context_attribute_value()): suportadas na WHEN cláusula de filtro de linha e políticas de máscara de coluna, onde avaliam o contexto da solicitação, como a aplicação que chama. Eles não são suportados em MATCH COLUMNS. Veja Restringir acesso para agentes externos atuando em nome de um usuário.

    Se a condição for inválida, o Azure Databricks gerará UC_INVALID_POLICY_CONDITION.

  • alias

    In MATCH COLUMNS, um identificador opcional para a coluna correspondente. O alias pode ser referenciado em USING COLUMNS (filtro de linha) ou dentro ON COLUMN e USING COLUMNS (máscara de coluna).

  • function_arg

    Em USING COLUMNS, cada argumento é uma expressão constante ou um alias de MATCH COLUMNS. Os argumentos são passados para a função de política em ordem. Se as opções não corresponderem ao tipo de política, o Azure Databricks gerará UC_POLICY_TYPE_OPTIONS_MISMATCH.

Exemplos

O exemplo a seguir cria uma política de máscara de coluna:

> 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);

O exemplo a seguir cria uma política de filtro de linha:

> 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);

O exemplo a seguir cria uma política ABAC GRANT que concede EXECUTE para todo serviço modelo criado pela Anthropic:

> CREATE POLICY grant_anthropic_model_services
    ON SCHEMA system.ai
    COMMENT 'Grant EXECUTE on Anthropic model services'
    TO data_scientists
    EXCEPT contractors
    GRANT EXECUTE FOR MODEL SERVICES
    WHEN has_tag_value('ai.model_creator', 'anthropic');