DevOps 19 min de leitura

A Anatomia da Autorização e os Pilares da Segurança da Informação: De DAC, MAC e RBAC a ABAC, ReBAC (Zanzibar) e Políticas como Código (OPA)

Guilherme Nascimento 0 comentários

A Anatomia da Autorização e os Pilares da Segurança da Informação: De DAC, MAC e RBAC a ABAC, ReBAC (Zanzibar) e Políticas como Código (OPA)

Modelos de Autorização e Pilares da Segurança da Informação

Normas & Especificações: Fundamentado em NIST SP 800-162 (ABAC), NIST SP 800-207 (Zero Trust), ISO/IEC 27001 e Google Zanzibar
HORA NERD // SECURITY ARCHITECTURE 2026

Arquitetura & Engenharia de Segurança
Manual Avançado de Controle de Acesso para Arquitetos de Nuvem, Engenheiros de Software, DevOps e CISOs

Mais de 80% dos vazamentos de dados contemporâneos e falhas de APIs corporativas não se originam na quebra de senhas ou na falsificação de identidades: eles acontecem porque a camada de autorização falhou em conter o usuário autenticado. Enquanto a indústria despendeu bilhões aperfeiçoando a autenticação (MFA, biometria, passkeys FIDO2 e Single Sign-On), o controle de acesso continuou relegado a cláusulas if (user.role == 'admin') estáticas espalhadas pelo código-fonte. Este manual desmistifica os pilares clássicos e modernos da segurança da informação, traça a fronteira matemática entre AuthN e AuthZ, analisa a evolução dos modelos de permissão (DAC, MAC, RBAC, ABAC e ReBAC) e ensina a desacoplar regras de negócio usando Authorization-as-Code com Open Policy Agent (OPA).

✓
Pilares Inegociáveis: Da Tríade CIA clássica ao Hexagrama de Parker, Zero Trust e o Princípio do Menor Privilégio.
✓
AuthN vs. AuthZ: O abismo conceitual entre provar identidade e conceder direitos granulares sobre objetos.
✓
Evolução dos Modelos: Como resolver a “explosão de papéis” do RBAC migrando para ABAC dinâmico e grafos ReBAC (Zanzibar).
✓
Políticas como Código: Implementação prática em OPA (Rego), AWS IAM ABAC Conditions e Kubernetes RBAC.

—

1. Os Pilares Inegociáveis da Segurança da Informação

Antes de desenhar qualquer matriz de controle de acesso, é fundamental estabelecer as fundações axiomáticas da segurança corporativa. Uma falha de autorização é, por definição, a ruptura direta de pelo menos um dos pilares de governança de dados.

TERMINAL / bashUTF-8
+---------------------------------------------------------------------------------------------------+
|                        OS PILARES EXPANDIDOS DA SEGURANÇA DA INFORMAÇÃO                           |
+---------------------------------------------------------------------------------------------------+

                                    [ DADO / ATIVO CRÍTICO ]
                                                │
         ┌──────────────────────────────────────┼──────────────────────────────────────┐
         ▼                                      ▼                                      ▼
 [ CONFIDENCIALIDADE ]                  [ INTEGRIDADE ]                       [ DISPONIBILIDADE ]
 • Criptografia AES-256-GCM             • Assinaturas Digitais (SHA-256)      • Resiliência Multi-AZ / Multi-Região
 • Mascaramento Dinâmico de Dados       • Imutabilidade & WORM                • Mitigação DDoS L3/L4/L7
 • Isolamento de Memória (SGX/SEV)      • Transações ACID sem Race Conditions • Failover Automatizado & Circuit Breakers
         │                                      │                                      │
         ├──────────────────────────────────────┴──────────────────────────────────────┤
         │                       OS TRÊS VETORES COMPLEMENTARES                         │
         ▼                                      ▼                                      ▼
   [ AUTENTICIDADE ]                    [ NÃO-REPÚDIO ]                         [ UTILIDADE ]
 Prova matemática e irrefutável        Trilhas de auditoria blindadas          Dados seguros preservados no
 da identidade da entidade emissora     com carimbo do tempo (RFC 3161)         formato utilizável pela aplicação

1.1 A Tríade CIA Tradicional (Confidencialidade, Integridade e Disponibilidade)

