Trawling
발견 출처 dev.to/발행

The EU AI Act's logging rule moved to December 2027. The logs did not get easier.

EU AI Act 로깅 규정, 2027년 12월로 연기 — 하지만 로그 요건은 그대로

EU의 Digital Omnibus on AI(Regulation (EU) 2026/1744)로 고위험 AI 시스템의 기록 보관 의무 적용이 Annex III 독립형 시스템은 2027년 12월 2일, 규제 제품 내장 AI는 2028년 8월 2일로 연기되었습니다. 글쓴이는 일정이 밀렸을 뿐 Article 12의 요구 수준은 그대로라고 지적하며, 일반 로그와 감사 가능한 '기록'의 차이를 짚고 이를 충족하기 위해 만든 오픈소스 MCP 서버 Verax를 소개합니다.

본문

2026년 7월 24일 EU 공보(Official Journal)에 게재된 Digital Omnibus on AI(Regulation (EU) 2026/1744)는 사흘 뒤 발효되었고, 고위험 AI 시스템의 기록 보관(record-keeping)을 포함한 의무 적용 시점이 Annex III의 독립형 시스템은 2027년 12월 2일, 규제 제품에 내장된 AI는 2028년 8월 2일로 조정되었습니다. 올여름 '2026년 8월'이라고 적힌 글을 봤다면 그 날짜는 사라졌지만, 규정 자체는 사라지지 않았다는 것이 이 글의 출발점입니다.

Article 12가 요구하는 것

조항 자체는 짧습니다. 고위험 시스템은 수명 전체에 걸쳐 이벤트를 자동으로 기록할 수 있어야 하고, 그 기록은 위험해진 상황을 추적하고, 시장 출시 후 모니터링을 지원하며, 시스템의 작동 방식을 따라갈 수 있을 만큼 충분해야 합니다. 대시보드가 무엇을 보여주느냐가 아니라, 시스템이 무엇을 기록할 수 있느냐에 대한 요구사항입니다.

로그는 있지만 기록은 없다

글쓴이는 대부분의 에이전트 스택이 로그를 남기지만 기록을 남기는 경우는 거의 없다고 지적합니다. 빠진 것은 다섯 가지입니다. 누가 요청했는지 — 로그 줄에는 서비스 계정만 남고 에이전트, 권한 범위(scope), 배후의 인간이 없습니다. 무엇을 요청했는지 — 프롬프트는 있지만 인자가 포함된 실제 tool call은 없는 경우가 많고, 둘을 잇는 고리도 없습니다. 어떤 규칙이 결정했는지 — 호출이 실행됐다는 사실만 있고, 어떤 정책의 어떤 버전이 허용했는지, 거부된 호출이 왜 거부됐는지는 없습니다. 무엇이 일어났는지 — 결과는 다른 타임스탬프의 다른 로그에 있습니다. 그리고 그 줄이 여전히 원본인지 — 텍스트 로그는 편집·삭제·분실이 가능하고 사후에는 아무도 알 수 없습니다. 게다가 로그는 벤더의 클라우드에 앉아 있어, 질문이 들어왔을 때 답은 남의 것이 된다고 비판합니다.

Verax의 다섯 가지 구성 요소

저자들이 만든 오픈소스(Apache-2.0) MCP 서버 Verax는 에이전트와 도구 사이에 위치하며, 감사자가 실제로 묻는 질문에 대응하는 다섯 부분으로 구성됩니다. ① Identity and scope — 에이전트가 토큰으로 접속하고 토큰이 read, memory, act, pay, approve, audit 같은 허용 범위를 명시합니다. 기본 토큰은 없고, 설정 전에는 게이트가 열리지 않습니다. ② The request — 정확한 호출의 해시를 남겨 기록과 호출이 어긋나지 않게 합니다. ③ The decision — allow, deny, 인간 승인 대기 중 하나와 정책 해시·사유 코드를 기록하며, 거부도 승인과 같은 방식으로 씁니다('침묵은 기록이 아니다'). ④ The effect — 호출 실행 후 결과 해시가 담긴 effect row를 남기고 이를 허용한 결정과 대조(reconcile)합니다. audit.explain은 결정을 체인·서명·발견 사항과 함께 다시 읽어줍니다. ⑤ 서명과 체인 — 각 레코드는 서명되고 이전 레코드의 해시를 담으며, 원장(ledger) 사본을 곁에 보관해 verax doctor가 사본과 원장의 불일치를 알립니다. 정책이 단독으로 결정하지 못하는 호출은 해당 머신의 운영자가 패널이나 커맨드라인에서 승인할 때까지 보류되고, 원장은 본체가 실행되는 머신에 남아 기록이 밖으로 나가지 않습니다.

부하 대응과 스스로 밝힌 한계

노트북 한 대에서 에이전트 150개·30일간의 합성 트래픽(결정 20만 건)으로 측정한 내용도 공개합니다. 원장을 5만 행 단위로 자르고 persistent ref index를 두어, 재시작 시 모든 기록이 아니라 열린 조각과 인덱스만 읽습니다(두 조각이 닫힌 20만 건 기준 1.9초·518MB). 하루치 조회 비용은 원장의 나이가 아니라 그날의 행 수에 비례합니다. 한계도 명시합니다 — 같은 시스템이 기록하고 서명하며, 별도 witness 프로세스는 있지만 독립적인 것은 없고, 테넌트 경계가 없으며, 단일 사본 원장에서는 침묵과 '아무 일도 없었음'을 구별할 수 없고, 페이로드는 평문이며, 독립 감사는 아직 없습니다. 특정 배포가 Article 12를 충족하는지 여부는 적합성 평가자(assessor)가 판단할 문제이며 자사가 주장하지 않는다고 선을 긋습니다. npm install -g @verax-ai/body로 설치(Node 22.6 이상 필요), 공식 MCP Registry 항목은 io.github.verax-ai/verax이며, 코드는 GitHub에, 기록 형식은 Cedulon의 오픈 포맷을 사용합니다.

원문: dev.to / 번역·요약: Trawling