Pular para o conteúdo principal

Policy Bundles

Policy Bundles CFA são arquivos YAML/JSON versionados e carregáveis que definem regras de governança — separando definição de política do código.

Por que Policy Bundles?

  • Separação de responsabilidades: Times de plataforma/segurança definem políticas em YAML; times de dados referenciam por versão
  • Auditabilidade: Cada execução registra qual versão do bundle estava ativa
  • Integração CI/CD: cfa policy validate policies/prod-v1.yaml
  • Versionados: Bundles possuem versões semânticas (ex: prod-v1.0)

Bundles Integrados

CFA inclui 3 bundles no diretório policies/:

BundleFocoRegrasSeveridade
prod-v1.yamlSegurança e custo balanceados7Mista
finops-strict-v1.yamlControle de custo agressivo5Alta
compliance-strict-v1.yamlIndústrias reguladas7Crítica

Schema YAML do Bundle

policy_bundle:
version: "prod-v1.0"
description: "Regras de governança para produção"
rules:
- name: forbid_raw_pii
condition: pii_in_protected_layer
action: block
fault_code: GOVERNANCE_RAW_PII
severity: critical
family: semantic
message: "PII em camada protegida sem anonimização."
remediation:
- "Aplicar sha256 nas colunas de PII"

Condições Disponíveis

CondiçãoDescrição
pii_in_protected_layerPII em Silver/Gold sem anonimização
pii_without_policyDataset com PII sem política declarada
missing_partitionDataset de alto volume sem partição
sensitive_without_partitionDataset sensível sem partição
missing_merge_keyEscrita em Silver/Gold sem merge key
enforce_types_disabledVerificação de tipos desabilitada
cost_budget_exceededCusto estimado excede orçamento
schema_mismatchSchema não corresponde ao contrato
unauthorized_gold_writeEscrita não autorizada na camada Gold
customCondição definida pelo usuário

Carregando via Código

from cfa.policy.bundle import PolicyBundle, list_available_bundles
from cfa.policy.engine import PolicyEngine

# Listar bundles disponíveis
for name in list_available_bundles():
print(name)

# Carregar bundle de arquivo
bundle = PolicyBundle.from_yaml("policies/prod-v1.yaml")
engine = PolicyEngine(rules=bundle.rules, policy_bundle_version=bundle.version)

# Ou usar bundle built-in
engine = PolicyEngine(policy_bundle_version="prod-v1.0")

Condições Customizadas

from cfa.core.conditions import register_condition, build_condition

def verificar_orcamento(meta):
limite = meta.get("max_dbu", 100)
def check(sig):
return sig.constraints.max_cost_dbu is not None and sig.constraints.max_cost_dbu > limite
return check

register_condition("custom_budget", verificar_orcamento)

Validando Bundles

cfa policy validate policies/prod-v1.yaml --format json

A validação verifica: condição registrada, enums válidos, códigos de fault duplicados, campos obrigatórios.