A tríade clássica representa os três pilares canônicos definidos pela norma ISO/IEC 27001:

1. Confidencialidade (Confidentiality): Garante que a informação seja acessível exclusivamente por identidades (usuários, serviços ou processos) devidamente autorizadas.
– Mecanismos de Engenharia: Criptografia simétrica em repouso (at-rest) com AES-256, criptografia em trânsito (in-transit) com TLS 1.3 obrigatório (proibindo cifras CBC legadas), computação confidencial em uso (in-use) com enclaves de hardware (Intel SGX ou AMD SEV) e mascaramento dinâmico de dados (Dynamic Data Masking).
2. Integridade (Integrity): Assegura a precisão, exatidão e completude dos dados durante todo o seu ciclo de vida, impedindo adulterações não autorizadas, deleções maliciosas ou corrupção silenciosa de bytes (bit rot).
– Mecanismos de Engenharia: Funções de hash criptográfico resistentes a colisões (SHA-256, SHA-512), códigos de autenticação de mensagem baseados em hash (HMAC), assinaturas digitais assimétricas (ECDSA, Ed25519) e armazenamento imutável (WORM – Write Once, Read Many).
3. Disponibilidade (Availability): Garante que os recursos computacionais, bancos de dados e interfaces estejam operacionalmente acessíveis quando demandados por entidades autorizadas.
– Mecanismos de Engenharia: Arquiteturas ativas/ativas sem pontos únicos de falha (SPOF), balanceamento de carga com sondas de saúde em Camada 7, esteiras elásticas de orquestração (Kubernetes HPA), proteção contra negação de serviço distribuída (DDoS) e redundância geográfica cruzada.

1.2 A Tríade Ampliada: O Hexagrama de Parker (Parker’s Hexad)

Modelos modernos de auditoria e governança cibernética consideram a tríade CIA insuficiente para abarcar a complexidade de redes distribuídas. O modelo de Donn Parker amplia a tríade clássica com três dimensões adicionais:

  • Autenticidade (Authenticity): A certeza verificável de que uma mensagem, transação ou pacote foi emitido pelo remetente declarado, sem falsificação de cabeçalhos ou spoofing.
  • Não-Repúdio (Non-Repudiation): A impossibilidade técnica de uma das partes negar a autoria de uma operação realizada no sistema. É assegurado por assinaturas digitais combinadas com registros de data/hora certificados (Time-Stamping Authorities – RFC 3161) e trilhas de auditoria em armazenamento de log somente-leitura (ex: AWS CloudTrail com integridade de arquivo validada).
  • Posse / Controle e Utilidade (Possession and Utility): Distingue o acesso aos dados de sua usabilidade. Um arquivo criptografado com chave perdida mantém sua confidencialidade e integridade intactas, mas perdeu completamente sua utilidade, configurando incidente de indisponibilidade de negócio.

1.3 Princípios Operacionais Fundamentais: PoLP, SoD e Defesa em Profundidade

Para que os pilares acima resistam ao teste da produção, três axiomas operacionais devem reger a arquitetura de sistemas:

Princípio do Menor Privilégio (PoLP)

Uma entidade deve receber exclusivamente as permissões indispensáveis para executar sua função designada, pelo menor tempo estritamente necessário. O acesso permanente (*standing access*) é banido em favor de concessões sob demanda temporárias: Just-In-Time (JIT) e Just-Enough-Administration (JEA) via ferramentas de PIM (Privileged Identity Management).

Segregação de Funções (SoD)

Nenhum indivíduo ou conta isolada deve concentrar o poder de originar, aprovar e executar uma operação crítica de ponta a ponta. Operações que envolvem risco financeiro, exclusão de bases de dados de produção ou destruição de chaves criptográficas exigem aprovação colegiada mandatória (Two-Man Rule / 4-Eyes Principle).

—

2. O Abismo Arquitetural: Autenticação (AuthN) vs. Autorização (AuthZ)

Um dos erros conceituais mais custosos da engenharia de software reside na fusão confusa entre Autenticação e Autorização. Desenvolvedores frequentemente tratam a autorização como um mero apêndice do token de autenticação, abrindo brechas estruturais devastadoras em APIs.

