Configurando usuários somente leitura no PostgreSQL

Este tutorial mostra como configurar usuários somente leitura no PostgreSQL para Redash.







A primeira coisa que você vê em nossa documentação é um conselho para configurar fontes de dados para usuários somente leitura. Recomendamos isso porque entendemos Redash para visualização de dados. Não se baseia em ações INSERT , UPDATE ou DELETE .







Como o Redash oferece suporte a mais de 40 fontes de dados e um número ilimitado de APIs baseadas em JSON, o aplicativo não pode impedir diretamente os usuários de executarem consultas diferentes de SELECT. Isso permite que você se proteja da execução de instruções DDL maliciosas por usuários Redash, configurando usuários somente leitura no nível do banco de dados.







PostgreSQL é uma de nossas fontes de dados mais populares. Este artigo fornece um exemplo de configuração de acesso somente leitura a qualquer fonte de dados Postgres, incluindo Amazon Redshift e RDS.







Este artigo foi amplamente escrito com base em uma excelente postagem no blog sobre permissões do Amazon AWS no Postgres.







visão global



Antes de começar, criei um novo esquema de banco de dados chamado myapp , de propriedade de um usuário chamado app-admin . Este esquema inclui tabelas para Funcionários , Cargos e Clientes preenchidas com dados fictícios. Eu segui estas etapas:







  1. Criou uma nova função chamada myapp-readonly .
  2. SELECT Employees Jobs. SELECT customers, .
  3. redash myapp-readonly.
  4. Redash redash.


, , Amazon PUBLIC :







public . , , , - public .







. , myapp-readonly . . ( , Redash ).







1.



CREATE ROLE myapp_readonly;
GRANT CONNECT ON DATABASE defaultdb TO myapp_readonly;
GRANT USAGE ON SCHEMA myapp TO myapp_readonly;
      
      





Amazon. GRANT USAGE , . PostgreSQL:







[USAGE] , ( , ). , «» .







2.



GRANT SELECT ON TABLE "myapp"."employees" TO myapp_readonly;
GRANT SELECT ON TABLE "myapp"."jobs" TO myapp_readonly;
GRANT SELECT (id, name) ON TABLE myapp.customers TO myapp_readonly;
      
      





employee jobs .







myapp_readonly . . . , Redash.







, Redash . *SELECT FROM customers**, . .







3. Redash .



CREATE USER redash WITH PASSWORD 'secret';
GRANT myapp_readonly TO redash;
      
      





redash — , Redash. secret .







4. Postgres



Redash . , , .













, , .







SELECT * FROM myapp.employees
      
      











, .







INSERT INTO myapp.employees (name) VALUES ('Hal')
      
      











. myapp_readonly INSERTS. Redash INSERT!







, customers:







SELECT * FROM myapp.customers;
      
      











Retorna um erro de permissão porque a função somente leitura pode acessar apenas certas colunas.







SELECT id, name FROM myapp.customers;
      
      











Retorna uma lista completa de clientes, já que solicitamos apenas colunas somente leitura para o usuário.







Conclusão



Os dados são um dos ativos de negócios mais importantes. A Redash recomenda que você aproveite as medidas de segurança de seu banco de dados para mantê-lo seguro. Essas etapas garantem que seus usuários internos possam preparar informações úteis, enquanto mantém as informações confidenciais protegidas de erros de conformidade ou olhos curiosos.








All Articles