로컬 감사 로그

로컬 감사 로그 (Local audit logs)

로컬 감사 로그가 어떻게 JSON Lines 파일로 기록되고 수집되는지 알아볼게요.

출처: 문서

본문

샌드박스 데몬은 로컬 감사 기록을 JSON Lines(.jsonl) 파일로 써요. 로컬 감사 로그는 이를 생성한 호스트에 남고, 사용자의 로그 수집기(log shipper)가 수집할 수 있어요. 로컬 전달은 클라우드 전달과 독립적이므로, 클라우드 전달을 켜거나 끈 상태에서 로컬 파일을 사용할 수 있어요.

샌드박스 데몬은 AI Governance 라이선스가 있고 시행되는 중앙 organization 정책의 통제를 받는 로그인 사용자에 대해서만 로컬 감사 기록을 써요. 둘 다 없는 Docker Sandboxes 사용자는 감사 로그에 감사 데이터를 보내지 않아요. 거버넌스가 활성인지 확인하려면 sbx policy ls를 실행하세요. organization 정책이 적용 중이면 출력에 Governance: Managed by <org> 줄이 포함돼요.

기록되는 내용 (What gets recorded)

데몬은 두 가지 범주의 로컬 기록을 써요:

  • 평가(evaluation) 기록은 각 정책 결정을 담아요: 리소스, 액션, 판정(verdict), 거부 이유.
  • 세션 수명주기 기록은 각 데몬 실행의 시작과 끝을 표시해요. 평가 기록은 실행의 audit_session_id를 공유하므로, 모든 결정을 데몬 세션과 연관 지을 수 있어요.

기록에는 메타데이터만 들어 있어요. 프롬프트 내용, 에이전트 출력, 파라미터 값은 포함하지 않아요. 필드 세부 사항은 감사 기록 참조를 참고하세요.

네트워크 평가 기록은 이렇게 생겼어요:

{
  "audit_event_id": "95e7257f-93c9-4f29-bde7-88830e2dae80",
  "timestamp": "2026-05-28T19:15:00.728933Z",
  "schema_version": "1.82.0",
  "category": "AUDIT_CATEGORY_EVALUATION",
  "decision": "AUDIT_DECISION_DENY",
  "username": "jordandoe",
  "user_email": "[email protected]",
  "org_id": "9f8e7d6c-5b4a-3210-fedc-ba9876543210",
  "org_name": "Acme Inc",
  "audit_session_id": "8a3bc076-79d0-4502-baf3-cc6ad35fb578",
  "resource_id": "example.com:443",
  "os": "macos",
  "app_version": "v0.31.0",
  "client_name": "sbx",
  "hostname": "host-machine",
  "deny_reason": [
    "no applicable policies for op(action=net:connect:tcp, resource=net:domain:example.com:443)"
  ],
  "action_type": "network_egress",
  "network_egress": { "protocol": "tcp" },
  "agent": "claude"
}

기록 저장 위치 (Where records are stored)

감사 기록을 쓰는 것은 데몬이지 CLI가 아니에요. sbx create 같은 명령을 실행하면 데몬에 요청을 보내고, 데몬이 결과 기록을 자체 감사 디렉터리에 내보내요.

기본 위치는 운영 체제에 따라 달라요:

OS 기본 경로
macOS ~/Library/Logs/com.docker.sandboxes/sandboxes/auditkit/
Linux ${XDG_STATE_HOME:-~/.local/state}/sandboxes/sandboxes/auditkit/
Windows %LOCALAPPDATA%\DockerSandboxes\sandboxes\logs\auditkit\

운영 체제마다 애플리케이션 로그를 자기만의 관례 위치에 두기 때문에 디렉터리 구조가 플랫폼별로 달라요.

파일 이름은 audit-<utc-timestamp>-<process-uuid>-<seq>.jsonl 형식이에요.

데몬은 진행 중인 기록을 임시 .tmp 파일에 쓰고, 원자적 이름 변경(atomic rename)으로 .jsonl 파일로 완성해요. 완성은 회전 임계값에서 이루어져요: 기본값은 5분, 1000건 이벤트, 50 MiB 중 먼저 도달하는 것이에요. 데몬이 정상 종료될 때도 완성돼요. .jsonl 파일만 완전한 기록이에요. .tmp 파일은 불완전한 것으로 보고 수집하지 마세요.

샌드박스는 .jsonl 파일을 절대 삭제하지 않아요. 보존과 정리는 로그 수집기(log shipper)나 사용자 자체의 하우스키핑 책임이에요.

SIEM으로 기록 수집 (Collect records with a SIEM)

로그 수집기를 감사 디렉터리로 지정하고 .jsonl 파일만 수집하도록 구성하세요. Splunk Universal Forwarder, Filebeat, CrowdStrike Falcon LogScale 같은 도구가 디렉터리를 읽고 각 줄을 이벤트로 전달해요. 진행 중인 기록은 완성될 때까지 .tmp 파일에 있으므로 수집기는 부분 기록을 결코 보지 못해요.

더 알아보기 (Learn more)