PostgreSQL
 sql >> Teknologi Basis Data >  >> RDS >> PostgreSQL

Buat peran PostgreSQL 9 dengan login (pengguna) hanya untuk menjalankan fungsi

Jalankan ini terhubung ke database yang ingin Anda konfigurasi.

-- Create the user.
CREATE ROLE somebody WITH LOGIN PASSWORD '...';

-- Prevent all authenticated users from being able to use the database,
-- unless they have been explicitly granted permission.
REVOKE ALL PRIVILEGES ON DATABASE foo FROM PUBLIC;
REVOKE ALL PRIVILEGES ON ALL TABLES IN SCHEMA public FROM PUBLIC;
REVOKE ALL PRIVILEGES ON ALL FUNCTIONS IN SCHEMA public FROM PUBLIC;
REVOKE ALL PRIVILEGES ON ALL SEQUENCES IN SCHEMA public FROM PUBLIC;

-- Allow the user to only use the specified functions.
GRANT CONNECT ON DATABASE foo TO somebody;
GRANT EXECUTE ON FUNCTION return_customers(), return_time() TO somebody;

Jika Anda memiliki lebih banyak skema daripada "publik" maka Anda perlu menambahkannya ke dua REVOKE ALL PRIVILEGES ON ALL ... pernyataan.

Jangan lupa bahwa fungsinya harus dibuat dengan SECURITY DEFINER atau pengguna ini tetap tidak dapat menjalankannya, karena konten fungsi akan dijalankan dengan izin pengguna ini, bukan pengguna yang membuat fungsi tersebut.

Lihat:




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Bagaimana cara membuat migrasi Rails untuk menghapus/mengubah presisi dan skala pada desimal?

  2. Melewati variabel C ke perintah SQL

  3. Bagaimana Saya Tahu jika Cadangan PostgreSQL Saya Baik?

  4. permintaan postgresql melalui beberapa skema

  5. Cara Memantau Kinerja PostgreSQL 12 dengan OmniDB – Bagian 1