TERMINAL / bashUTF-8
+---------------------------------------------------------------------------------------------------+
|                        A FRONTEIRA CONCEITUAL ENTRE AUTHN E AUTHZ                                 |
+---------------------------------------------------------------------------------------------------+

   DIMENSÃO                  AUTENTICAÇÃO (AuthN)                          AUTORIZAÇÃO (AuthZ)
  ─────────────────────────────────────────────────────────────────────────────────────────────────
   Pergunta Fundamental:     "Quem é você?"                                "O que você pode fazer?"
   Validação Típica:         Senhas, Biometria, FIDO2, OIDC               Regras RBAC, ABAC, ReBAC, OPA
   Artefato Produzido:       Token de Identidade (ID Token / PRT)          Decisão Booleana (Permit / Deny)
   Momento de Avaliação:     No início da sessão (Logon)                   A cada requisição a cada recurso
   Ponto de Falha Típico:    Credential Stuffing, Phishing, Pass-the-Hash  BOLA/IDOR, Escalação Vertical/Horizontal

2.1 A Armadilha dos Tokens JWT e o Risco de BOLA / IDOR

O padrão predominante na web moderna é a emissão de JSON Web Tokens (JWT) após a autenticação bem-sucedida. O cliente recebe um token de acesso contendo declarações (claims), como:

TERMINAL / jsonUTF-8
{
  "sub": "usr_99812",
  "name": "Carlos Silva",
  "role": "analista_financeiro",
  "scope": "relatorios:read faturas:create",
  "exp": 1731504000
}

O gateway de API valida que o token é autêntico (assinatura criptográfica RS256 válida e data de expiração no futuro). No entanto, validar a autenticidade do token NÃO significa que o usuário está autorizado a manipular o objeto específico da requisição.

Considere o endpoint HTTP:

$$\text{DELETE } \text{/api/v1/faturas/88219}$$

1. O cliente anexa o JWT válido de Carlos Silva.
2. A aplicação inspeciona o token e confirma: “Carlos é autêntico e possui a role analista_financeiro.”
3. O código executa: DELETE FROM faturas WHERE id = 88219;

A Catástrofe: A fatura 88219 pertence a outra empresa (tenant) ou filial à qual Carlos não possui permissão de acesso. O sistema cometeu a vulnerabilidade mais crítica do OWASP API Security Top 10: BOLA (Broken Object Level Authorization), historicamente conhecida como IDOR (Insecure Direct Object Reference).

[!CAUTION]

A autenticação opera em nível de identidade. A autorização deve operar obrigatoriamente em **nível de dados e contexto**, validando se o sujeito autenticado possui vínculo legítimo com o objeto de destino no exato momento da operação.

2.2 O Padrão Arquitetural PEP / PDP (NIST SP 800-162)

Para evitar a dispersão de lógica de segurança no código de negócio, o padrão de referência do NIST (National Institute of Standards and Technology) estabelece a separação estrita de quatro componentes arquiteturais:

TERMINAL / bashUTF-8
+---------------------------------------------------------------------------------------------------+
|                        ARQUITETURA DE AUTORIZAÇÃO NIST (PEP / PDP / PAP / PIP)                    |
+---------------------------------------------------------------------------------------------------+

   [ CLIENTE ] ───► [ 1. Requisição HTTP ] ───► [ PEP: Policy Enforcement Point ]
                                                          │
                                                          │ 2. Consulta de Avaliação
                                                          ▼
  [ PAP: Policy Administration Point ]           [ PDP: Policy Decision Point ]
  (Repositório Git com políticas Rego/Cedar) ──►  (Motor OPA / Avaliador Local)
                                                          ▲
                                                          │ 3. Enriquecimento de Contexto
                                                          ▼
                                                 [ PIP: Policy Information Point ]
                                                 (Banco de Dados / Cache Redis / LDAP)
                                                          │
  [ RECURSO / API ] ◄─── [ 5. Acesso Concedido ] ◄────────┼── 4. Resposta: PERMIT / DENY
  • PEP (Policy Enforcement Point): O interceptador posicionado na borda ou no middleware da aplicação (ex.: Envoy Proxy, Kong, API Gateway ou filtro HTTP). Ele intercepta a requisição, extrai o contexto e aplica cegamente a decisão emitida pelo PDP.
  • PDP (Policy Decision Point): O motor de inteligência que avalia a solicitação contra o catálogo de regras. Ele não executa código de negócio; ele recebe entradas estruturadas e retorna uma resposta determinística: Permit ou Deny.
  • PIP (Policy Information Point): A fonte de verdade que provê atributos adicionais ao PDP (ex.: dados do cliente no banco PostgreSQL, geolocalização do IP, horário de trabalho).
  • PAP (Policy Administration Point): O ambiente onde as políticas são criadas, versionadas e auditadas (ex.: esteira de CI/CD com arquivos de política no Git).

