검색
검색
공개 노트 검색
회원가입로그인
PostgreSQL 마스터하기

제11장: 사용자 및 접근 제어 관리

PostgreSQL에서 사용자와 접근 제어 완전 정복

효율적인 데이터베이스 관리에서 보안과 권한은 핵심입니다. PostgreSQL 역시 견고한 사용자 및 접근 제어 시스템을 제공합니다. 이 장에서는 PostgreSQL 환경에서 사용자(유저)와 역할(롤), 그리고 실제 권한 관리 흐름을 실무 관점에서 체계적으로 정리합니다.

사용자와 역할의 구조 이해하기

PostgreSQL에서는 더 이상 "개별 사용자"와 "그룹" 개념이 분리되어 있지 않습니다. 모든 계정은 '역할(role)'이라는 단일 개념으로 통합되어 있습니다. 역할은 로그인 가능한 유저가 될 수도 있고, 여러 사용자를 묶는 그룹일 수도 있습니다. 이는 필요한 만큼 세분화된 권한 설정과 유연한 확장성을 제공하기 위함입니다.

역할을 생성할 때 로그인 권한이 있으면 사용자로, 로그인 권한 없이 여러 권한을 할당할 땐 그룹처럼 활용할 수 있습니다. 실제로 실무에서는 로그인 가능한 유저와, 업무나 권한 범위를 지정하는 그룹(역할)을 조합해 계층적인 권한을 설계합니다.

사용자 생성과 관리의 기본

새로운 사용자를 만들 땐 CREATE ROLE 혹은 CREATE USER 명령을 사용합니다. 다음 예시처럼 슈퍼유저 권한 없이도 필요한 권한만 부여해 계정을 만들 수 있습니다.

CREATE ROLE analyst LOGIN PASSWORD 'safe_pw';

로그인 가능한 유저만 별도로 관리하고, 개발·운영·조회자 등 업무별 그룹 역할을 만들어 각 유저를 필요한 그룹에 추가합니다. 예시는 다음과 같습니다.

CREATE ROLE readonly;
GRANT readonly TO analyst;

권한(Privileges) 부여와 철회

정교한 권한 관리는 보안의 시작입니다. 모든 테이블, 뷰, 함수 등 객체에 대해 SELECT, INSERT, UPDATE, DELETE 등 각각의 명령별 권한을 분리하여 부여할 수 있습니다. 예를 들어, 단순 조회만 허용하려면 아래와 같이 명령합니다.

GRANT SELECT ON employees TO readonly;

불필요하거나 만료된 권한은 반드시 REVOKE 구문으로 제거해야 데이터 보호가 유지됩니다.

접속 및 인증 정책 관리

외부에서 데이터베이스에 접근하려면 인증이 필요합니다. PostgreSQL은 접속 제어 파일인 pg_hba.conf와 다양한 인증 방식(비밀번호, SSL, 키 등)을 지원합니다. 실무에서는 반드시 최소 권한 원칙(Lesat Privilege)을 지키고, 모든 접근 로그를 남기는 것이 표준입니다. 네트워크 접근도 IP, 유저, DB별로 세밀하게 제한하여 잠재적 침해를 미연에 방지해야 합니다.

보안 및 접근 제어 베스트 프랙티스

안전한 데이터베이스 운영을 위해선 인증수단 강화, 정기적 권한 점검, 역할별 최소권한 정책 활용, 그리고 변경 이력 감시가 필수입니다. 이미 갖춰진 보안 기능 외에도 PostgreSQL 최신 버전의 보안 패치 적용과, 필요시 행 단위 보안(ROW LEVEL SECURITY)까지 도입해 체계를 견고히 하십시오.

단단한 사용자와 접근 제어 정책은 PostgreSQL 마스터의 핵심 실력입니다. 실습과 정책적 사고의 균형을 통해 데이터베이스 방어선을 확고히 만들 수 있습니다.


공유하기
카카오로 공유하기
페이스북 공유하기
트위터로 공유하기
url 복사하기