Gateway

감사 기록

감사 기록

Gateway는 공유 OpenClaw 상태 데이터베이스에 메타데이터 전용 감사 원장을 제한된 크기로 유지합니다. 이 원장은 "어떤 에이전트가 언제 실행되었고 어떻게 종료되었는가", "실행 중 어떤 도구 작업이 수행되었는가", 그리고 메시지 감사가 활성화된 경우 "수락된 인바운드 메시지가 디스패치에 도달했는가" 및 "아웃바운드 메시지가 최종 전송 상태에 도달했는가"와 같은 운영 관련 질문에 답합니다.

원장에는 ID, 순서, 출처, 작업, 상태 및 정규화된 결과 코드가 저장됩니다. 프롬프트, 메시지 본문, 도구 인수, 도구 결과, 첨부 파일, 파일 이름, URL, 명령 출력 또는 원시 오류 텍스트는 절대 저장하지 않습니다.

레코드 계열

감사가 활성화되어 있으면 실행 및 도구 이벤트가 기록됩니다(기본값). 메시지 수명 주기 이벤트는 선택적으로 활성화해야 하며 기본적으로 비활성화되어 있습니다.

계열 작업 기본값
에이전트 실행 agent.run.started, agent.run.finished 켜짐
도구 작업 tool.action.started, tool.action.finished 켜짐
메시지 message.inbound.processed, message.outbound.finished 꺼짐

모든 레코드에는 안정적인 이벤트 ID, 단조 증가하는 원장 시퀀스, 수명 주기 타임스탬프, 행위자, 작업, 상태, schemaVersion: 1redaction: "metadata_only"가 포함됩니다. 전체 필드 참조 및 쿼리 필터는 감사 레코드를 참조하십시오.

메시지 수명 주기 이벤트

기록 대상을 선택하려면 audit.messages를 설정한 다음 Gateway를 다시 시작하십시오.

  • off(기본값): 메시지 레코드를 기록하지 않습니다.
  • direct: 직접 대화의 메시지만 기록합니다.
  • all: 직접 대화, 그룹 및 채널 메시지를 기록합니다.

두 개의 권위 있는 경계에서 메시지 레코드를 생성합니다.

  • 인바운드 행은 수락된 메시지가 중복 및 최종 처리 결과를 포함하여 코어 디스패치에 도달할 때 기록됩니다.
  • 아웃바운드 행은 공유 영구 전송이 최종 결과에 도달할 때 기록됩니다. 결과는 전송됨, 억제됨, 실패 또는 충돌로 인해 전송 여부가 모호한 경우 명시적인 unknown입니다. 큐 복구 및 데드 레터 결과도 포함됩니다. 원본 논리적 응답 페이로드마다 하나의 최종 행이 생성되며, 청크 분할 및 어댑터 팬아웃은 resultCount로 집계됩니다.

대화 종류 분류

direct 모드는 개인정보 보호 경계이므로 대상 정보가 이를 입증하는 경우에만 메시지를 직접 대화로 분류합니다. 즉, 전송 경로가 대상 대화 종류를 선언했거나 전송 세션 경로가 전송 대상인 채널과 피어를 정확히 지정해야 합니다. 정책 상태나 원본 대화와 같은 약한 신호는 메시지를 group으로 분류하여 direct 수집에서 제외할 수 있지만, 절대로 direct라고 판단할 수는 없습니다. 직접 대화임을 입증할 수 없는 메시지는 unknown으로 분류되며 direct 모드에서는 기록되지 않습니다. 따라서 채팅 유형을 선언하지 않는 채널은 all 모드보다 direct 모드에서 더 적은 행을 기록할 수 있습니다.

개인정보 보호 모델