—

3. A Taxonomia dos Modelos de Autorização: A Evolução Histórica

Ao longo de quatro décadas de evolução da ciência da computação, a engenharia de sistemas desenvolveu diferentes paradigmas para responder à pergunta: “Quem pode fazer o quê sobre qual recurso?”.

TERMINAL / bashUTF-8
+---------------------------------------------------------------------------------------------------+
|                            A LINHA DO TEMPO DOS MODELOS DE CONTROLE DE ACESSO                     |
+---------------------------------------------------------------------------------------------------+

   1970s: DAC                      1980s: MAC                      1990s: RBAC
   Controle Discricionário         Controle Mandatório             Controle Baseado em Papéis
   • Dono do recurso decide        • Rótulos de sensibilidade      • Usuário ──► Função ──► Permissão
   • Permissões POSIX (chmod)      • Bell-LaPadula / Biba          • Grupos do Active Directory
   • NTFS ACLs no Windows          • SELinux / AppArmor            • Azure / Kubernetes RBAC
           │                               │                               │
           └───────────────────────────────┼───────────────────────────────┘
                                           │
                                           ▼
   2010s: ABAC                     2020s: ReBAC                    2026: PBAC / Policy-as-Code
   Baseado em Atributos            Baseado em Relações             Políticas Declarativas Externas
   • Funções dinâmicas de 4 vias   • Grafos de Permissão           • Open Policy Agent (OPA / Rego)
   • Usuário, Recurso, Ação e Amb. • Google Zanzibar               • AWS Cedar Engine
   • AWS IAM Conditions            • OpenFGA / Ory Keto            • Microsserviços Desacoplados

—

3.1 DAC (Discretionary Access Control)

No modelo DAC, o criador ou proprietário (owner) de um objeto tem discricionariedade absoluta para conceder ou revogar permissões a outros sujeitos.

  • Exemplo Clássico: Sistema de permissões POSIX no Linux:
TERMINAL / bashUTF-8
  -rwxr-x--- 1 guilherme engenharia 4096 Nov 13 10:00 script_deploy.sh
  

O usuário guilherme decide se membros do grupo engenharia podem executar o arquivo e bloqueia o restante do mundo (others).

  • Ponto Forte: Simplicidade de implementação no sistema de arquivos e autonomia do usuário.
  • Ponto Fraco: Inviável para governança corporativa. Se um colaborador negligente aplicar chmod 777 em uma pasta com dados de cartões de crédito (PCI-DSS), o sistema acata a decisão sem qualquer validação de conformidade organizacional.

—

3.2 MAC (Mandatory Access Control)

No modelo MAC, os direitos de acesso não são definidos pelos proprietários dos objetos, mas são rigorosamente impostos pelo sistema operacional ou pelo kernel através de uma autoridade de segurança central.

Todo sujeito e todo objeto recebem um rótulo de segurança (Security Label) contendo um nível hierárquico (ex: Público, Confidencial, Secreto, Ultrassecreto) e categorias. O modelo baseia-se em formulações matemáticas clássicas:

$$\text{Bell-LaPadula (Foco em Confidencialidade): } \begin{cases} \text{No Read Up: } \text{Nível}(S) \ge \text{Nível}(O) \\ \text{No Write Down: } \text{Nível}(S) \le \text{Nível}(O) \end{cases}$$

