← Todos os artigos
Banco de Dados

Isolamento de Dados com Row-Level Security no PostgreSQL

Garanta isolamento de dados em aplicações multi-tenant

2 de leitura
Isolamento de Dados com Row-Level Security no PostgreSQL
Foto por Jan van der Wolf

Introdução ao Isolamento de Dados

O isolamento de dados é fundamental em aplicações multi-tenant, onde várias empresas ou organizações compartilham o mesmo ambiente de banco de dados. Neste contexto, é crucial garantir que cada tenant (inquilino) somente acesse seus próprios dados, sem ter visibilidade ou capacidade de manipular os dados de outros tenants.

O que é Row-Level Security?

Row-Level Security (RLS) é uma funcionalidade do PostgreSQL que permite controlar o acesso a linhas específicas de uma tabela com base em políticas de segurança definidas. Isso significa que você pode restringir quais linhas um usuário pode ver ou modificar, com base em critérios como o ID do tenant ou outras condições.

Configurando o Row-Level Security

Para configurar o RLS no PostgreSQL, você precisa seguir alguns passos:

  1. Habilitar o RLS: A funcionalidade de RLS precisa ser habilitada para cada tabela que você deseja proteger. Isso é feito com o comando ALTER TABLE tabela ENABLE ROW LEVEL SECURITY;.
  2. Criar Políticas de Segurança: As políticas de segurança são regras que definem quais linhas um usuário pode acessar. Você cria políticas com o comando CREATE POLICY e especifica as condições para leitura, inserção, atualização ou exclusão.

Exemplo Prático

Suponha que você tenha uma tabela clientes com os campos id, nome, email e tenant_id, e deseja garantir que cada tenant somente veja os clientes que pertencem a ele.

```sql CREATE TABLE clientes ( id SERIAL PRIMARY KEY, nome VARCHAR(255), email VARCHAR(255), tenant_id INTEGER );

ALTER TABLE clientes ENABLE ROW LEVEL SECURITY;

CREATE POLICY clientes_select_policy ON clientes FOR SELECT TO public USING (tenant_id = current_user_id()); ```

Neste exemplo, current_user_id() é uma função que retorna o ID do tenant atual. A política clientes_select_policy restringe a leitura da tabela clientes para somente as linhas onde o tenant_id corresponde ao ID do usuário atual.

Conclusão

O Row-Level Security no PostgreSQL é uma ferramenta poderosa para garantir o isolamento de dados em aplicações multi-tenant. Ao configurar políticas de segurança para controlar o acesso a linhas específicas de uma tabela, você pode proteger os dados de seus clientes e manter a integridade e a confidencialidade dos dados.

Fique por dentro das novidades

Receba as principais notícias do DigitalTech por e-mail ou WhatsApp.

Você poderá cancelar a inscrição quando desejar.