PostgreSQL
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> PostgreSQL

Tạo vai trò PostgreSQL 9 với đăng nhập (người dùng) chỉ để thực thi các chức năng

Thực thi điều này được kết nối với cơ sở dữ liệu bạn muốn định cấu hình.

-- 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;

Nếu bạn có nhiều lược đồ hơn "công khai" thì bạn sẽ cần thêm các lược đồ đó vào hai REVOKE ALL PRIVILEGES ON ALL ... tuyên bố.

Đừng quên rằng các chức năng phải được tạo bằng SECURITY DEFINER hoặc người dùng này sẽ vẫn không thể thực thi chúng, vì nội dung của hàm sẽ được thực thi với quyền của người dùng này, thay vì người dùng đã tạo ra hàm.

Xem:




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Nhận được lỗi xác thực không thành công với postgresql từ dòng lệnh

  2. Chuyển đổi tất cả các bản ghi trong postgres thành Titlecase, chữ cái đầu tiên viết hoa

  3. Giảm thông báo làm phiền trong plpgsql

  4. SQL giải thích kế hoạch:Materialize là gì?

  5. PostgisDialect so với PostgreSQLDialect hay cả hai?