Programming/Database

PostgreSQL 계정 관리 완벽 가이드

minarae7 2025. 1. 13. 10:51
728x90
반응형

PostgreSQL 계정 관리에 대한 상세한 블로그 포스트를 작성해드리겠습니다.

PostgreSQL 계정 관리 완벽 가이드

목차

  1. 사용자 계정 생성
  2. 권한 관리
  3. 역할(Role) 관리
  4. 패스워드 정책
  5. 계정 관리 모범 사례
반응형

1. 사용자 계정 생성

PostgreSQL에서는 새로운 사용자를 생성하기 위해 CREATE USER 또는 CREATE ROLE 명령을 사용합니다. 두 명령의 주요 차이점은 CREATE USER는 기본적으로 LOGIN 권한이 있고, CREATE ROLE은 LOGIN 권한이 없다는 점입니다.

-- 기본적인 사용자 생성
CREATE USER john WITH PASSWORD 'secure_password123';

-- 추가 옵션을 포함한 사용자 생성
CREATE USER jane 
WITH PASSWORD 'secure_password456'
CREATEDB
VALID UNTIL '2025-12-31';

2. 권한 관리

데이터베이스와 테이블에 대한 권한을 관리하는 것은 보안에 매우 중요합니다.

-- 데이터베이스 권한 부여
GRANT ALL PRIVILEGES ON DATABASE mydb TO john;

-- 특정 테이블에 대한 권한 부여
GRANT SELECT, INSERT, UPDATE ON table_name TO jane;

-- 스키마 권한 부여
GRANT USAGE ON SCHEMA public TO john;

-- 권한 취소
REVOKE ALL PRIVILEGES ON DATABASE mydb FROM john;

3. 역할(Role) 관리

역할을 사용하면 권한을 그룹화하여 효율적으로 관리할 수 있습니다.

-- 역할 생성
CREATE ROLE readonly;

-- 역할에 권한 부여
GRANT SELECT ON ALL TABLES IN SCHEMA public TO readonly;

-- 사용자에게 역할 할당
GRANT readonly TO john;

-- 역할 확인
SELECT rolname FROM pg_roles;

-- 사용자의 역할 확인
SELECT r.rolname 
FROM pg_roles r 
JOIN pg_auth_members m ON m.roleid = r.oid 
JOIN pg_roles u ON m.member = u.oid 
WHERE u.rolname = 'john';
728x90

4. 패스워드 정책

보안을 강화하기 위한 패스워드 관리 방법입니다.

-- 패스워드 변경
ALTER USER john WITH PASSWORD 'new_secure_password';

-- 패스워드 만료 설정
ALTER USER jane VALID UNTIL '2025-12-31';

-- 패스워드 없이 접속 불가능하게 설정
ALTER USER john WITH PASSWORD NULL;

5. 계정 관리 모범 사례

5.1 보안 관련 권장사항

  1. 강력한 패스워드 정책 수립
    • 최소 12자 이상
    • 대소문자, 숫자, 특수문자 포함
    • 정기적인 패스워드 변경
  2. 최소 권한 원칙 적용
    • 필요한 최소한의 권한만 부여
    • 정기적인 권한 검토 및 불필요한 권한 제거

5.2 운영 관련 권장사항

-- 불필요한 계정 잠금
ALTER USER unused_user NOLOGIN;

-- 계정 활성화 상태 확인
SELECT usename, valuntil, useconfig 
FROM pg_user 
JOIN pg_shadow ON usename = pg_shadow.shadname;

-- 접속 제한 설정
ALTER USER restricted_user CONNECTION LIMIT 5;

6. 유용한 관리 쿼리

-- 모든 사용자 조회
SELECT usename, useconfig, valuntil 
FROM pg_user;

-- 특정 테이블에 대한 권한 조회
SELECT grantee, privilege_type 
FROM information_schema.role_table_grants 
WHERE table_name = 'your_table';

-- 잠긴 계정 조회
SELECT usename, valuntil 
FROM pg_user 
WHERE valuntil < CURRENT_TIMESTAMP;

마치며

PostgreSQL의 계정 관리는 데이터베이스 보안의 핵심입니다. 위에서 설명한 내용들을 바탕으로 적절한 보안 정책을 수립하고 구현하시기 바랍니다. 특히 운영 환경에서는 정기적인 계정 검토와 권한 관리가 매우 중요합니다.

이 가이드가 PostgreSQL 계정 관리에 도움이 되었기를 바랍니다. 추가적인 보안 설정이나 특정 환경에 따른 구성은 공식 PostgreSQL 문서를 참조하시기 바랍니다.

#PostgreSQL
#데이터베이스보안
#DB계정관리
#PostgreSQLRole
#데이터베이스관리
#PostgreSQLTutorial
#PostgreSQL권한
#DatabaseSecurity
#PostgreSQLAdmin
#데이터베이스운영

728x90
반응형