단위 5 / 11

로깅, 감사 추적 및 입증 가능성

이득:

  • 사건을 재구성하기에 충분한 최소한의 감사 추적 계획을 설계하는 능력
  • 프롬프트/응답을 마스킹하여 로그가 유출원이 되는 것을 방지하는 기능
  • 상관 관계 ID, 불변성 및 보존 기간을 포함하여 검증 가능한 로그를 구축하는 기능

AI 시스템에서는 언젠가 "이 결정이 왜 이런 식으로 내려졌는지, 그날 정확히 무슨 일이 일어났는가?"라는 질문이 반드시 제기될 것입니다. 이 질문은 고객, 감사자, 규제 기관 또는 법원에서 질문할 수 있습니다. 귀하의 대답은 검증 가능한 감사 추적이거나 "모르겠습니다"입니다. 후자는 기업 환경에서는 용납되지 않습니다. 이번 단원에서는 AI와 관련해 기록해야 할 사항과 기록하지 말아야 할 사항, 감사 추적 설정 방법, 보안 및 개인 정보 보호와 로그의 균형을 유지하는 방법에 대해 알아봅니다.

AI에서 로깅이 다른 이유는 무엇입니까?

기존 소프트웨어에서는 "누가 무엇을 했는지"가 기록됩니다. AI에는 여기에 어떤 모델/버전이 사용되었는지, 어떤 프롬프트가 전송되었는지, 어떤 응답이 생성되었는지 등 세 가지 새로운 차원이 추가됩니다. 오류나 불만이 발생하면 이 세 가지가 없으면 사건을 재구성할 수 없습니다. 하지만 이 프롬프트/응답에는 2단원에서 본 것처럼 PII가 포함될 수 있습니다. 즉, 로그 자체가 유출의 원인이 될 수 있습니다. 이것이 바로 균형의 예술이다.

주의: 로깅은 "모든 것을 기록"하는 것이 아닙니다. 로깅이 너무 많으면 개인 정보 보호 위험이 발생하고, 로깅이 너무 적으면 증거가 부족합니다. 목표는 PII를 충분히 유지하여 이벤트를 마스킹하여 재구성하는 것입니다.

무엇을 기록해야 합니까? 감사 추적 스키마

견고한 AI 감사 추적에는 최소한 다음이 포함됩니다.

  • 대상: 사용자 ID 및 역할(또는 서비스 ID)
  • 시기: 타임스탬프(가능한 경우 추가만 가능)
  • 내용: 원하는 작업 및 소환 도구.
  • 모델: 모델 이름 및 버전(예: clude-opus-4-8), 온도와 같은 중요한 매개변수.
  • 입력/출력 다이제스트: 요청 및 응답의 마스크된 버전 또는 다이제스트/해시입니다.
  • 결정: 자동으로 처리되었는지, 사람에게 전달되었는지, 승인되었는지 아니면 거부되었는지?
  • 결과: 작업이 성공했습니까, 아니면 오류였습니까? 어떤 리소스가 영향을 받습니까?

단계별: 감사 추적 설정

  1. 목표를 설정하세요. 누가 이 로그를 읽을 것이며 그 이유는 무엇입니까? (사고 대응, 규정 준수 감사, 디버깅.) 무엇을 보관할지에 따라 목적이 결정됩니다.
  2. PII 정책을 시행합니다. 기록하기 전에 프롬프트/응답을 마스킹합니다(단원 2).
  3. 불변성을 제공합니다. 중요한 로그를 추가 전용으로 두십시오. 누구도 조용히 과거를 지울 수는 없습니다.
  4. 보존 기간을 정의합니다. 법적 요구 사항과 기밀 유지의 균형에 따라 기간을 결정합니다. 시간이 만료되면 자동으로 삭제됩니다.
  5. 접근을 제한하세요. 로그에 대한 액세스도 RBAC로 보호되어야 합니다. 로그 읽기도 기록되어야 합니다.
  6. 상관관계 ID(추적 ID)를 추가합니다. 요청의 모든 단계(입력, 도구 호출, 확인, 출력)를 단일 ID로 연결합니다.

복사 가능한 템플릿 4개

감사 로그 스키마(JSON):

{ "trace_id": "...", "시간": "YYYY-MM-DDThh:mm:ssZ", "사용자": "...", "역할": "...", "모델": "claude-opus-4-8", "매개변수": { "온도": 0 }, "request_summary": "<masked>", "response_summary": "<masked>", "tools": ["tool_a", "tool_b"], "decision": "auto|human_approval", "approval": "approved|rejected|none", "result": "success|error", "affected_resource": "..."}

PII 제어 프롬프트 로그:

아래의 로그 예시를 확인해 보세요. 감사 추적에 필요한 필드(누가, 언제, 모델, 결정, 결과)가 완료되었습니까? 원시 PII도 유출되었나요? 각 행에 대해 다음과 같이 보고합니다. "공간 부족/누락: ... /PII 누출: ..." <logs>{{ example }}</logs>

이벤트 재구축 프롬프트:

다음 감사 레코드는 단일 Trace_id에 속합니다. 이벤트를 시간순으로 설명으로 전환합니다. 사용자가 원하는 것이 무엇인지, 모델이 수행한 것이 무엇인지, 어떤 검증이 실행되었는지, 어떻게 결정이 내려졌는지, 결과는 무엇이었습니까? 누락되거나 일관성이 없는 단계에 플래그를 지정하세요.<records>{{ Trace_registers }}</records>

