Dieses Tutorial zeigt, wie Sie schreibgeschützte Benutzer in PostgreSQL for Redash einrichten.
Das erste, was Sie in unserer Dokumentation sehen, sind Hinweise zum Konfigurieren von Datenquellen für schreibgeschützte Benutzer. Wir empfehlen dies, weil wir Redash für die Datenvisualisierung gemeint haben. Es basiert nicht auf INSERT- , UPDATE- oder DELETE- Aktionen .
Da Redash über 40 Datenquellen und eine unbegrenzte Anzahl von JSON-basierten APIs unterstützt, kann die Anwendung Benutzer nicht direkt daran hindern, andere Abfragen als SELECT auszuführen. Auf diese Weise können Sie sich vor Redash-Benutzern vor dem Ausführen bösartiger DDL-Anweisungen schützen, indem Sie schreibgeschützte Benutzer auf Datenbankebene konfigurieren.
PostgreSQL ist eine unserer beliebtesten Datenquellen. Dieser Artikel enthält ein Beispiel für die Konfiguration des schreibgeschützten Zugriffs auf alle Postgres-Datenquellen, einschließlich Amazon Redshift und RDS.
Dieser Artikel wurde größtenteils auf der Grundlage eines hervorragenden Beitrags verfasst. Amazon AWS Blog Über Berechtigungen Postgres.
Überblick
Bevor ich anfing, erstellte ich ein neues Datenbankschema namens myapp , das einem Benutzer namens app-admin gehört . Dieses Schema enthält Tabellen für Mitarbeiter , Jobs und Kunden, die mit Dummy-Daten gefüllt sind. Ich habe diese Schritte befolgt:
- Erstellt eine neue Rolle mit dem Namen myapp-readonly .
- SELECT Employees Jobs. SELECT customers, .
- redash myapp-readonly.
- 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;

Gibt einen Berechtigungsfehler zurück, da die schreibgeschützte Rolle nur auf bestimmte Spalten zugreifen kann.
SELECT id, name FROM myapp.customers;

Gibt eine vollständige Liste der Clients zurück, da nur schreibgeschützte Spalten für den Benutzer angefordert wurden.
Fazit
Daten sind eines Ihrer wichtigsten Geschäftsgüter. Redash empfiehlt, dass Sie Sicherheitsmaßnahmen für Ihre Datenbank verwenden, um sie zu schützen. Durch diese Schritte wird sichergestellt, dass Ihre internen Benutzer nützliche Informationen vorbereiten und gleichzeitig vertrauliche Informationen vor Compliance-Fehlern oder neugierigen Blicken schützen können.