Segurança em nível de linha (RLS)
Recurso de bancos de dados que limita, linha por linha, quais registros cada usuário pode ver ou alterar numa tabela; do inglês row level security.
RLS vem do inglês row level security, segurança em nível de linha. É um recurso de banco de dados que decide, para cada linha de uma tabela, quem pode ver ou mexer nela.
Imagine a sala de correspondência de um prédio. Todas as cartas ficam no mesmo armário, mas cada morador só pode abrir o próprio escaninho. O porteiro não precisa de um armário por apartamento; basta a regra “cada um vê só o que é seu”. O RLS faz isso dentro de uma tabela: os pedidos de todos os clientes ficam juntos, mas cada cliente só enxerga as linhas que são dele.
Sem RLS, a lógica costuma ser tudo ou nada. A documentação do PostgreSQL, um banco de dados muito usado, explica: por padrão, quem tem permissão para acessar uma tabela vê todas as linhas dela. Com o RLS ligado, cada leitura ou alteração precisa passar por uma regra (a “política”). E, se o RLS for ligado sem nenhuma política escrita, o padrão é negar: ninguém vê nem altera nada, com algumas exceções técnicas, como o dono da tabela, que normalmente não está sujeito a essas regras.
Por que isso aparece tanto nas conversas hoje? Muitos aplicativos, inclusive os feitos com vibe coding, deixam o navegador do usuário conversar direto com o banco por meio de uma API. Nesses casos, a regra “cada um só vê o seu” precisa estar no próprio banco. Esquecer de configurar o RLS pode significar deixar o armário inteiro aberto, com dados de clientes à mostra, um problema de segurança e também de LGPD.