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';
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";
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;
Então, ao conectar no banco utilizando esse usuário, temos permissão de realizar uma consulta na view:
Mas não temos permissão de consultar a tabela inteira:
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.
Top comments (0)