Configurer des utilisateurs en lecture seule dans PostgreSQL

Ce tutoriel montre comment configurer des utilisateurs en lecture seule dans PostgreSQL pour Redash.







La première chose que vous voyez dans notre documentation est des conseils pour configurer les sources de données pour les utilisateurs en lecture seule. Nous le recommandons car nous parlions de Redash pour la visualisation des données. Il n'est pas construit sur les actions INSERT , UPDATE ou DELETE .







Étant donné que Redash prend en charge plus de 40 sources de données et un nombre illimité d'API basées sur JSON, l'application ne peut pas directement empêcher les utilisateurs d'exécuter des requêtes autres que SELECT. Cela vous permet de vous protéger contre l'exécution d'instructions DDL malveillantes par les utilisateurs Redash en configurant des utilisateurs en lecture seule au niveau de la base de données.







PostgreSQL est l'une de nos sources de données les plus populaires. Cet article fournit un exemple de configuration de l'accès en lecture seule à toute source de données Postgres, y compris Amazon Redshift et RDS.







Cet article est en grande partie rédigé sur la base d'un excellent article sur Amazon AWS Blog About permissions Postgres.







Aperçu



Avant de commencer, j'ai créé un nouveau schéma de base de données appelé myapp , appartenant à un utilisateur nommé app-admin . Ce schéma comprend des tables pour les employés , les emplois et les clients remplies de données factices. J'ai suivi ces étapes:







  1. Création d'un nouveau rôle nommé 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;
      
      











Renvoie une erreur d'autorisation car le rôle en lecture seule ne peut accéder qu'à certaines colonnes.







SELECT id, name FROM myapp.customers;
      
      











Renvoie une liste complète des clients car nous n'avons demandé que des colonnes en lecture seule pour l'utilisateur.







Conclusion



Les données sont l'un des atouts les plus importants de votre entreprise. Redash vous recommande de profiter des mesures de sécurité de votre base de données pour la protéger. Ces étapes permettent à vos utilisateurs internes de préparer des informations utiles tout en protégeant les informations sensibles des erreurs de conformité ou des regards indiscrets.








All Articles