감사 로그 관리¶
감사 로그 시스템은 Minecraft 서버에서 수행되는 모든 중요한 작업을 추적하여 규정 준수, 문제 해결 및 보안 감사를 위한 포괄적인 활동 기록을 제공합니다.
개요¶
감사 로그는 다음 작업에 대해 자동으로 생성됩니다: - 서버 생명주기: 생성, 삭제, 시작, 중지, 재시작 - 플레이어 관리: 화이트리스트 추가/제거, 차단/차단 해제, OP 부여/제거, 강제 퇴장 - 감사 유지보수: 로그 삭제 작업
로그는 ~/.minecraft-servers/audit.db의 SQLite 데이터베이스에 저장되며 90일 후 자동 정리됩니다(설정 가능).
명령어¶
mcctl audit list¶
선택적 필터링을 통해 감사 로그 목록을 표시합니다.
문법:
옵션:
| 옵션 | 타입 | 설명 |
|------|------|------|
| --limit <숫자> | number | 표시할 최대 로그 수 (기본값: 50) |
| --action <액션> | string | 액션 타입으로 필터링 |
| --actor <액터> | string | 작업을 수행한 주체로 필터링 |
| --target <이름> | string | 대상 서버/플레이어 이름으로 필터링 |
| --status <상태> | success|failure | 작업 상태로 필터링 |
| --from <날짜> | ISO date | 시작 날짜 (예: 2026-01-01) |
| --to <날짜> | ISO date | 종료 날짜 |
액션 타입:
- server.create - 서버 생성
- server.delete - 서버 삭제
- server.start - 서버 시작
- server.stop - 서버 중지
- server.restart - 서버 재시작
- player.whitelist.add - 플레이어 화이트리스트 추가
- player.whitelist.remove - 플레이어 화이트리스트 제거
- player.ban - 플레이어 차단
- player.unban - 플레이어 차단 해제
- player.op - 플레이어 OP 권한 부여
- player.deop - 플레이어 OP 권한 제거
- player.kick - 플레이어 서버에서 추방
- audit.purge - 감사 로그 삭제
예제:
# 최근 50개 로그 표시 (기본값)
mcctl audit list
# 최근 100개 로그 표시
mcctl audit list --limit 100
# 서버 생성 이벤트만 표시
mcctl audit list --action server.create
# 특정 사용자의 모든 작업 표시
mcctl audit list --actor cli:local
# 실패한 작업만 표시
mcctl audit list --status failure
# 특정 서버에 대한 로그 표시
mcctl audit list --target myserver
# 날짜 범위 조회
mcctl audit list --from 2026-01-01 --to 2026-01-31
# 여러 필터 조합
mcctl audit list --action server.start --status failure --limit 20
출력 형식:
Audit Logs (25 entries):
2026-02-05 14:32:15 server.create cli:local server:myserver success
2026-02-05 14:30:45 player.whitelist.add web:admin player:Steve success
2026-02-05 14:28:10 server.start api:service server:survival failure
mcctl audit stats¶
감사 로그의 통계 개요를 표시합니다.
문법:
출력:
Audit Log Statistics:
Total Logs: 1,234
Success: 1,180
Failure: 54
By Action:
server.start 456
server.stop 432
player.whitelist.add 123
server.create 89
player.ban 45
...
By Actor:
cli:local 678
web:admin 456
api:service 100
사용 사례: - 가장 빈번한 작업 모니터링 - 가장 많은 활동을 하는 사용자 식별 - 실패율 추적 - 규정 준수 보고를 위한 감사
mcctl audit purge¶
데이터베이스 공간을 확보하기 위해 오래된 감사 로그를 삭제합니다.
문법:
옵션:
| 옵션 | 타입 | 설명 |
|------|------|------|
| --days <숫자> | number | N일보다 오래된 로그 삭제 (기본값: 90) |
| --before <날짜> | ISO date | 특정 날짜 이전의 로그 삭제 |
| --dry-run | boolean | 실제로 삭제하지 않고 미리보기 |
| --force | boolean | 확인 프롬프트 건너뛰기 |
예제:
# 90일보다 오래된 로그 삭제 (확인 포함)
mcctl audit purge
# 30일보다 오래된 로그 삭제
mcctl audit purge --days 30
# 특정 날짜 이전의 로그 삭제
mcctl audit purge --before 2026-01-01
# 삭제될 항목 미리보기
mcctl audit purge --days 60 --dry-run
# 확인 없이 강제 삭제
mcctl audit purge --days 180 --force
출력:
[DRY RUN] Would delete 234 audit logs older than 2025-11-07T00:00:00.000Z
# 실제 삭제 시:
✓ Deleted 234 audit logs
참고: 삭제 작업 자체도 감사 로그에 기록됩니다.
설정¶
감사 로그 동작은 .env 파일의 환경 변수를 통해 설정합니다:
# ~/.minecraft-servers/.env
# 오래된 로그 자동 정리
AUDIT_AUTO_CLEANUP=true
# 보관 기간 (일) (기본값: 90)
AUDIT_RETENTION_DAYS=90
AUDIT_AUTO_CLEANUP:
- true (기본값): 시스템 시작 시 AUDIT_RETENTION_DAYS보다 오래된 로그 자동 삭제
- false: 자동 정리 비활성화 (수동 삭제만 가능)
AUDIT_RETENTION_DAYS: - 자동 정리 전에 감사 로그를 보관할 일수 - 기본값: 90일 - 권장값: 규정 준수 요구사항에 따라 30-180일
저장소¶
데이터베이스 위치:
스키마:
CREATE TABLE audit_logs (
id TEXT PRIMARY KEY,
action TEXT NOT NULL,
actor TEXT NOT NULL,
target_type TEXT NOT NULL,
target_name TEXT NOT NULL,
details TEXT,
status TEXT NOT NULL CHECK (status IN ('success', 'failure')),
error_message TEXT,
timestamp TEXT NOT NULL
);
CREATE INDEX idx_action ON audit_logs(action);
CREATE INDEX idx_actor ON audit_logs(actor);
CREATE INDEX idx_target_name ON audit_logs(target_name);
CREATE INDEX idx_status ON audit_logs(status);
CREATE INDEX idx_timestamp ON audit_logs(timestamp);
Details 필드: JSON으로 인코딩된 추가 컨텍스트. 예제:
// 서버 생성
{
"type": "PAPER",
"version": "1.21.1",
"memory": "4G"
}
// 플레이어 차단
{
"reason": "Griefing",
"uuid": "069a79f4-44e9-4726-a5be-fca90e38aaf5"
}
// 감사 삭제
{
"deletedCount": 234,
"cutoffDate": "2025-11-07T00:00:00.000Z"
}
모범 사례¶
보관 정책¶
| 환경 | 권장 보관 기간 | 이유 |
|---|---|---|
| 개발 | 30일 | 빈번한 테스트, 덜 중요함 |
| 스테이징 | 60일 | 프로덕션 전 검증 |
| 프로덕션 | 90-180일 | 규정 준수, 문제 해결 |
| 규정 준수 필수 | 365일 이상 | 규제 요구사항 |
정기 검토¶
# 주간 실패 검토
mcctl audit list --status failure --limit 100
# 월간 통계 보고서
mcctl audit stats > monthly-audit-$(date +%Y-%m).txt
# 분기별 정리
mcctl audit purge --days 180 --dry-run
문제 해결¶
최근 서버 실패 확인:
서버를 삭제한 사람 확인:
플레이어 관리 활동 추적:
mcctl audit list --action player.ban
mcctl audit list --action player.whitelist.add --actor web:admin