Saltar al contenido
Docs

Esta página aún no está traducida — estás leyendo la versión en portugués. Ver en portugués

Candidato a GAActualizado el 2026-09-08

Tutorial: configurar segurança por linha (RLS) num dashboard

Fazer duas pessoas abrirem o mesmo painel e verem linhas diferentes, com RLS por atributo do membro (fail-closed).

En esta página (8)

RLS faz duas pessoas abrirem o mesmo dashboard e verem linhas diferentes — o gerente de Campinas vê Campinas, a de Sorocaba vê Sorocaba. Este tutorial mostra o caminho prático do ponto de vista do dashboard. A referência conceitual completa (estática × ABAC, planos, tetos, troubleshooting) está em Segurança por linha (RLS / ABAC).

Workspace do exemplo: Comércio Aurora Ltda (aurora), dashboard "Vendas por filial".

Maturidade

A lógica de RLS (rowFilter v3, fail-closed) é GA-candidato, coberta por testes. O isolamento entre clientes provado em produção (IAM em nuvem real) é pendente. A RLS é aplicada na fonte única de leitura segura e respeitada pela IA e pelos envios.

Duas formas de RLS#

  • Estática {column, values} — fixa os valores permitidos. Simples, mas exige um grant por pessoa; não escala além de poucas dezenas.
  • Por atributo do membro (ABAC) {column, memberAttribute} — o grant diz de onde vem o valor; o valor mora no atributo do membro. Um grant serve centenas de pessoas. É o recomendado.

Pré-requisitos#

  • Plano com RLS (a partir do Growth — ver Planos).
  • Papel admin/owner para configurar grants e atributos.
  • Dashboard publicado sobre um modelo com a coluna de recorte (ex.: vendas.filial).

Passo a passo (ABAC, recomendado)#

  1. Defina o atributo no membro

    Em Usuários & permissões, dê ao membro o atributo filial (ex.: "Campinas"). Ele vive no perfil do membro, sem coluna nova no banco. Ver Usuários, grupos e permissões.

  2. Crie o grant no dashboard

    No painel de compartilhamento/segurança do dashboard, adicione o grant por atributo: {column: "filial", memberAttribute: "filial"}.

  3. Publique

    A RLS passa a valer na leitura segura do dashboard e no envio de relatórios.

  4. Teste como cada perfil

    Abra como o gerente de Campinas (vê só Campinas) e como o de Sorocaba (vê só Sorocaba).

  5. Teste o fail-closed

    Abra como alguém SEM o atributo filial: deve ver zero linhas — nunca "tudo".

Resultado esperado#

  • Campinas vê só Campinas; Sorocaba, só Sorocaba.
  • Membro sem o atributo → denyAll (nenhuma linha), nunca "sem filtro".
  • Multi-valor (ex.: regiao = ["Sul", "Sudeste"]) vira cláusula IN.

RLS atravessa export, envios e IA#

Este é o ponto que muita gente esquece — e que o ingestia.bi garante:

  • Exportações (XLSX/CSV/PDF) leem o snapshot com a RLS do solicitante; o PDF sob demanda usa um token efêmero que carrega a RLS da sessão (ver Exportação e distribuição).
  • Assinaturas por e-mail/WhatsApp aplicam RLS por destinatário (o filtro da assinatura soma com a RLS, nunca amplia).
  • A IA lê a mesma visão segura da tela: o Q&A e os insights nunca veem mais do que quem perguntou vê (ver Q&A do dashboard e Privacidade, egress e orçamento).

Limites e ressalvas#

  • RLS filtra linhas; para esconder colunas sensíveis use a permissão viewPII e a governança de PII (ortogonal à RLS).
  • Tetos por membro: até 20 atributos, chave ≤ 60 e valor ≤ 200 caracteres, até 50 valores por atributo.
  • Isolamento entre clientes em produção (IAM real) é pendente — o desenho é fail-closed, mas a certificação de nuvem não ocorreu hoje.

Erros comuns#

SintomaCausa provávelO que fazer
Pessoa vê zero linhasatributo ausente/vazio (denyAll)defina o atributo no perfil
Pessoa vê linhas demaisgrant não configurado no dashboardcrie o grant {column, memberAttribute}
Atributo "não pega"diferença de caixa/typoa chave é normalizada; confira o nome
RLS não aplica no e-mailassinatura sem RLS por destinatárioconfigure o filtro por destinatário

Relacionados#


Última revisão: 2026-09-08.

Enlaces relacionados