보존 정책 결정 규칙:

각 로그 유형에 대해 다음을 결정하십시오.- 법적 보존 의무가 있습니까? (있는 경우 최소 기간)- PII가 포함되어 있습니까? (포함된 경우 기간 단축, 접근권한 좁히기)-보안사고 증거? (저장소는 변경할 수 없음)결과: "N일 저장 + 추가 전용 mi + 액세스 수준".

약한 프롬프트 / 강한 프롬프트

접근 방식이 좋지 않음

강력한 접근 방식

전혀 로깅하지 않음("필요하지 않음")

이벤트를 재구성하기 위한 최소 세트 로깅

원시 프롬프트/응답을 있는 그대로 로깅

마스크된 요약 + 추적 ID 로깅

로그를 무제한으로 저장

법적 + 개인 정보 보호의 균형을 맞춘 보존 기간

누구나 로그를 삭제할 수 있습니다.

중요한 로그는 추가 전용이며 액세스가 제어됩니다.

미니 케이스 3개

사례 1 - 추적 ID를 통해 하루 조사 시간이 15분으로 단축되었습니다. 한 고객은 은행 신용평가사에게 “제 신청이 부당하게 거절됐다”고 말했다. 상관 관계 ID 덕분에 팀은 해당 애플리케이션의 입력, 직원 확인 및 결정을 15분 만에 재구성했습니다. 규칙 검증의 잘못된 임계값으로 인해 오류가 발생했음을 보여주고 수정했습니다.

사례 2 - 감사에서 과도한 로깅이 발견되었습니다. 전자 상거래 회사는 디버깅을 위해 원시 로그에 모든 프롬프트/응답을 작성하고 있었습니다. 연례 감사 동안 이러한 로그에는 고객 주소와 전화번호가 포함되어 있으며 2년 동안 보관된 것으로 나타났습니다. 마스킹 + 90일 보존 정책으로 전환하여 결과가 종결되었습니다. 감사 추적 기능이 유지되었습니다.

사례 3 - 추가 전용 로그에 내부 남용이 드러났습니다. 한 제공업체의 직원은 자신이 만든 잘못된 배치를 숨기기 위해 로그를 삭제하려고 했습니다. 로그는 추가 전용이고 로그 읽기/삭제 시도가 기록되므로 해당 시도가 즉시 표시됩니다. 해당 사건으로 인해 징계 및 절차 시정 조치가 이루어졌습니다.

팁: 각 요청에 상관 관계 ID(추적 ID)를 할당하고 이를 모든 단계에서 수행합니다. 문제가 발생하면 단일 쿼리로 "해당 요청에 대한 모든 것"을 수집할 수 있다는 것이 사고 대응을 가속화하는 가장 큰 요소입니다.

일반적인 실수

  • 전혀 로깅하지 않거나 이벤트를 재구성할 수 없을 정도로 로깅이 너무 적습니다.
  • 마스크 없이 원시 요청/응답을 기록하고 로그를 유출 소스로 전환합니다.
  • 모델 이름/버전 및 결정(자동/사람)을 기록하지 않습니다.
  • 기간 제한 없이 로그를 저장하면 개인 정보 보호 위험이 높아집니다.
  • 중요한 로그는 변경될 수 있습니다. 로그 액세스를 기록하지 않습니다.
  • 상관 ID(추적 ID)를 사용하지 않기 때문에 단계를 함께 연결할 수 없습니다.

요약하면

  • AI 로깅은 "누가 무엇을 했는지"에 3가지 차원, 즉 어떤 모델/버전, 어떤 프롬프트, 어떤 응답을 추가합니다.
  • 목표는 이벤트를 마스킹하여 이벤트를 재구성할 수 있을 만큼 PII를 최소한으로 유지하는 것입니다.
  • 감사 추적에는 누가/언제/무엇을/어떤 모델/의사결정/결과 필드가 포함되어야 합니다.
  • 중요한 로그는 추가 전용이어야 하고 액세스가 제한되어야 하며 로그 액세스도 기록되어야 합니다.
  • 상관 ID(추적 ID)는 요청의 모든 단계를 연결하고 사고 조사 속도를 높입니다.

응용과제

자체 AI 흐름에서 요청을 선택하고 위의 JSON 스키마를 사용하여 이에 대한 이상적인 감사 추적을 작성하세요. 그런 다음 두 가지 테스트를 수행합니다. (1) 이 녹음만으로 이야기를 처음부터 끝까지 전달할 수 있습니까? (2) 기록에 원시 PII가 있습니까? 누락된 필드가 있으면 추가하고, PII가 있으면 마스킹하세요. 마지막으로 보관 기간과 액세스 수준을 설정합니다.

체크리스트

  • [ ] 감사 추적에는 누가/언제/무엇을/패턴/결정/결과 필드가 포함됩니다.
  • [ ] 프롬프트/응답은 로그 앞에 마스킹됩니다(PII 없음).
  • [ ] 상관 ID(추적 ID)가 각 요청에 할당됩니다.
  • [ ] 중요한 로그는 추가 전용이며 액세스가 제어됩니다.
  • [ ] 보관 기간은 법적 + 비밀 유지 균형으로 정의되며, 기간이 끝나면 삭제됩니다.
  • [ ] 로그를 사용하면 30분 이내에 이벤트를 재구성할 수 있습니다.