Notice
Recent Posts
Recent Comments
«   2026/04   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30
04-06 18:31
Today
Total
관리 메뉴

[DBM-011] 감사 로그 수집 및 백업 미흡_AWS RDS 환경 본문

인프라진단/진단 항목 정리

[DBM-011] 감사 로그 수집 및 백업 미흡_AWS RDS 환경

h4ckpr1n 2025. 8. 20. 16:29

점검 내용

데이터베이스에서 수행한 주요 행위를 기록 및 백업하지 않는 경우, 장애 및 침해사고 발생 시 이를 효과적으로 대처할 수 없으므로 로그 수집 및 백업이 적절하게 이루어지고 있는지 점검

 

점검 방법

현재 점검하고 있는 대상이 RDS PostgreSQL 이라서 해당 대상 기준으로 정리.

 

<RDS PostgreSQL>

일단 해당 대상의 경우 주통에서 logging_collection 을 on 하고 있냐를 보고 있는데, 전자금융에서는 pg_audit 이라는 내부 모듈을 사용하도록 권고 되고 있다.

 

logging_collector VS pg_audit

1. logging_collector
• PostgreSQL 기본 로깅 메커니즘입니다.
• 단순히 DB 서버에서 발생하는 이벤트/메시지를 로그 파일로 남기는 역할을 합니다.
• 어떤 로그를 남길지는 여러 파라미터로 제어:
 > logging_collector = on → 로그 수집기 활성화(해당 옵션이 on으로 설정해야 아래 설정이 됨)
 > log_statement = ‘all’ / ‘ddl’ / ‘mod’ 등 → 어떤 SQL 문장까지 기록할지
 > log_connections, log_disconnections → 접속/종료 기록
 > log_duration, log_min_duration_statement → 실행 시간 기록
👉 즉, DB 운영 상태와 에러/SQL 실행 현황을 포괄적으로 로깅하는 기능.

2. pgAudit
• 추가 확장 모듈 (shared_preload_libraries에 등록해야 함).
• 보안/감사 관점의 세밀한 SQL 활동 추적을 목표로 함.
• 예: 누가, 언제, 어떤 테이블에 대해 SELECT/INSERT/UPDATE/DELETE 했는지 로그 남김.
• 설정 옵션:
> pgaudit.log = read, write, ddl, role 등 → 감사할 카테고리 지정
> pgaudit.log_catalog = on/off → 시스템 카탈로그 접근까지 감사할지 여부
👉 즉, 감사 추적용(Log forensics) 목적에 특화.

 

그래서 결국, 둘다 확인하는게 좋다. 현장에서는 아래와 같이 확인했다.

[pgaudit 사용 확인]
1. 감사로그 사용 여부 확인(모듈 나열)
shared_preload_libraries 
---------------------------
pgaudit,auto_explain,pg_stat_statements
(1 row)

* 결과 내에 pgaudit 없을 경우, 감사 로그 미사용 중으로 취약.

2. 감사 항목 설정(SHOW pgaudit.log)
 pgaudit.log 
--------------
ddl, role, read, write
(1 row)

* read, write, ddl, role 설정 필요, 미출력 시 감사로그 모듈(pgaudit) 미사용 중 혹은 미설정으로 취약



[logging_collector 사용 확인]
1. logging_collector 사용여부 확인
logging_collector 
-----------------
on
(1 row)


2. 상세 설정 적용 확인
log_connections 
-----------------
on
(1 row)

log_disconnections 
--------------------
 on
(1 row)

log_failed_attempts 
----------------------
on
(1 row)

* log_connections : 연결 기록
* log_disconnections : 연결 해제 기록 
* log_failed_attempts : 실패 횟수 기록(Postgresql 15+)

 

추가적으로, 위의 데이터에 대한 데이터 백업여부에 대한 담당자 인터뷰가 필요하다.

조치 방법

조치 방법은 아래와 같다

<Postgresql>

1. PostgreSQL 설정 파일 열기
- PostgreSQL 설정 파일(postgresql.conf)을 편집합니다.
- 파일 위치는 일반적으로 `/etc/postgresql/<버전>/main/postgresql.conf` 또는 `/var/lib/pgsql/<버전>/data/postgresql.conf`입니다.

2. 아래 설정 추가 또는 수정
- `shared_preload_libraries` 항목에 `pgaudit` 포함
- `pgaudit.log` 항목에 `'read, write, ddl, role'` 설정

-  logging_collector 항목에 on 설정
- `log_connections` 항목에 `on` 설정
- `log_disconnections` 항목에 `on` 설정
- `log_failed_attempts` 항목에 `on` 설정 (PostgreSQL 15 이상에서만 사용 가능)

3. 적용 확인 (DB 접속 후 실행)
SHOW shared_preload_libraries;
SHOW pgaudit.log;

SHOW logging_collector;

SHOW log_connections;
SHOW log_disconnections;
SHOW log_failed_attempts;

 

<RDS Postgresql>

1. RDS 콘솔 → 파라미터 그룹 → 현재 인스턴스에 연결된 파라미터 그룹 클릭**

2. 아래 파라미터 설정 확인 및 수정
- `shared_preload_libraries` 항목에 `pgaudit` 포함
- `pgaudit.log = 'read, write, ddl, role'` 등으로 설정

-  logging_collector 항목에 1 설정
- `log_connections 항목에 1 설정
- `log_disconnections 항목에 1 설정
- `log_failed_attempts 항목에 1 설정` *(PostgreSQL 15 이상에서만 사용 가능)*
* 저장 후 DB 인스턴스에 연결된 새 세션부터 적용됨

3. 적용 확인 (DB 접속 후 실행)
SHOW shared_preload_libraries;
SHOW pgaudit.log;

SHOW logging_collector;
SHOW log_connections;
SHOW log_disconnections;
SHOW log_failed_attempts;

 

4. CloudWatch로 로깅 내보내기

인스턴스에서 모니터링 - 로그 내보내기가 있는데, 여기서 PostgreSQL 로그 내보내기를 해줘야 CloudWatch 에서 확인할 수 있고, 여기서 설정안하면 RDS 내부에서만 볼 수 있다.

 

 

1) Instance 로그
•성격
RDS 인스턴스 레벨에서 발생하는 엔진/관리 로그.
주로 에러, 크래시, 백업·복원, failover 같은 DB 운영 상태와 관련됨.

•용도
장애 분석이나 RDS 동작 점검용.

보안 감사와의 관련성
거의 없음. (보안 감사 로그는 포함되지 않음)


2) PostgreSQL 로그 << 설정해줘야하는 것!
•성격
PostgreSQL 엔진이 남기는 표준 로그. logging_collector로 수집된 것이랑 pgAudit이 기록한 감사 로그도 포함
- log_connections, log_disconnections → 접속/종료 로그
- log_statement → SQL 실행 로그
- pgaudit.log 설정 결과 → DDL, SELECT, UPDATE 등 감사 로그

•용도
운영/성능 분석 (slow query 등), 보안 감사 (누가 어떤 SQL 실행했는지 추적)


3) IAM DB Auth Error 로그
•성격
RDS PostgreSQL의 IAM 인증을 사용했을 때 관련 에러를 별도로 분리해주는 로그. IAM DB Authentication은 AWS IAM 토큰으로 DB에 접속하는 기능인데,
인증 실패/권한 문제 시 이 로그에 남습니다.

•용도
IAM DB 인증을 쓰는 환경에서만 의미 있음. 보통 규제 대응/보안 점검에서 **“IAM 인증 실패 시도 내역”**을 CloudWatch로 수집할 수 있음.

Comments