DEV Community

Mariana Ferreira
Mariana Ferreira

Posted on

5 3

PostgreSQL: como permitir acesso de leitura a apenas algumas colunas de uma tabela?

Como fornecer acesso de leitura a algumas colunas de uma tabela e impedir o acesso as demais colunas para um certo usuário?

Para exemplificar esse cenário, vou usar a base de dados Chinook e a ferramenta DBeaver para administrar a base de dados.

Primeiro, crie um usuário:



CREATE USER mariana WITH PASSWORD 'sua_senha';


Enter fullscreen mode Exit fullscreen mode

Depois, crie uma view com apenas as colunas da tabela que você deseja permitir o acesso. Nesse caso, estou criando com as colunas "EmployeeId", "LastName", "FirstName", "Title", "Email" da tabela "Employee":



CREATE VIEW employee_base_info AS SELECT "EmployeeId", "LastName", "FirstName", "Title", "Email" FROM "Employee";


Enter fullscreen mode Exit fullscreen mode

A view é como uma tabela virtual, não é uma tabela que está de fato no banco e quando é referenciada essa query é executada.

Depois, dê permissão de leitura na view para o usuário:



GRANT SELECT ON employee_base_info TO mariana;


Enter fullscreen mode Exit fullscreen mode

Então, ao conectar no banco utilizando esse usuário, temos permissão de realizar uma consulta na view:
Print da tela do Dbeaver com a query:  raw `select * from employee_base_info` endraw  e abaixo as informações da tabela

Mas não temos permissão de consultar a tabela inteira:
Print da tela do Dbeaver com a query:  raw `select * from

Tampouco permissão de update:
Print da tela do Dbeaver com a query:  raw `update

Com isso garantimos maior segurança para nosso banco de dados.

Obrigada por ler!
Se quiser saber mais, veja também a documentação do PostgreSQL.

Heroku

Build apps, not infrastructure.

Dealing with servers, hardware, and infrastructure can take up your valuable time. Discover the benefits of Heroku, the PaaS of choice for developers since 2007.

Visit Site

Top comments (0)

AWS Security LIVE!

Join us for AWS Security LIVE!

Discover the future of cloud security. Tune in live for trends, tips, and solutions from AWS and AWS Partners.

Learn More

👋 Kindness is contagious

Please leave a ❤️ or a friendly comment on this post if you found it helpful!

Okay