$$\text{Biba (Foco em Integridade): } \begin{cases} \text{No Read Down: } \text{Nível}(S) \le \text{Nível}(O) \\ \text{No Write Up: } \text{Nível}(S) \ge \text{Nível}(O) \end{cases}$$

  • Implementação em Produção: SELinux (Security-Enhanced Linux). Mesmo que o processo do servidor web Nginx seja comprometido por um exploit de dia zero e rode como usuário root, o kernel com SELinux em modo Enforcing impede que o Nginx leia o arquivo /etc/shadow ou acesse diretórios fora de seu contexto de tipo (httpd_sys_content_t).
  • Ponto Fraco: Extrema rigidez de configuração e complexidade de manutenção, o que historicamente leva muitos administradores despreparados a desativarem o SELinux (setenforce 0).

—

3.3 RBAC (Role-Based Access Control)

Formalizado pelo NIST em 1992, o RBAC revolucionou o gerenciamento de permissões corporativas ao introduzir um intermediário conceitual: a Função (Role). Em vez de atribuir privilégios diretamente a milhares de usuários, atribui-se permissões às roles, e os usuários são associados a uma ou mais roles.

TERMINAL / bashUTF-8
+---------------------------------------------------------------------------------------------------+
|                        O FLUXO DE MAPEAMENTO DO RBAC TRADICIONAL                                  |
+---------------------------------------------------------------------------------------------------+

   [ USUÁRIOS ]                   [ ROLES / FUNÇÕES ]                     [ OPERAÇÕES / PERMISSÕES ]
   Ana Ferreira    ────────► [ Engenheiro de Redes ] ──────────► { Configurar Roteadores, Ler Logs }
   Bruno Santos    ────────► [ Operador Financeiro ] ──────────► { Emitir NF, Aprovar Pagamento }
   Carlos Lima     ────────► [ Administrador Cloud ] ──────────► { Criar Instâncias, Deletar VPCs }
  • Implementações Canônicas:

– Azure RBAC: Roles nativas (Owner, Contributor, Reader) e customizadas atreladas a escopos de Management Group, Subscription ou Resource Group.
– Kubernetes RBAC: Entidades Role (para namespaces específicos) e ClusterRole (para o cluster global), vinculadas via RoleBinding ou ClusterRoleBinding.

  • A Doença Arquitetural: “Role Explosion” (A Explosão de Papéis):

À medida que as regras de negócio se sofisticam, o RBAC entra em colapso combinatorial. Exemplo real:
– Inicial: Papel Auditor.
– Mês 3: Auditor-Financeiro e Auditor-TI.
– Mês 6: Auditor-Financeiro-SP e Auditor-Financeiro-RJ.
– Ano 1: Auditor-Financeiro-SP-Somente-Leitura-Exceto-Salarios.
Uma corporação de 2.000 funcionários frequentemente acumula mais de 5.000 roles inauditas, com privilégios orfãos e concessões cruzadas desgovernadas.

—

3.4 ABAC (Attribute-Based Access Control)

Para superar as limitações do RBAC, o ABAC (formalizado no NIST SP 800-162) calcula o acesso dinamicamente em tempo de execução através da avaliação booleana de atributos multidisciplinares:

$$\text{Decisão de Acesso } (P) = f(\text{Atributos do Sujeito}, \text{Atributos do Objeto}, \text{Ação}, \text{Contexto de Ambiente})$$

TERMINAL / bashUTF-8
+---------------------------------------------------------------------------------------------------+
|                        AS 4 DIMENSÕES DE ATRIBUTOS NO MODELO ABAC                                 |
+---------------------------------------------------------------------------------------------------+

   1. SUJEITO (Subject):       Departamento, Nível de Cargo, Certificações, Vínculo Empregatício
   2. RECURSO (Resource):      Classificação de Dados (Confidencial/Público), Proprietário, Projeto, Custo
   3. AÇÃO (Action):           Read, Write, Delete, Approve, Export, Decrypt
   4. AMBIENTE (Environment):  Endereço IP de Origem, Geolocalização, Horário Comercial, Saúde do Dispositivo (EDR)
  • Exemplo de Regra ABAC:

> “Permitir que o usuário execute a ação ExportarRelatorio sobre o recurso FolhaDePagamento SOMENTE SE o departamento do usuário for RecursosHumanos, a estação de trabalho estiver com disco criptografado por BitLocker, o IP for interno da VPN corporativa e o horário estiver entre 08:00 e 18:00 de segunda a sexta-feira.”

Com uma única regra ABAC, substitui-se dezenas de roles estáticas por uma expressão lógica contínua.

