728x90
※ PostgreSQL: Configuring Database-Level Access Privileges.
안녕하세요. 듀스트림입니다.
일하다 갑자기 슥 받은 질문이 있었는데, 아래 그림의 빨간 네모에 들어간 값이 뭘 의미하냐는 질문을 받았었습니다.

질문에 대한 대답은 "\l에서 보이는 Access privileges는 데이터베이스 레벨에서 설정된 접근 권한을 의미합니다."입니다.
그래서 하는 오늘의 포스팅은 Database-level Access privileges에 관한 내용입니다.
1. Access privileges?
Access privileges 컬럼에 표시되는 값은 GRANT를 통해 부여된 권한 리스트입니다.
▸ 의미는 아래와 같습니다:
rolename=CTc/grantor
- rolename: 권한을 받은 사용자 또는 그룹(role).
- CTc: 권한 종류 (알파벳 한 글자).
- grantor: 권한을 부여한 사용자.
"=c/postgres"의 의미는 모든 사용자에게 허용되었다는 의미입니다.
최초 데이터베이스 생성 시 꼭 아래 명령을 수행해 주시기 바랍니다.
-- 최초 인스턴스 생성시
REVOKE ALL ON DATABASE template1 FROM PUBLIC;
-- 최초 데이터베이스 생성시
REVOKE ALL ON DATABASE db_name FROM PUBLIC;
▸ 데이터베이스 레벨에서 설정 가능한 권한은 다음과 같습니다:
| 표시 | 권한 | 설명 |
| C | CREATE | 데이터베이스 안에서 새로운 스키마를 만들 수 있음 |
| T | TEMP | 임시 테이블을 만들 수 있음 |
| c | CONNECT | 해당 데이터베이스에 접속할 수 있음 |
| CTc | ALL | 위 모든 권한을 의미 |
rolename=c*/grantor에서 *는 "WITH GRANT OPTION"을 의미합니다.
해당 권한을 다른 사용자에게 재부여할 수 있는 권한(grant option)이 포함되어 있다는 뜻입니다.
2. 설정 방법
▸ 권한 부여 (GRANT)
-- 특정 사용자에게 connect 권한 부여
GRANT CONNECT ON DATABASE db_name TO user_name;
-- 특정 사용자에게 schema 생성 권한 부여
GRANT CREATE ON DATABASE db_name TO user_name;
-- 특정 사용자에게 temp 테이블 생성 권한 부여
GRANT TEMP ON DATABASE db_name TO user_name;
-- 모든 권한을 한 번에 부여
GRANT ALL ON DATABASE db_name TO user_name;
▸ 권한 회수 (REVOKE)
-- 특정 사용자에게 connect 권한 회수
REVOKE CONNECT ON DATABASE db_name FROM user_name;
-- 특정 사용자에게 schema 생성 권한 회수
REVOKE CREATE ON DATABASE db_name FROM user_name;
-- 특정 사용자에게 temp 테이블 생성 권한 회수
REVOKE TEMP ON DATABASE db_name FROM user_name;
-- 모든 권한을 한 번에 회수
REVOKE ALL ON DATABASE db_name FROM user_name;
3. 테스트 예시
▸ test 데이터베이스에 대한 test_user 계정의 권한이 아무 것도 없는 상태

▸ 접근 권한 부여

※ 다른 권한이 있어도 CONNECT 권한이 없으면 의미 없습니다.
권한은 꼭 필요한 범위 내에서만 부여하는 게 사고를 예방하는 지름길입니다.
오늘은 여기까지~
728x90
'PostgreSQL' 카테고리의 다른 글
| PostgreSQL: LIKE vs ILIKE (0) | 2025.09.12 |
|---|---|
| PostgreSQL: 인덱스 - 연산자 클래스 (0) | 2025.09.10 |
| PostgreSQL: DBMS 성능 튜닝 (0) | 2025.09.02 |
| PostgreSQL 쿼리 튜닝: 인덱스, LATERAL 사용 (1) | 2025.09.01 |
| PostgreSQL: work_mem 최적화 (0) | 2025.08.07 |