PostgreSQL - Ai hoặc vai trò của PUBLIC là gì?


11

Tôi đã nhìn vào information_schema.role_table_grantskhi tôi thấy publictrong granteecột, sau đó tôi đã kiểm tra information_schema.enabled_rolesnhưng điều này role_namekhông tồn tại.

=> Ai hoặc publicvai trò là gì?

Câu trả lời:


9

Ngay từ hướng dẫn:

Từ khóa PUBLIC chỉ ra rằng các đặc quyền sẽ được cấp cho tất cả các vai trò, bao gồm cả các vai trò có thể được tạo sau này. PUBLIC có thể được coi là một nhóm được xác định ngầm luôn bao gồm tất cả các vai trò. Bất kỳ vai trò cụ thể nào cũng sẽ có tổng số đặc quyền được cấp trực tiếp cho nó, đặc quyền được cấp cho bất kỳ vai trò nào hiện tại là thành viên và đặc quyền được cấp cho PUBLIC.


7

Trong khi điều này là sự thật thì nó không phải là bức tranh đầy đủ. Công chúng cũng hoạt động như một vai trò ngầm định mà các vai trò khác thuộc về và có quyền riêng không phải luôn luôn được phản ánh và báo cáo được thừa kế.

Theo mặc định, nó cho phép tạo ra trên lược đồ công cộng. khi bạn không xóa tất cả các bước chính xác khác để tạo kết quả người dùng chỉ đọc, người dùng đó cũng có thể tạo các đối tượng mới trong lược đồ công cộng và sau đó do quyền sở hữu đưa dữ liệu vào đó. Để ngăn chặn điều này

REVOKE ALL ON SCHEMA public FROM PUBLIC;

Tương tự, nó cũng cho phép ở mức cơ sở dữ liệu, để loại bỏ việc sử dụng

REVOKE ALL ON DATABASE all_database FROM PUBLIC;

Bài viết hay ở đây: https://wiki.postgresql.org/images/d/d1/Managing_rights_in_postgresql.pdf

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.