권한 부여
2025. 5. 1. 11:20ㆍDB/Postgres
반응형
✅ 회사 내부 시스템에서 사용되는 PostgreSQL
- DB 관리자 (DBA): admin_user – 전체 권한 보유
- 웹 애플리케이션: app_user – 특정 데이터베이스에만 SELECT/INSERT 권한
- 백업 전용 계정: backup_user – 읽기 전용 권한 (SELECT만)
- 보고서 생성 계정: report_user – SELECT + VIEW 권한
🔹 1. 유저 생성
-- 관리자 계정
CREATE ROLE admin_user WITH LOGIN PASSWORD 'secure_admin_pass';
ALTER ROLE admin_user WITH SUPERUSER;
-- 웹 애플리케이션 계정
CREATE ROLE app_user WITH LOGIN PASSWORD 'secure_app_pass';
-- 백업용 계정
CREATE ROLE backup_user WITH LOGIN PASSWORD 'secure_backup_pass';
-- 보고서용 계정
CREATE ROLE report_user WITH LOGIN PASSWORD 'secure_report_pass';
🔹 2. test DB로 접속
postgres=# \c test
psql (16.8 (Ubuntu 16.8-1.pgdg22.04+1), server 14.17 (Ubuntu 14.17-0ubuntu0.22.04.1))
You are now connected to database "test" as user "postgres".
test=#
🔹3. 권한 부여
app_user: INSERT + SELECT만 가능
GRANT CONNECT ON DATABASE test TO app_user;
👉 app_user가 test 데이터베이스에 접속할 수 있도록 접속 권한 부여.
GRANT USAGE ON SCHEMA public TO app_user;
👉 public 스키마 안의 객체(테이블 등)를 이용할 수 있는 권한 부여 (접속은 가능하나, 개별 객체에 대한 권한은 별도로 필요함).
GRANT SELECT, INSERT ON sales_data TO app_user;
👉 sales_data 테이블에 대해 읽기(SELECT) 와 데이터 추가(INSERT) 권한을 부여.
❌ UPDATE, DELETE는 허용되지 않음
2. backup_user: SELECT만 가능 (백업 전용)
GRANT CONNECT ON DATABASE test TO backup_user;
GRANT USAGE ON SCHEMA public TO backup_user;
GRANT SELECT ON sales_data TO backup_user;
백업 용도로 읽기 전용 권한만 부여.
❌ INSERT, UPDATE, DELETE 권한 없음.
✔️ SELECT만 가능하므로 읽기 및 덤프(백업)에 사용 가능.
3. report_user: SELECT + VIEW 생성 가능
GRANT CONNECT ON DATABASE test TO report_user;
GRANT USAGE ON SCHEMA public TO report_user;
GRANT SELECT ON sales_data TO report_user;
GRANT CREATE ON SCHEMA public TO report_user;
✔️ SELECT로 데이터 조회 가능.
✔️ CREATE ON SCHEMA 덕분에 report_user는 스키마 안에 VIEW 또는 TABLE 생성 가능.
예: 보고서용 뷰(view)를 만들어 저장할 수 있음.
❌ 하지만 TABLE에 직접 INSERT하거나 DELETE하는 권한은 없음.
🔹 4. 권한 확인 명령어
-- 유저 확인
\du
-- 테이블 권한 확인
\z sales_data
반응형
'DBMS > Postgres' 카테고리의 다른 글
VirtualBox Ubuntu VM postgres 설 (0) | 2025.04.21 |
---|---|
PostgreSQL을 WSL2 + Ubuntu 환경 구성 (0) | 2025.04.21 |
B-tree 인덱스 vs Hash 인덱스 (0) | 2025.04.21 |
인덱스(Index) 사용해 쿼리 성능 올리기 B-tree (Balanced Tree) (0) | 2025.04.21 |
특정 유저에게 생성할 모든 테이블 권한 부여 (0) | 2025.04.21 |