Production 서버를 운영할 때 중요한 것은 문제가 발생했을 때 빠르게 원인을 찾는 것입니다.
하지만 단순히 현재 상태만 확인하는 것은 부족합니다.
반드시 확인해야 하는 정보:
누가 변경했는가?
언제 변경했는가?
무엇을 변경했는가?
왜 변경했는가?
예를 들어 운영 중인 Container가 갑자기 종료되었다고 가정해 보겠습니다.
일반적인 상황:
서비스 장애 발생
↓
Container 종료 확인
↓
원인 확인 어려움
Audit Logging 환경:
Container 종료 발생
↓
Audit Log 확인
↓
관리자 A가 설정 변경
↓
원인 파악
이처럼 Audit Logging은 서버에서 발생하는 모든 중요한 작업 기록을 저장하고 추적하는 시스템입니다.
이번 글에서는 Docker Compose 환경에서 Audit Logging 개념부터 Docker 이벤트 기록, 사용자 접근 기록, 변경 추적, 보안 분석, Production 운영 구조까지 알아보겠습니다.
Audit Logging이란 무엇인가?
Audit Logging은 시스템에서 발생하는 모든 중요한 활동을 기록하는 보안 관리 방식입니다.
기록 대상:
사용자 접근
↓
Container 생성
↓
Container 삭제
↓
Configuration 변경
↓
Network 변경
↓
권한 변경
목적:
추적 가능성 확보
↓
보안 강화
↓
장애 원인 분석
일반 Log와 Audit Log 차이
일반 Application Log:
사용자 로그인 성공
결제 처리 완료
API 오류 발생
Audit Log:
관리자 로그인
Container 삭제
권한 변경
설정 변경
차이:
| 구분 | Application Log | Audit Log |
|---|---|---|
| 목적 | 서비스 동작 기록 | 관리 작업 추적 |
| 대상 | Application | 사용자·시스템 |
| 보안 활용 | 일반 분석 | 감사·추적 |
Docker Compose에서 추적해야 하는 이벤트
Container 환경에서는 다양한 변경이 발생합니다.
Container 이벤트
예:
Container 생성
Container 시작
Container 중지
Container 삭제
Image 이벤트
예:
Image Pull
Image Build
Image 삭제
Network 이벤트
예:
Network 생성
Network 연결
Network 삭제
Volume 이벤트
예:
Volume 생성
Volume 삭제
Docker Compose Event Logging
Docker는 기본적으로 이벤트 정보를 제공합니다.
확인:
docker events
출력:
container start
container stop
image pull
network connect
구조:
Docker Engine
↓
Event Stream
↓
Logging System
Docker Compose Audit Logging 구조
기본 구조:
Docker Host
↓
Audit Collector
↓
Storage
↓
Dashboard
Production 구조:
User
↓
Docker API
↓
Audit Log
↓
ELK / Loki
↓
Security Analysis
Docker Daemon Audit 관리
Docker Engine 자체의 활동 기록도 중요합니다.
관리 대상:
Docker API 호출
Container 명령 실행
권한 변경
Image 변경
구조:
Docker Client
↓
Docker Daemon
↓
Audit Record
Docker Compose 사용자 접근 기록 관리
서버 접근 기록은 필수 관리 항목입니다.
확인:
SSH Login
Docker Command
Admin Access
예:
User A
↓
docker compose restart 실행
↓
Audit 기록
Docker Compose Configuration 변경 추적
운영 환경에서는 설정 변경이 위험할 수 있습니다.
예:
변경 전:
port: 8080
변경 후:
port: 9000
Audit 기록:
변경자:
관리자 A
시간:
2026-07-31
변경 내용:
Port 수정
Docker Compose Git 기반 Audit 관리
Infrastructure as Code 환경에서는 Git 기록도 중요합니다.
구조:
Developer
↓
Git Commit
↓
Review
↓
Deploy
확인:
누가
어떤 파일을
왜 변경했는가
Docker Compose CI/CD Audit Logging
배포 과정도 기록해야 합니다.
구조:
Git Push
↓
CI/CD 실행
↓
Build
↓
Deploy
↓
Audit Log 저장
기록:
- Build 실행자
- Deploy 시간
- Version
- 결과
Docker Compose Audit Log 저장 구조
대규모 환경에서는 중앙 저장이 필요합니다.
구조:
Server 1
↓
Audit Log
Server 2
↓
Audit Log
Server 3
↓
Audit Log
↓
Central Logging
사용:
- ELK Stack
- Loki
- SIEM
Docker Compose Audit Logging과 SIEM 연동
기업 환경에서는 SIEM과 연결합니다.
구조:
Docker Host
↓
Audit Collector
↓
SIEM
↓
Security Team
활용:
- 이상 행동 탐지
- 보안 사고 조사
- 감사 대응
Docker Compose Audit Alert 구성
중요 이벤트는 즉시 알림이 필요합니다.
예:
관리자 아닌 사용자
↓
Container 삭제 실행
↓
Alert 발생
구조:
Audit Event
↓
Alert Rule
↓
Slack / Email
Docker Compose Production Audit 구조
기업 운영:
User
↓
Authentication
↓
Docker Environment
↓
Audit Logging
↓
SIEM
↓
Security Monitoring
Audit Logging Best Practice
추천:
모든 관리자 작업 기록
변경 추적 가능하도록 구성
중앙 저장
서버별 Log 분산 방지
Log 보존 정책
필요 기간 유지
접근 제한
Audit Log 수정 방지
Alert 연동
중요 이벤트 즉시 알림
자주 묻는 질문
Audit Log와 일반 Log는 같은 것인가요?
아닙니다. Audit Log는 누가 무엇을 변경했는지 추적하는 목적입니다.
Docker Compose에서도 Audit Logging이 필요한가요?
Production 환경에서는 필요합니다.
Audit Log를 왜 보호해야 하나요?
공격자가 기록을 삭제하면 원인 분석이 어려워집니다.
작은 서버에도 적용할 수 있나요?
가능합니다. Docker events와 기본 접근 기록부터 시작할 수 있습니다.
마무리
Docker Compose Audit Logging 구축은 서버 변경 사항과 접근 기록을 추적하기 위한 핵심 보안 기술입니다.
최종 구조:
사용자
↓
작업 실행
↓
Audit Log 생성
↓
중앙 저장
↓
분석
↓
대응
Production 서버에서는 장애를 해결하는 것뿐 아니라 “무슨 일이 있었는지 증명할 수 있는 기록”을 유지하는 것이 중요합니다.
다음 글에서는 보안 정책을 코드로 관리하는 방식인 Docker Compose Policy as Code 운영 방법을 알아보겠습니다.