—

3.5 ReBAC (Relationship-Based Access Control) & O Paradigma Google Zanzibar

Em 2019, o Google publicou o célebre artigo de pesquisa Zanzibar: Google’s Consistent, Global Authorization System. O Zanzibar processa trilhões de verificações de autorização por dia com latência sub-missegundo e consistência global, sustentando o Google Drive, YouTube, Google Cloud Platform e Google Maps.

O ReBAC resolve o problema onde o RBAC e o ABAC falham: o controle de permissões baseado na topologia de relações e pertencimento hierárquico.

TERMINAL / bashUTF-8
+---------------------------------------------------------------------------------------------------+
|                        O GRAFO DE AUTORIZAÇÃO RELACIONAL (ReBAC)                                  |
+---------------------------------------------------------------------------------------------------+

   [ Usuário: Guilherme ]
             │
             │ membro_de
             ▼
   [ Grupo: Time-DevOps ]
             │
             │ proprietário_de
             ▼
   [ Repositório: infra-core ]
             │
             │ contém
             ▼
   [ Arquivo: terraform.tfvars ] ──► (Guilherme tem permissão de leitura por transitividade no grafo!)

Em vez de listas estáticas ou expressões abstratas, o ReBAC armazena Tuplas de Relação (Relation Tuples) no formato:

$$\langle\text{objeto}\rangle\#\langle\text{relação}\rangle@\langle\text{sujeito}\rangle$$

Exemplo no formato Zanzibar:

  • document:plano_estrategico_2026#editor@user:marcos (Marcos é editor do documento)
  • folder:diretoria#viewer@group:conselho#member (Membros do conselho podem visualizar a pasta)
  • document:plano_estrategico_2026#parent@folder:diretoria (O documento está contido na pasta)

O motor de ReBAC avalia o grafo de conectividade. Se existe um caminho dirigido válido entre o usuário e o objeto com a relação solicitada, o acesso é garantido. Implementações de código aberto modernas como OpenFGA (doado pela Auth0 à CNCF) e Ory Keto trazem o padrão Zanzibar para qualquer arquitetura corporativa.

—

4. Implementação Prática: Códigos de Engenharia e Políticas Declarativas

Abaixo apresentamos arquiteturas práticas implementando os principais padrões de autorização contemporâneos.

4.1 Exemplo 1: Authorization-as-Code com Open Policy Agent (Rego)

O Open Policy Agent (OPA) desacopla o julgamento de segurança do código-fonte. Abaixo está uma política completa em linguagem Rego que protege endpoints de transferência financeira em uma API REST:

TERMINAL / regoUTF-8
# Arquivo: authz_financeiro.rego
package app.financeiro.authz

import future.keywords.in
import future.keywords.if

# 1. Regra padrão: Acesso Negado (Deny by Default / Zero Trust)
default allow := false

# 2. Definição da regra de autorização
allow if {
    # Validar se o token do usuário está íntegro e decodificado pelo PEP
    input.identity.authenticated == true

    # Regra 1: Acesso de Leitura para Analistas e Auditores
    operacao_leitura_permitida
}

allow if {
    # Regra 2: Acesso de Transferência Financeira (Exige Quórum e Limite)
    transferencia_permitida
}

# Sub-regra de leitura
operacao_leitura_permitida if {
    input.method == "GET"
    input.identity.role in ["analista_financeiro", "auditor_compliance", "diretor_financeiro"]
}

# Sub-regra de transferência financeira (ABAC puro)
transferencia_permitida if {
    input.method == "POST"
    input.path == ["api", "v1", "transferencias"]
    input.identity.role in ["analista_financeiro", "diretor_financeiro"]

    # Atributo de Contexto: O valor não pode exceder o teto do cargo
    valor_dentro_do_limite

    # Atributo de Ambiente: Restrito a conexões originadas de faixas de IP seguras
    origem_segura

    # Atributo de Ambiente: Não permitir operações financeiras críticas fora do horário bancário
    horario_comercial_valido
}

valor_dentro_do_limite if {
    input.identity.role == "analista_financeiro"
    input.resource.valor <= 50000 # R$ 50.000,00 teto para analistas
}

