당신의 AI 에이전트는 가드레일만이 아니라 거버넌스 레이어가 필요합니다

발행: (2026년 5월 14일 PM 12:20 GMT+9)
13 분 소요
원문: Dev.to

Source: Dev.to

Your AI agent approved a $2.4 M loan disbursement at 2:47 am. No human reviewed it. You find out because the customer called. You pull the logs—there are none that matter. You check the prompt; it looks fine. You check the output validator; it passed. You have no idea what policy version ran, what signals the model saw, or whether anyone could tamper with the record between then and now. You are completely exposed.

This is not a hypothetical. If you’re shipping agents that make decisions with real‑world consequences—approvals, disbursements, escalations, data access—you’ve already built the system that will eventually put you in this position.

“가드레일”의 문제

AI‑안전 툴링 생태계는 하나의 패턴으로 수렴했습니다: 모델을 래핑하고, 출력을 검증하고, 필요하면 신뢰도 임계값을 추가합니다. 출력이 잘못된 것처럼 보이면 거부합니다. 이것이 가드레일이며, 거버넌스는 아닙니다.

가드레일이 부족한 이유

  • 프롬프트 엔지니어링은 모델에게 무엇을 선호하도록 알려줍니다. 실행 시점에 강제력이 없으며, 법적 효력이 있는 버전 관리도 없고, 작성된 대로 실행됐다는 증거도 없습니다.
  • If/else 출력 검증은 단순히 애플리케이션 코드일 뿐입니다. 배포마다 바뀔 수 있고, 로그에 남긴 것 외에는 감사 추적이 없으며, 플래그가 없는 코드 변경으로 쉽게 우회될 수 있습니다.
  • LLM 출력 검증기(JSON‑스키마 검사, 신뢰도 임계값, 분류기 기반 필터)는 출력이 보기에 허용 가능한지 알려줍니다. 어떤 정책 버전이 실행됐는지, 동일한 입력에 대해 내일도 같은 결정이 내려질지, 실행 이후 기록이 수정됐는지는 알 수 없습니다.

이들 중 어느 것도 검증 가능한 기록을 생성하지 못합니다—그저 로그를 만들 뿐입니다. 로그는 변경 가능하고, 불완전하며, 증거가 될 수 없습니다.

당신의 컴플라이언스 팀이 물을 때:

“이 특정 대출이 이 특정 정책 버전으로, 이 특정 입력을 사용해 승인됐다는 것을 보여주고, 변경되지 않았음을 증명해 주세요.”

로그로는 그 질문에 답할 수 없습니다. 암호학적 증명은 가능합니다.

실제 거버넌스가 의미하는 것

네 가지 속성. 의사결정 시스템에 네 가지 모두가 없으면 거버넌스가 아니다:

  1. Determinism – 같은 정책 버전과 같은 입력이 주어지면 항상 동일한 출력이 나옵니다. 무작위성도, 모델 온도도, 숨겨진 상태도 없습니다. 결정은 순수 함수입니다.
    비유: 기록에서 다시 도출할 수 있는 법원 판결.

  2. Cryptographic attestation – 결정, 입력, 정책 버전이 함께 해시되고 실행 시점에 개인 키로 서명됩니다. 서명이 검증에 실패하지 않는 한 기록을 사후에 수정할 수 없습니다.
    비유: 공증인의 인장이 변조되지 않았음을 증명하는 공증 문서.

  3. Replay protection – 각 실행은 정책 ID, 버전, 정규화된 입력 해시에서 파생된 고유한 지문을 가집니다. 동일한 지문을 두 번 제출할 수 없습니다.
    비유: 일련 번호가 있는 수표; 한 번 현금화되면 다시 현금화할 수 없습니다.

  4. Independent verifiability – 공개 키를 가진 누구든 실시간 시스템, 데이터베이스, 런타임 상태에 접근하지 않고도 증명을 검증할 수 있습니다. 증명은 자체 포함됩니다.
    비유: 작성자에게 연락하지 않고도 PGP 서명된 메시지를 누구나 검증할 수 있음.

이 네 가지 속성은 “우리는 올바른 정책이 실행됐다고 생각한다”를 “우리는 올바른 정책이 실행됐음을 증명할 수 있다”로 바꿉니다.

코드를 보여 주세요

아래는 @parmanasystems/core 로 구축된 대출 승인 에이전트입니다. AI 모델이 권고를 생성하고, Parmana Systems는 시스템이 해당 권고에 따라 행동할 권한이 있는지를 강제합니다.

import crypto from "crypto";
import {
  executeFromSignals,
  LocalSigner,
  LocalVerifier,
  MemoryReplayStore,
} from "@parmanasystems/core";

// Your Ed25519 keypair — use AWS KMS or similar in production
const { privateKey, publicKey } = crypto.generateKeyPairSync("ed25519", {
  privateKeyEncoding: { type: "pkcs8", format: "pem" },
  publicKeyEncoding:  { type: "spki",  format: "pem" },
});

const signer      = new LocalSigner(privateKey);
const verifier    = new LocalVerifier(publicKey);
const replayStore = new MemoryReplayStore();

// Signals come from your AI pipeline, data layer, risk engine, etc.
const attestation = await executeFromSignals(
  {
    policyId:      "loan-approval",
    policyVersion: "2.1.0",
    signals: {
      applicant_id:        "usr_8f3k2p",
      requested_usd:       240_000,
      credit_score:        712,
      dti_ratio:           0.31,
      employment_months:   26,
      model_recommendation: "approve", // from your LLM
    },
  },
  signer,
  verifier,
  replayStore
);

