Contrato de acesso.
Os contratos de acesso descrevem a segurança do catálogo. Mantenha-os separados da ingestão normal porque concessões, filtros de linha e máscaras de coluna geralmente exigem um caminho de aprovação diferente e privilégios mais fortes.
Exemplo completo
- YAML
- Python
_metadata:
contract_version: 1.0.0
access_policy:
mode: validate_only
on_drift: warn
revoke_unmanaged: false
grants:
- principal: account users
privileges: [SELECT]
- principal: data-platform
privileges: [SELECT, MODIFY]
row_filters:
- name: region_filter
function: main.security.filter_region
columns: [region]
applies_to:
principals: [regional-managers]
column_masks:
- column: email
function: main.security.mask_email
using_columns: [email]
applies_to:
principals: [analysts]
from contractforge import governance_check, governance_preview, load_contract_bundle
bundle = load_contract_bundle("contracts/silver/s_customers")
preview = governance_preview(bundle)
check = governance_check(bundle)
# Access changes are normally applied with:
# contractforge apply-access contracts/silver/s_customers
Em modo bundle, o *.ingestion.yaml correspondente define o target da tabela. Não coloque target no arquivo de acesso, a menos que você queira uma verificação explícita de compatibilidade.
Campos
| Campo | Tipo | Padrão | Usar |
|---|---|---|---|
_metadata | objeto | Metadados de arquivo para auditoria e verificações de pacotes. | |
target | objeto | opcional | Verificação de compatibilidade opcional com relação ao destino de ingestão. |
access_policy.mode | apply | validate_only | ignore | apply | Se o acesso deve ser aplicado, apenas validado ou ignorado. |
access_policy.on_drift | fail | warn | reconcile | warn | Comportamento quando as subvenções reais diferem das subvenções declaradas. |
access_policy.revoke_unmanaged | booleano | falso | Se as subvenções não geridas podem ser revogadas durante a reconciliação. |
mode, on_drift, revoke_unmanaged | o mesmo que política | mesmo | Aliases de nível superior para contratos compactos. |
grants | lista[objeto] | [] | Subsídios declarados. |
grants[].principal | string | obrigatório | Entidade de catálogo, usuário ou grupo. |
grants[].privileges | string | lista[string] | obrigatório | Privilégios como SELECT, MODIFY, MANAGE, READ FILES, WRITE FILES, EXECUTE ou ALL PRIVILEGES. |
row_filters | lista[objeto] | [] | Filtros de linha do Catálogo Unity. |
row_filters[].name | string | obrigatório | Nome da regra lógica. |
row_filters[].function | string qualificada | obrigatório | Função de filtro totalmente qualificada, por exemplo catalog.schema.function. |
row_filters[].columns | string | lista[string] | obrigatório | Colunas passadas para a função de filtro. |
row_filters[].applies_to.principals | string | lista[string] | [] | Princípios associados à regra para contexto de documentação/desvio. |
column_masks | lista[objeto] | objeto | [] | Máscaras de coluna do Catálogo Unity. O formulário do objeto é codificado pelo nome da coluna. |
column_masks[].column | string | obrigatório em forma de lista | Coluna mascarada. |
column_masks[].function | string qualificada | obrigatório | Função de máscara totalmente qualificada. |
column_masks[].using_columns | string | lista[string] | [] | Colunas passadas para a função de máscara. |
column_masks[].applies_to.principals | string | lista[string] | [] | Princípios associados à regra para contexto de documentação/desvio. |
Aplicar fluxo de trabalho
A ingestão normal não deve exigir privilégios de gerenciamento de acesso. Use um fluxo de trabalho dedicado para verificações de acesso e aplicação.
contractforge validate-access contracts/silver/s_customers
contractforge governance-check contracts/silver/s_customers
contractforge apply-access contracts/silver/s_customers