valor_dentro_do_limite if {
    input.identity.role == "diretor_financeiro"
    input.resource.valor <= 1000000 # R$ 1.000.000,00 teto para diretores
}

origem_segura if {
    net.cidr_contains("10.200.0.0/16", input.environment.client_ip) # Rede interna / VPN
}

horario_comercial_valido if {
    # 0 = Domingo, 6 = Sábado
    dia_semana := time.weekday(input.environment.timestamp_ns)
    dia_semana > 0
    dia_semana < 6

    # Horário entre 08:00 e 18:00 UTC-3
    hora := time.clock(input.environment.timestamp_ns)[0]
    hora >= 8
    hora <= 18
}

4.2 Exemplo 2: ABAC Granular no AWS IAM (Políticas JSON com Tags de Sessão)

Nesta política da AWS, engenheiros só podem ligar, desligar ou alterar instâncias EC2 e buckets S3 se a tag do departamento do usuário coincidir dinamicamente com a tag do recurso:

TERMINAL / jsonUTF-8
{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "PermitirAcoesEC2SomenteSeDepartamentosForemIguais",
      "Effect": "Allow",
      "Action": [
        "ec2:StartInstances",
        "ec2:StopInstances",
        "ec2:RebootInstances",
        "ec2:ModifyInstanceAttribute"
      ],
      "Resource": "arn:aws:ec2:*:*:instance/*",
      "Condition": {
        "StringEquals": {
          "aws:ResourceTag/Department": "${aws:PrincipalTag/Department}",
          "aws:ResourceTag/Environment": "${aws:PrincipalTag/Environment}"
        },
        "Bool": {
          "aws:MultiFactorAuthPresent": "true"
        },
        "NumericLessThan": {
          "aws:CurrentTime": 1731535200
        }
      }
    },
    {
      "Sid": "NegarTerminacaoSemAprovacaoMultipla",
      "Effect": "Deny",
      "Action": "ec2:TerminateInstances",
      "Resource": "*",
      "Condition": {
        "StringNotEquals": {
          "aws:PrincipalArn": "arn:aws:iam::123456789012:role/Emergency-BreakGlass-Admin-Role"
        }
      }
    }
  ]
}

4.3 Exemplo 3: Kubernetes RBAC de Menor Privilégio (YAML)

Configuração cirúrgica para que um ServiceAccount de CI/CD faça deploy apenas de Deployments e Services em um namespace restrito, sem permissão de ler Secrets ou escalar privilégios de cluster:

TERMINAL / yamlUTF-8
# Arquivo: rbac-cicd-least-privilege.yaml
apiVersion: v1
kind: ServiceAccount
metadata:
  name: sa-cicd-pipeline
  namespace: producao-pagamentos
---
apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:
  name: role-deployer-pagamentos
  namespace: producao-pagamentos
rules:
  # Permitir manipular apenas controladores de workloads
  - apiGroups: ["apps"]
    resources: ["deployments", "statefulsets"]
    verbs: ["get", "list", "watch", "update", "patch"]
  
  # Permitir listar e atualizar services de rede
  - apiGroups: [""]
    resources: ["services"]
    verbs: ["get", "list", "update"]
    
  # Proibição explícita: secrets e configmaps NÃO entram nos verbos de leitura total
---
apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:
  name: bind-cicd-deployer
  namespace: producao-pagamentos
subjects:
  - kind: ServiceAccount
    name: sa-cicd-pipeline
    namespace: producao-pagamentos
roleRef:
  kind: Role
  name: role-deployer-pagamentos
  apiGroup: rbac.authorization.k8s.io

—

5. Matriz Comparativa Definitiva: Qual Modelo Escolher?

A escolha do modelo de autorização inadequado acarreta débitos técnicos massivos ou brechas de segurança crônicas. Utilize o guia de engenharia comparativo abaixo:

