PostgreSQL- "PUBLIC"역할은 누구 또는 무엇입니까?


11

내가 찾고 있었어요 information_schema.role_table_grants내가봤을 때 publicgrantee열, 그럼 난에 체크 해봤 information_schema.enabled_roles지만이 role_name존재하지 않습니다.

=> public역할 은 누구 또는 무엇 입니까?

답변:


9

매뉴얼에서 바로 :

키워드 PUBLIC은 나중에 작성 될 수있는 역할을 포함하여 모든 역할에 권한이 부여됨을 나타냅니다. PUBLIC은 항상 모든 역할을 포함하는 암시 적으로 정의 된 그룹으로 생각할 수 있습니다. 특정 역할에는 직접 부여 된 권한, 현재 구성원 인 역할에 부여 된 권한 및 PUBLIC에 부여 된 권한의 합계가 있습니다.


7

이것은 사실이지만 전체 그림이 아닙니다. Public은 다른 역할이 속한 암시 적 역할의 역할을하며 상속 된 권한이 항상 반영 및보고되지는 않습니다.

기본적으로 공용 스키마에 대한 작성 권한을 부여합니다. 읽기 전용 사용자를 작성하기위한 다른 모든 올바른 단계를 제거하지 않으면 해당 사용자는 공용 스키마에서 새 오브젝트를 작성할 수 있으며 소유권으로 인해 데이터를 넣을 수 있습니다. 이것을 막기 위해

REVOKE ALL ON SCHEMA public FROM PUBLIC;

마찬가지로 데이터베이스 수준에 대한 권한을 부여하여 사용을 제거합니다.

REVOKE ALL ON DATABASE all_database FROM PUBLIC;

여기에 좋은 기사가 있습니다 : https://wiki.postgresql.org/images/d/d1/Managing_rights_in_postgresql.pdf

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.