메시지 행에는 원시 플랫폼 식별자를 절대 저장하지 않습니다. 상관관계 분석이 가능한 경우 계정, 대화, 메시지 및 대상 식별자는 설치별 키를 사용하는 가명(hmac-sha256:v1:<keyId>:<digest>)으로만 내보냅니다.

  • HMAC 키는 처음 사용할 때 생성되고 식별자 종류별로 도메인이 분리되며 원장과 동일한 상태 데이터베이스에 저장됩니다.
  • 가명은 하나의 설치 환경 내에서 안정적으로 유지되므로 플랫폼 식별자를 공개하지 않고도 같은 대화에 관한 행을 연관 지을 수 있습니다.
  • 이는 익명화가 아니라 상관관계 분석입니다. 상태 데이터베이스를 읽을 수 있는 사람은 키에도 접근할 수 있으므로 원시 식별자 후보를 가명과 대조할 수 있습니다. RPC 및 CLI 내보내기에는 키가 절대 포함되지 않습니다.
  • 메시지 행이 유지되는 동안 키 자료가 누락되거나 손상되면 Gateway는 장애 시 차단 방식으로 동작하며, 상관관계를 분리하게 될 새 키로 조용히 교체하는 대신 새 메시지 레코드를 폐기합니다.

실행 및 도구 레코드는 상관관계 분석을 위해 sessionKeysessionId를 유지합니다. 정규 세션 키 자체에 플랫폼 계정 또는 피어 ID가 포함될 수 있습니다. 메시지 레코드에서는 두 필드를 의도적으로 모두 생략합니다.

감사 내보내기에는 콘텐츠가 없더라도 타이밍, 채널, 결과 및 안정적인 가명을 통해 활동을 연관 지을 수 있는 민감한 운영 메타데이터가 포함됩니다. 다른 운영자 레코드와 동일한 액세스 제어 및 보존 관행으로 내보내기를 보호하십시오.

적용 범위 및 입증 한계

원장은 최선형 방식으로 동작하며 의도적으로 크기가 제한됩니다. 실제로 발생한 일의 증명이 아니라 기록된 내용의 증거로 취급하십시오.

  • 행이 없다는 사실은 아무것도 입증하지 않습니다. 승인 전에 폐기된 인바운드 메시지, 실행 중인 Gateway 레코더가 없는 CLI 프로세스에서의 전송, 공유 영구 전송을 우회하는 Plugin 로컬 또는 직접 전송 경로는 레코드를 남기지 않습니다.
  • 쓰기는 크기가 제한된 백그라운드 워커를 통과합니다. 워커 장애 또는 큐 포화가 발생하면 레코드를 폐기하고 운영 경고 하나를 기록합니다.
  • 충돌로 인해 모호해진 아웃바운드 전송은 결과를 임의로 만들어 내는 대신 unknown으로 기록됩니다.

이 원장은 디버깅 및 운영 검토를 지원합니다. 무손실 규정 준수 보관소가 아닙니다. 이러한 보관소가 필요하면 OpenTelemetry 또는 채널 수준 도구의 데이터를 받는 외부 시스템을 사용하십시오.

저장소, 보존 및 마이그레이션

레코드는 공유 상태 데이터베이스(state/openclaw.sqlite)에 저장되며 전송 핫 패스 외부에서 기록됩니다. 쿼리는 30일보다 오래된 레코드를 절대 반환하지 않으며 원장은 100,000개 행으로 제한됩니다. 만료된 행은 시작 시, 매시간 유지 관리 시, 이후 쓰기 시 정리됩니다. 수집이 비활성화되어 있어도 보존 유지 관리는 계속 실행됩니다.

이전의 실행/도구 전용 원장을 사용하는 Gateway에서 업그레이드하면 시작 시(또는 openclaw doctor --fix를 통해) 스키마가 자동으로 마이그레이션됩니다. 기존 행과 해당 원장 시퀀스는 보존됩니다.

쿼리

  • CLI: openclaw audit는 에이전트, 세션, 실행, 종류, 상태, 방향, 채널, 시간 범위 및 커서 페이지 나누기 필터를 제공합니다.
  • Gateway RPC: audit.activity.list(operator.read 필요)는 버전이 지정된 V1 활동 이벤트 유니온을 반환합니다. 출시된 audit.list RPC는 이전 실행/도구 클라이언트를 위해 변경되지 않습니다. Gateway 프로토콜을 참조하십시오.

관련 항목

Was this useful?
On this page

On this page