PostgreSQL은 role(user와 group 역할을 모두 수행)과 권한(객체에 부여되는 권한)을 통해 접근 제어를 관리합니다. 이 시스템은 누가 연결할 수 있고 무엇을 할 수 있는지 제어하며 — 데이터베이스 보안의 기본입니다.
role — user와 group의 통합
-- role은 user(로그인 가능)이거나 group(권한의 모음)일 수 있음
CREATE ROLE app_user WITH LOGIN PASSWORD 'secret'; -- 로그인 role ("user")
CREATE ROLE readonly; -- group role (로그인 불가)
-- role은 다른 role의 멤버가 될 수 있음 (그 권한 상속)
GRANT readonly TO app_user; -- app_user가 readonly의 권한 상속
Postgres에서 role은 통합된 개념입니다 — 로그인(user 역할)할 수 있고 다른 role을 포함(group 역할)할 수도 있습니다. 이 유연한 모델은 user와 권한 group을 모두 처리합니다.
권한 — 객체에 권한 부여
-- 객체에 특정 권한 부여
GRANT SELECT ON users TO readonly; -- 테이블 읽기 전용
GRANT SELECT, INSERT, UPDATE, DELETE ON orders TO app_user; -- 전체 데이터 접근
GRANT USAGE ON SCHEMA sales TO app_user; -- 스키마 접근
GRANT ALL PRIVILEGES ON DATABASE mydb TO admin;
REVOKE INSERT ON orders FROM app_user; -- 권한 회수
권한(SELECT, INSERT, UPDATE, DELETE, USAGE 등)은 객체(테이블, 스키마, 데이터베이스)에 대해 role에 부여됩니다 — 각 role이 정확히 무엇을 할 수 있는지 제어합니다.
최소 권한 원칙
-- ✅ 각 role이 실제로 필요한 권한만 부여
GRANT SELECT ON reports TO analyst; -- analyst는 reports를 읽기만 가능
-- ❌ ALL PRIVILEGES나 superuser를 광범위하게 부여하지 말 것 — 피해 범위 최소화
최소 권한 — 각 role에 필요한 권한만 부여 — 은 손상된 자격 증명이나 실수로 인한 피해를 제한하는 핵심 보안 관행입니다.
기본 권한과 소유권
-- 객체 소유자는 전체 제어권을 가짐; 새 객체는 명시적 부여 필요
ALTER DEFAULT PRIVILEGES IN SCHEMA sales
GRANT SELECT ON TABLES TO readonly; -- 미래 테이블에 자동 부여
왜 중요한가
PostgreSQL의 role과 권한을 이해하는 것은 데이터베이스 보안에 중요합니다 — 누가 데이터베이스에 접근할 수 있고 무엇을 할 수 있는지 제어하는 것은 데이터 보호의 기본이므로, 이 지식은 모든 프로덕션 데이터베이스에 가치가 있습니다.
role 개념(role이 user — 로그인 가능 — 와 group — 다른 role이 상속하는 권한 모음 — 으로 모두 작동하는 Postgres의 통합 모델)을 이해하는 것은 접근 관리에 필수적입니다. 그것이 데이터베이스 user를 생성하고 권한을 정리하는 방식이기 때문입니다.
객체(테이블, 스키마, 데이터베이스)에 대해 role에 권한(SELECT, INSERT 등)을 부여하고 회수하는 방법을 아는 것은 각 user나 애플리케이션이 정확히 무엇을 할 수 있는지 제어하는 데 필수적입니다.
결정적으로 중요한 것은 최소 권한 원칙 — 광범위하거나 superuser 권한 대신 각 role에 진정으로 필요한 권한만 부여(예: 읽기 전용 analyst role, 필요한 접근만 가진 애플리케이션 role) — 으로, 손상된 자격 증명, 버그, 실수로 인한 피해를 제한하는 핵심 보안 관행입니다(실제적이고 중요한 방어).
기본 권한과 소유권(객체 소유자가 전체 제어권을 가지며, 미래 객체는 명시적 부여가 필요할 수 있음)을 이해하면 실용적 접근 관리가 완성됩니다.
데이터베이스 보안은 중요하고(데이터베이스는 민감하고 가치 있는 데이터를 보유), role과 최소 권한 부여를 통한 적절한 접근 제어가 그 데이터를 보호하고 위험을 제한하는 방법이므로, PostgreSQL의 role과 권한 — 통합 role 모델, 권한 부여/회수, 특히 최소 권한 원칙 — 을 이해하는 것은 프로덕션 데이터베이스를 관리하고 보호하는 데 중요한 보안 관련 지식이며, 자주 관련되는 책임이자 데이터베이스 접근을 관리하는 누구에게나 흔한 주제입니다.
