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

Truy xuất tất cả các đặc quyền đối tượng cho vai trò cụ thể

Không có chế độ xem nào như vậy ngoài hộp, nhưng dữ liệu cần thiết để tạo nó nằm trong danh mục hệ thống:

http://www.postgresql.org/docs/current/static/catalogs.html

Ví dụ:có một relacl trường trong pg_class :

select oid::regclass, relacl from pg_class;

Có các trường tương tự trong các danh mục khác, cụ thể là typacl trong pg_typeproacl trong pg_proc .

Có lẽ bạn sẽ muốn sử dụng thêm hai danh mục, đó là pg_authid để biết vai trò nào có đặc quyền người dùng cấp cao và pg_auth_members để biết ai có vai trò gì.

(pg_default_acl chỉ được sử dụng trong quá trình tạo đối tượng, vì vậy không hữu ích.)

Có một số chức năng bên trong liên quan đến aclitem có thể hữu ích trong việc tạo chế độ xem. Bạn có thể liệt kê chúng trong psql như vậy:

\df+ *acl*

Cụ thể là aclexplode() . Ví dụ sau hy vọng sẽ đủ để giúp bạn bắt đầu:

select oid::regclass,
       (aclexplode(relacl)).grantor,
       (aclexplode(relacl)).grantee,
       (aclexplode(relacl)).privilege_type,
       (aclexplode(relacl)).is_grantable
from pg_class
where relacl is not null;

Nó có thể được tối ưu hóa bằng cách mở rộng các hàng acl trước, ví dụ:

select oid::regclass,
       aclitem.grantee
from (select oid, aclexplode(relacl) as aclitem from pg_class) sub

Nó sẽ đưa bạn đến thẳng kết quả mong muốn.

Trong chừng mực mà tôi biết, thì điều đó cũng tốt bằng việc sử dụng các công cụ tích hợp sẵn. (Đương nhiên, bạn có thể viết nhóm toán tử của riêng mình bằng C nếu bạn muốn cố gắng tối ưu hóa điều này hơn nữa.)

Đối với các câu hỏi bổ sung của bạn, tôi e rằng chúng chỉ có thể được trả lời bởi một số ít người trên thế giới, hay còn gọi là chính các nhà phát triển cốt lõi. Họ tham gia vào danh sách tin tặc pg thường xuyên hơn họ ở đây.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Lập chỉ mục ando:Chỉ mục GIN

  2. Chia tỷ lệ theo chiều dọc PostgreSQL

  3. Trả về các giá trị không phải dạng số từ cột cơ sở dữ liệu PostgreSQL

  4. Rownum trong postgresql

  5. postgreSQL - trong so với bất kỳ