안녕하세요.
postgres 보안설정에 대해서 확인중에 막히는 부분이 있어 질문 드립니다.
기본적으로 superuser가 아닌 일반 사용자도 pg_ 로 시작되는 시스템테이블에 접근이 가능한거 같은데
접근을 못 하게끔 제어할 수 있는 방법이 있나요??
그리고 system catalog table 에 대한 접근정책을 확인 할수 있는 테이블은 어떤건지 궁굼합니다.
수고하세요.
pg_ 로 시작하는 시스템 카탈로그는 pg_catalog 라는 스키마에 모두 들어있습니다.
그럼 pg_catalog 스키마의 사용 권한을 막으면 되겠죠.
그런데, 일반사용자가 그 스키마를 사용하지 못하도록 한다면,
아마 아무런 작업도 할 수 없을 것 같네요.
pg_catalog 안에 있는 꽤 많은 객체들(테이블, 뷰, 자료형, 함수 ...)을 사용해야 자신의 작업도 진행할 수 있기 때문입니다.
아울러 이전 접근 권한 정보는
grant와 revoke로 사용 권한을 세세한게 지정할 수 있고,
그 정보는 각각의 시스템 카탈로그 테이블에 저장됩니다.
예를 들어 일반적인 객체는 pg_class 에 있을 것이고, 데이터베이스는 pg_database에 스키마는 pg_namespace 이런식으로 있습니다.
보안 문제 때문에 사용을 못하게 하고 싶다면, pg_hba.conf에서 제어하는 것이 타당해보입니다.
아에 A사용자는 A데이터베이스외에 다른 데이터베이스는 사용할 수 없다는 식의 접근제어가 타당해보입니다.