Menyiapkan pengguna hanya-baca di PostgreSQL

Tutorial ini menunjukkan cara mengatur pengguna read-only di PostgreSQL untuk Redash.







Hal pertama yang Anda lihat dalam dokumentasi kami adalah saran untuk mengonfigurasi sumber data untuk pengguna hanya-baca. Kami merekomendasikan ini karena yang kami maksud adalah Redash untuk visualisasi data. Itu tidak dibangun pada tindakan INSERT , UPDATE atau DELETE .







Karena Redash mendukung lebih dari 40 sumber data dan API berbasis JSON dalam jumlah yang tidak terbatas, aplikasi tidak dapat secara langsung mencegah pengguna menjalankan kueri non-SELECT. Dengan melakukan ini, Anda dapat melindungi diri Anda dari pengguna Redash agar tidak menjalankan pernyataan DDL yang berbahaya dengan mengonfigurasi pengguna hanya-baca di tingkat database.







PostgreSQL adalah salah satu sumber data kami yang paling populer. Artikel ini memberikan contoh konfigurasi akses hanya-baca ke sumber data Postgres mana pun, termasuk Amazon Redshift dan RDS.







Artikel ini sebagian besar ditulis atas dasar posting yang sangat baik Amazon AWS Blog Tentang izin Postgres.







Gambaran



Sebelum memulai, saya membuat skema database baru bernama myapp , milik pengguna bernama app-admin . Skema ini mencakup tabel untuk Karyawan , Pekerjaan, dan Pelanggan yang diisi dengan data dummy. Saya mengikuti langkah-langkah ini:







  1. Membuat peran baru bernama 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;
      
      











Mengembalikan kesalahan izin karena peran hanya-baca hanya dapat mengakses kolom tertentu.







SELECT id, name FROM myapp.customers;
      
      











Menampilkan daftar lengkap klien karena kami hanya meminta kolom hanya-baca untuk pengguna.







Kesimpulan



Data adalah salah satu aset bisnis terpenting Anda. Redash merekomendasikan agar Anda menggunakan langkah-langkah keamanan untuk database Anda untuk melindunginya. Mengambil langkah-langkah ini memastikan bahwa pengguna internal Anda dapat menyiapkan informasi yang berguna sambil menjaga informasi sensitif tetap aman dari kesalahan kepatuhan atau pengintaian.








All Articles