개요
PostgreSQL에서 사용자 목록과 권한을 확인하는 방법을 정리해 둔다.
psql 메타 명령어
psql 메타 명령어 \du는 사용자명, 사용자에게 부여된 권한과 소속 그룹 정보를 확인할 수 있다.
\du
출력에서 확인할 수 있는 기본 권한(role) 목록은 다음과 같다.
권한 | 설명 |
SUPERUSER | 데이터베이스에 대한 모든 작업을 허용하는 관리자 권한 |
CREATEDB | 데이터베이스 생성 가능 |
CREATEROLE | 신규 역할 생성 가능 |
REPLICATION | 데이터베이스 복제를 위한 역할. 꽤 높은 권한을 가지고 있어 복제 용도로만 사용하는 것을 권장한다. |
BYPASSRLS | Row 수준 보안 정책 통과 가능. 테이블 덤프 등의 작업 제한용 |
SQL
데이터베이스 사용자에 대한 정보를 저장하는 PG_USER 또는 PG_SHADOW 등을 조회하여 확인할 수 있다.
SELECT * FROM PG_USER;
SELECT * fROM PG_SHADOW;
**Query #1**
SELECT * FROM PG_USER;
| usename | usesysid | usecreatedb | usesuper | userepl | usebypassrls | passwd | valuntil | useconfig |
| ------- | -------- | ----------- | -------- | ------- | ------------ | -------- | -------- | --------- |
| test | 10 | true | true | true | true | ******** | | |
---
**Query #2**
SELECT * fROM PG_SHADOW;
| usename | usesysid | usecreatedb | usesuper | userepl | usebypassrls | passwd | valuntil | useconfig |
| ------- | -------- | ----------- | -------- | ------- | ------------ | ------ | -------- | --------- |
| test | 10 | true | true | true | true | | | |
두 테이블, 뷰의 컬럼은 아래와 같다.
컬럼 | 설명 |
usename | 사용자 이름 |
usesysid | 사용자 ID |
usecreatedb | 데이터베이스 생성 가능 여부 |
usesuper | superuser 여부 |
userepl | 스트리밍 복제, 시스템 백업 모드 설정 가능 여부 |
usebypassrls | row 수준 보안 정책 우회 가능 여부 |
passwd | 암호화된 비밀번호 또는 마스킹 처리된 문자열 출력 |
valuntil |
비밀번호 만료일 |
useconfig | 런타임 구성 변수에 대한 세션 기본값 |
참고 문서
https://postgresql.kr/docs/10/sql-createrole.html
https://www.postgresql.org/docs/current/view-pg-user.html