console.log(attestation.execution_state); // "completed"
console.log(attestation.decision.action); // "approve"
console.log(attestation.signature);
// "mK3nQs8rXpLw2YbD9eHtNcAoGiUjZlV0TfRkMyPh1CxBs6WqJ5IuEdOgPm4..."

model_recommendation 은 단순히 또 다른 신호일 뿐입니다. 거버넌스 레이어가 실행 조건이 충족되는지를 판단합니다—모델은 정책이 무엇을 말하는지에 대해 투표권이 없습니다. credit_score 가 정책 임계값 이하로 떨어지면, 모델의 권고와 관계없이 execution_state: "blocked" 가 반환됩니다.

실제로 얻는 것

executeFromSignals를 호출할 때마다 ExecutionAttestation이 반환됩니다. 각 필드는 검증 가능한 증거의 조각입니다:

{
  "executionId":   "a3f2b1c4d8e7f96a...",
  "policyId":       "loan-approval",
  "policyVersion": "2.1.0",
  "signalsHash":   "8b3f9c2a...",
  "decision": {
    "action":            "approve",
    "requires_override": false,
    "reason":            "all thresholds met"
  },
  "execution_state": "completed",
  "signature": "mK3nQs8rXpLw2YbD9eHtNcAoGiUjZlV0TfRkMyPh1CxBs6WqJ5IuEdOgPm4..."
}
  • executionId — 재생 방지를 보장하는 고유 지문.
  • policyVersion — 결정과 암호학적으로 연결됨.
  • signalsHash — 정확한 입력이 변경되지 않았음을 보장.
  • signature — 공개키만 있으면 누구나 독립적으로 검증할 수 있는 Ed25519 증명.

이러한 속성을 갖추면 불변하고 검증 가능한 증거로 컴플라이언스 요청에 답변할 수 있으며, 가변 로그에 의존하지 않게 됩니다.

{
  "meHash":        "7d4e1f8a...",
  "runtimeVersion": "1.65.0",
  "signature":     "mK3nQs8rXp..."
}

signature가 바로 이것을 단순 로깅이 아니라 거버넌스로 만드는 요소입니다. 전체 증명의 정규화된 JSON 직렬화(키 순서가 결정적이고 공백 변형이 없음)를 기반으로 계산됩니다. 서명 후 어떤 필드라도 수정하면 검증에 실패합니다.

컴플라이언스 팀은 이 레코드를 오프라인(데이터베이스나 프로덕션 접근 없이)으로 가져가 검증할 수 있습니다:

import { verifyAttestation, LocalVerifier } from "@parmanasystems/core";

const verifier = new LocalVerifier(publicKey); // public key only — no secrets
const valid = verifyAttestation(attestation, verifier);
// true — or throws with the specific field that failed

그들은 이진 답변을 받습니다: 이 레코드가 진본이며 변조되지 않았다는 것이든, 그렇지 않다는 것이든. 로깅 인프라에 대한 신뢰가 필요 없고, 프로덕션 데이터베이스에 접근할 필요도 없으며, 당신의 말에 의존하지 않아도 됩니다.

이것이 “우리 로그를 보여드립니다”와 “암호학적 증거를 보여드립니다”의 차이점입니다.

누가 이 내용에 관심을 가져야 할까

Fintech 엔지니어 – 신용 의사결정, 결제 승인, 혹은 특정 정책 버전이 특정 거래를 관리했음을 증명해야 하는 모든 관할 구역에서 워크플로우를 제공하는 경우.
MiFID II, SOC 2, PCI, Basel III 모두 로그만으로는 충족되지 않는 감사 요구사항을 가지고 있다. 서명된 확인서가 필요하다.

AI 플랫폼 팀 – 도구 사용이 가능한 LLM 에이전트, 자율 파이프라인, 혹은 다단계 의사결정 체인을 구축하는 경우. 에이전트가 실제 세계에 영향을 미치는 행동(돈 송금, 기록 수정, 의사결정 에스컬레이션 등)을 트리거할 수 있게 되면, 그 행동을 승인한 근거를 증명하는 레이어가 필요하다. “모델이 결정했다”는 감사 추적이 아니다.

돈, 데이터, 혹은 의사결정에 관여하는 자율 시스템을 구축하는 모든 사람 – 미래의 규제기관, 감사인, 고객, 혹은 법무팀이 다음과 같은 질문을 할 수 있다:

“올바른 정책이 올바른 입력과 함께 실행되었으며, 기록이 아무도 변경하지 않았음을 증명하십시오.”

오늘 이 질문에 답할 수 없다면, 결국 가장 안 좋은 시점에 물어볼 것이다.

패턴은 언제나 같다: 무언가가 잘못되고, 누군가가 증명을 요구하고, 당신은 로깅 아키텍처가 디버깅을 위해 설계된 것이지 증명을 위해 설계된 것이 아니라는 것을 깨닫게 된다.

사용해 보기

Parmana Systems는 Apache 2.0 라이선스로 오픈 소스입니다.

npm install @parmanasystems/core

Docs:

빠른 시작을 통해 5분 이내에 서명된 증명을 얻을 수 있습니다. 대출 승인 정책은 작동 예제로 제공됩니다. 이미 프로덕션에서 에이전트를 실행 중이라면, 통합 인터페이스는 기존 의사결정 로직을 둘러싼 단일 함수 호출입니다.

거버넌스는 문제가 발생한 후에 추가하는 것이 아니라, 문제가 발생하지 않았음을 증명할 수 있게 해줍니다.

0 조회
Back to Blog

관련 글

더 보기 »