Modelo Princípio Motor Escalabilidade Latência Cenário Ideal Maior Ponto Fraco
DAC Proprietário do recurso decide permissões Baixa Ultrarrápida (<0.1ms) Sistemas de arquivos locais e desktops Ausência total de governança corporativa
MAC Kernel impõe regras por rótulos hierárquicos Média Ultrarrápida (<0.2ms) Servidores militares, bancos e enclaves SELinux Complexidade extrema de configuração
RBAC Usuários associados a papéis predefinidos Média Rápida (<1ms) Aplicações corporativas simples, ERPs e nuvens Role Explosion com regras contextuais
ABAC Decisão dinâmica por atributos e ambiente Altíssima Média (1ms a 5ms) APIs críticas, saúde (HIPAA), finanças e Zero Trust Auditoria reversa complexa (“quem acessa X?”)
ReBAC Travessia em grafo de relações (Zanzibar) Planetária Baixa (<3ms em cache) SaaS multi-tenant, Google Drive, GitHub e colaboração Exige cluster dedicado de banco de grafos
PBAC / OPA Políticas declarativas desacopladas no Git Altíssima Sub-milissegundo (<1ms em RAM) Microsserviços, Service Mesh, Kubernetes e CI/CD Requer esteira madura de Policy-as-Code

—

6. Checklist de Auditoria e Hardening de Autorização (CISO / Tech Lead)

Antes de aprovar o deploy de novas arquiteturas de dados ou microsserviços em produção, submeta a esteira aos 6 testes de fogo:

1. Teste de BOLA/IDOR em 100% dos Endpoints com ID: Validar se ao alterar parâmetros de rota (ex: /users/{id}/pedidos) com o token de outro usuário válido, a API devolve 403 Forbidden em vez de 200 OK.
2. Política Padrão de Negação (Deny by Default): Verificar se todas as tabelas de roteamento e regras OPA adotam default allow = false. Nenhuma permissão deve ser concedida implicitamente.
3. Eliminação de Wildcards () em Políticas de Nuvem: Varrer o repositório de Terraform e políticas AWS/Azure banindo declarações do tipo Action: "" ou Resource: "*" em identidades de aplicação.
4. Desacoplamento entre Token e Permissão Efetiva: Garantir que o backend consulte o banco de dados ou motor PDP para atestar o vínculo de propriedade do recurso em operações de escrita, em vez de confiar cegamente nos escopos estáticos gravados no JWT.
5. Auditoria de Segregação de Funções (SoD): Confirmar que nenhum token de CI/CD ou operador individual possui capacidade de commitar código e disparar o deploy em produção sem aprovação externa de um segundo revisor.
6. Imutabilidade e Centralização de Logs de Decisão: Assegurar que todas as decisões do PDP (tanto os Permit quanto principalmente os Deny) gerem eventos estruturados em formato JSON encaminhados em tempo real para o SIEM corporativo.

—

Conclusão: A Maturidade da Segurança Mora na Decisão de Acesso

Autenticar uma identidade é apenas o rito de passagem na porta de entrada da infraestrutura. A verdadeira maturidade de segurança de uma organização é revelada pelo que acontece a cada milissegundo quando essa identidade tenta interagir com os dados da empresa.

Migrar do modelo arcaico de roles confusas para uma arquitetura desacoplada de Authorization-as-Code (combinando o rigor da Tríade CIA ampliada, a granularidade contextual do ABAC e a elegância relacional do ReBAC) não é um preciosismo acadêmico: é a única barreira viável contra ataques modernos de movimento lateral, vazamentos massivos e sequestros de credenciais na era da nuvem distribuída.

Guilherme Nascimento ✓

Guilherme Nascimento

Especialista & Fundador

Especialista em Infraestrutura, Cloud/DevOps e Cibersegurança | +10 anos de experiência prática

Profissional com mais de uma década atuando no campo de batalha da tecnologia corporativa. Especialista em arquiteturas resilientes, automação com Docker/Kubernetes, Hardening de Active Directory, Linux avançado e observabilidade SRE. Criador do ecossistema Hora Nerd, dedicado a desmistificar a tecnologia para profissionais e estudantes.

Cloud & DevOps Active Directory Hardening Linux SysAdmin Docker & CI/CD Observabilidade SRE
HORA NERD EMPRESAS · DIAGNÓSTICO TÉCNICO

Sua empresa enfrenta desafios com este tema ou precisa destravar a infraestrutura?

Elimine gargalos de rede, problemas de lentidão em servidores, custos descontrolados de nuvem e riscos de segurança. Atuamos como especialista freelance emergencial ou consultoria técnica contínua.

Deixe seu comentário

Seu e-mail não será publicado. Campos obrigatórios estão marcados com *