Security Practice Archive

보안 점검과 설정을
기록합니다.

시스템, 클라우드 등 다양한 환경에서 확인한 점검 기준과 설정 과정, 검증 결과를 정리합니다.

categories 글 모아보기
Browse topics

주제별로 빠르게 이동

카테고리를 선택해 관련 글을 모아볼 수 있습니다.

약 1분

[인프라진단] #CA-15 관계형 데이터베이스 로깅 설정

반응형

1. 항목 설명

관계형 데이터베이스의 접속, 종료, 쿼리와 오류 로그가 조직 정책에 맞게 생성·수집되도록 설정되어 있는지 점검하는 항목입니다.

판단 기준은 관계형 데이터베이스 로깅이 조직 정책에 맞게 설정된 경우 양호, 설정되지 않은 경우 취약입니다.

2026 가이드 근거

출처: 과학기술정보통신부·한국인터넷진흥원, 「2026 주요정보통신기반시설 기술적 취약점 분석·평가 방법 상세가이드」, CA-15, p.868.
본 게시글은 위 가이드의 판단 기준을 참고하여 작성했으며, 진단 결과와 증적은 개인 실습 환경에서 직접 수집했습니다.

2. 점검 목적

DB 계정 오용, 비인가 스키마 변경, 비정상 쿼리와 장애 원인을 추적할 수 있는 감사 기록을 확보하는 것이 목적입니다.

3. 실습 환경

  • 클라우드: 개인 AWS 실습 계정
  • 작업 도구: AWS Management Console, AWS CloudShell, AWS CLI
  • 운영 리소스 현황: RDS DB 인스턴스 및 클러스터 0대
  • 실습 템플릿: PostgreSQL 18 사용자 지정 DB 파라미터 그룹
  • 로깅 항목: 연결·연결 종료·DDL·1초 이상 쿼리
  • 수집 경로: /ca-lab/rds/audit CloudWatch 로그 그룹과 테스트 이벤트
  • 비용 주의: RDS는 생성하지 않았지만 로그 저장·조회와 향후 RDS 사용은 계정 플랜에 따라 비용 발생 가능

실습·비용·안전 고지

현재 RDS가 없어 운영 자원 판정은 N/A입니다. 사용자 지정 파라미터 그룹과 테스트 로그 경로를 만들었지만 DB에 연결하거나 실제 PostgreSQL 로그 내보내기를 수행한 것은 아닙니다.

4. 취약 상태 구성

RDS 자산, 사용자 지정 파라미터 그룹과 RDS용 로그 그룹을 조회해 모두 없는 상태를 확인합니다.

aws rds describe-db-instances --query 'length(DBInstances)'
aws rds describe-db-clusters --query 'length(DBClusters)'
aws rds describe-db-parameter-groups \
  --query 'DBParameterGroups[?starts_with(DBParameterGroupName, `ca-lab-`)]'
aws logs describe-log-groups --log-group-name-prefix /ca-lab/rds/

운영 DB가 없다면 해당 없음으로 처리하되 표준 파라미터 그룹과 신규 DB의 로그 내보내기 설정이 준비되어 있는지 확인해야 합니다.

5. 최초진단 결과

  • 최초진단 판정: 운영 N/A · 통제 미흡
  • 실제 자원 현황: RDS DB 인스턴스·클러스터 0대
  • 실제 확인 결과: 사용자 지정 감사 파라미터 그룹 없음
  • 실제 확인 결과: RDS 감사 로그 그룹 없음
  • 실제 최초진단 증적 파일: ca11_ca19_initial_diagnosis.txt

6. 조치 방법

PostgreSQL 18용 사용자 지정 파라미터 그룹을 생성하고 기본 감사 항목을 설정한 뒤 로그 수집 경로를 준비합니다.

aws rds create-db-parameter-group \
  --db-parameter-group-name <PG_AUDIT_PARAMETER_GROUP> \
  --db-parameter-group-family postgres18 \
  --description 'CA-15 PostgreSQL audit logging template'

aws rds modify-db-parameter-group \
  --db-parameter-group-name <PG_AUDIT_PARAMETER_GROUP> \
  --parameters \
    'ParameterName=log_connections,ParameterValue=all,ApplyMethod=immediate' \
    'ParameterName=log_disconnections,ParameterValue=1,ApplyMethod=immediate' \
    'ParameterName=log_statement,ParameterValue=ddl,ApplyMethod=immediate' \
    'ParameterName=log_min_duration_statement,ParameterValue=1000,ApplyMethod=immediate'

aws logs create-log-group --log-group-name /ca-lab/rds/audit
aws logs put-retention-policy \
  --log-group-name /ca-lab/rds/audit \
  --retention-in-days 90

운영 DB에는 엔진별 지원 로그 내보내기를 활성화하고 이 파라미터 그룹을 연결한 뒤 실제 로그 유입을 확인해야 합니다.

클라우드 콘솔 경로: RDS → 파라미터 그룹 → CA-15 전용 그룹 → 파라미터

UI 증적 수집(2026-08-25): 실제 RDS 콘솔에서 PostgreSQL 18 사용자 지정 파라미터 그룹과 log_connections=all 설정을 확인했습니다. 할당된 DB는 0대입니다.

7. 이행진단 결과

  • 이행진단 판정: 운영 N/A · 템플릿 검증
  • 실제 자원 현황: RDS DB 인스턴스·클러스터 0대
  • 파라미터 그룹: PostgreSQL 18 사용자 지정 그룹 생성
  • 감사 설정: 연결·연결 종료·DDL·1초 이상 쿼리 로깅
  • 수집 경로: /ca-lab/rds/audit, 보존 90일, 테스트 이벤트 확인
  • 제한 사항: 운영 DB 연결과 실제 엔진 로그 내보내기는 미수행
  • 실제 이행진단 증적 파일: ca11_ca19_after_diagnosis.txt

8. 실무 주의사항

SQL 전체 로깅은 개인정보·비밀번호·토큰을 남기거나 저장 비용과 DB 성능에 영향을 줄 수 있습니다. 엔진 특성과 업무 위험도에 따라 감사 범위, 느린 쿼리 기준과 마스킹 방식을 조정해야 합니다.

컨설턴트 조언

  • DB 엔진과 버전별로 지원되는 감사 확장, 파라미터, 재부팅 필요 여부와 CloudWatch 내보내기 항목을 확인합니다.
  • 파라미터 그룹이 존재하는지만 보지 말고 실제 DB 연결 상태, 적용 상태, 로그 그룹의 최신 이벤트를 함께 확인합니다.
  • DDL·권한 변경·로그인 실패·관리자 행위는 우선 수집하고 전체 SQL 로깅은 성능과 민감정보 노출 위험을 평가합니다.
  • 로그 접근 권한을 DB 운영 권한과 분리하고 로그 변경·삭제가 가능한 주체를 최소화합니다.
  • 파라미터 변경은 성능 시험, 유지보수 창, 재부팅 여부와 롤백 계획을 포함해 변경 관리 절차로 수행합니다.

9. 마무리

운영 RDS가 없는 환경에서는 실제 로그 설정을 양호로 단정할 수 없습니다. 이번 실습은 신규 PostgreSQL 배포에 사용할 감사 파라미터와 중앙 수집 경로를 사전 검증한 결과입니다.

반응형