Skip to Content
플랫폼 아키텍처결정 거버넌스 · gate (결재+e-sign)

결정 거버넌스 — gate

gate 는 한국형 내부 전자결재 + e-sign + HTML 문서 + 법무검색을 하나의 AI-driven 결정→실행 파이프라인으로 묶는 신규 Rust + Postgres 서비스다. para-os §7(결정로그 ≠ 결재워크플로)의 물질화 — 성숙한 거버넌스 Area 가 독립 서비스로 졸업한 형태.

본 페이지 = gate 거버넌스 아키텍처 설계 (착수 직전 설계 + e-sign 엔진 빌트, 2026-06-07). 결정 SSOT = D-gate-1(scope·Phase) · D-gate-2(record SoR) · D-gate-3(actuation·e-sign 경계, e-sign 부분 D-gate-5 가 supersede) · D-gate-4(법무) · D-gate-5(e-sign 직접구현 = 암호등급 자체 서명엔진, 빌트+검증 — D-gate-3 integrator 입장 supersede). 마스터플랜·착수 큐 = B-bp-decision-pipeline-esign (service=gate, roadmap M9). 설계 전모·리서치 결론은 gate machine 메모리 2파일.

1. Phase 경계 — narrowed Phase-1 (경로 A)

7라운드 설계 후 7-agent red-team 이 풀설계(결재 + 직접 e-sign + 법무 RAG flywheel + 공개 SaaS + 결제 + 멀티테넌트 = 1인이 동시에 짓는 6~7 규제제품)에 NO-GO(11 P0 / 16 P1 / 8 누락) 판정했다. 결정적 사실 — 11 P0 가 전부 “야심 5종”에 거주한다. 따라서 narrowed Phase-1 은 대부분의 P0 를 해소가 아니라 defer 로 회피한다 (D-gate-1).

단, e-sign 은 예외 (2026-06-07 D-gate-5): 운영자가 “모두싸인의 기능을 직접, 암호등급으로 구현” 지시 → e-sign 은 defer 가 아니라 직접-build 로 빌트됐다 (§6). red-team 이 직접-build 를 막았던 P0(HSM·HTML→PDF 결정성·custody)는 이제 해소-또는-명시: 결정성 = canonical decision bytes 로 지금(typst PDF render 는 later), HSM = trait abstraction ready(dev = software key), custody = esign_seal append-only + RFC3161 TSA. 진짜 잔여 Phase-2 = 외부 서명자 본인확인기관(정보통신망법 §23-3, 자가구축 불가) — 그 외 직접 e-sign P0 는 닫혔다.

영역Phase-1 (확정·착수 가능)Phase-2+ (각자 게이트, defer)
결정로그gate decision SoR (record≠process)
결재워크플로기안→DOA→승인/반려/보류→시행 상태기계
문서HTML spine → PDF 렌더
e-signgate-native 직접-build 암호 서명엔진 (CAdES-T server-seal + RFC3161 + esign_seal evidence + verify_seal; 모두싸인 = optional alt provider) — D-gate-5외부 서명자 본인확인기관 통합(정보통신망법 §23-3) · 하드닝: HSM·PAdES 서명-PDF·prod-key
실행actuation ledger (멱등 + reconcile)saga 보상 (e-sign+결제+분개)
가로 거버넌스Blueprint gate.decision citation mirrorvisibility-gated mirror 테이블
배포 대상AXE-internal only (realchoice/Truvia table-stakes)공개 SaaS (+tenant_id RLS·self-IdP)
법무pgvector-KR 내부검색만 (결재 자동주입 X)Pinecone+Cohere+Gemini flywheel (+PIPA 자문)
결제없음포트원/토스/Paddle (+전자금융/전자상거래)
테넌시없음 (owner_id RLS)cross-tenant 축적 (+PIPA 가명정보)

빌드게이트(코드보다 먼저) = B-gate-bonin-id-contract(본인확인기관 계약, 수주~수개월) · B-gate-legal-counsel(변호사법 §109 + PIPA 의견서) · B-gate-phase2-gates.

2. record ≠ process — SoR = gate, Blueprint = mirror

  • 결정 로그 (record) — 무엇이·누가·언제·무슨 권한으로·뭘 근거로 결정됐나. append-only, 불변(수정 아닌 supersede). SoR = gate decision 테이블 (서비스가 SoR 소유, D-gate-2).
  • 결재 워크플로 (process) — 기안 → 결재선(DOA) → 승인/반려/보류 → 시행. 그 위 policy-driven·agent-assisted 레이어. 워크플로 완료 → 결정로그 한 줄 방출.

왜 gate 가 SoR 인가: round-1 은 결정로그를 Blueprint core primitive(가로) 로 뒀으나 = AXE-internal 전제. standalone 외부제품 요구가 refine — record 의 집을 gate 로 옮겼다. 근거(grounded): /architecture/artifacts “MCP backend = sole owner, data 중복 0” · /architecture/data “cross-service = 직접 DB read 금지, 명시적 신호채널(pg_notify/outbox)만” · D-cortex-9 = service-owns-SoR + Blueprint visibility-gated mirror 가 이미 빌트(template 기성). Blueprint = gate.decision citation mirror(optional consumer 1종, 외부고객 = OFF, gate 단독 완결).

3. 핵심 테이블 (Blueprint-agnostic)

테이블역할
documentHTML 작성 스파인(풍성한 포맷) + 변수(AI/템플릿 fill) + rendered_pdf_ref(서명용) + version + kind(기안/계약/통지). 내부결재 + e-sign = 같은 document 의 두 phase.
workflow내부결재 상태기계: draft→상신→in_review(결재선 step)→승인/반려/보류→시행→done.
approval_step결재선 (kind: 승인/전결/협조/합의/대결 · state: pending/approved/rejected/held/skipped). 반려·철회·서명거절 역흐름 = 1급 시민(red-team 누락 #8).
doa_policy전결규정 (entity · decision_type · amount_min/max → line jsonb).
signature내부+외부 서명 통합 primitive (provider ∈ {internal, gate, modusign} · signers · envelope_id · cert_ref · status). §4.
esign_seal암호 봉인 evidence (append-only, 전자문서법 §5 custodian) — decision_id · sealed_bytes_hash · CMS/CAdES-T DER(detached 서명 + RFC3161 토큰) · signer_cert_ref · tsa_url · sealed_at. 시행 시 esign.gate actuator 가 1행 append, verify_seal 가 읽음. §4·§6.
actuation실행 ledger (actuator_kind · payload · idempotency_key · state · result_ref · reconciled_at). §5.
eventappend-only audit.
decisiongate SoR terminal record (authority · actor · decided_at · basis citations · supersedes). canonical bytes = esign_seal 봉인 대상.

4. 서명 = 한 primitive

내부 sign-off = 외부 e-sign = 같은 primitive signature. 누가·법적무게만 다르다. provider ∈ {internal, gate, modusign}:

  • internal — 결재선 step 의 인증된 결재 승인 (UI sign-off). gate identity = 실지명의.
  • gate (Phase-1, D-gate-5) — gate-native 암호 봉인. 시행 시 승인된 결정의 canonical bytes 를 단일 서버 서명 identity 로 CAdES-T server-sealesign_seal 에 evidence 저장. 봉인 1건 = signature(provider=gate) + esign_seal 1행. §6.
  • modusign (optional alt provider) — 외부 카운터파티 라운드트립이 필요할 때의 대체 경로 (esign.send/EsignStub). Phase-1 의 대안이지 기본 아님.

내부 결재 승인도, gate 서버 봉인도, 외부 모두싸인 e-sign 도 “행위자가 결정을 시점에 (법적으로) 확정”하는 한 종류의 행위 — para-os §84 와 정합.

5. actuation ledger + reconcile (분산 일관성)

승인된 결정 → actuator 호출 (frame.post_journal / index.register_deal 등; Area 서비스 = 결정 파이프라인의 actuator). 결정→실행은 분산 트랜잭션이므로:

  • actuation.idempotency_key = uuidv5(workflow + seq + actuator + payload_hash) — gate 측 재시도 멱등.
  • reconcile 워커 (frame-worker 패턴, pg_notify) — inflight→done/failed 정합.
  • ⚠️ gate idempotency_key 는 외부 이중실행을 못 막는다 (red-team P0 #5) — esign.gate 봉인은 gate 내부 actuator라 esign_seal(decision_id 유일) append 가 멱등이지만, 외부 provider 경로(모두싸인 alt) 는 provider-side idempotency 토큰 필요. saga 보상(e-sign+결제+분개)은 결제 도입 Phase-2.

6. e-sign 경계 — Phase-1 = gate-native 직접-build 암호 서명엔진

2026-06-07 pivot (D-gate-5, D-gate-3 e-sign 경계 supersede): D-gate-3 은 e-sign 을 모두싸인 integrator 로 두고 직접-build 를 Phase-2 로 defer 했으나, 운영자가 “모두싸인의 기능을 직접, 암호등급으로 구현” 지시 → Phase-1 이 직접-build 엔진이다. 빌트+검증 완료 (이 세션).

Phase-1 = BUILD (직접 구현, 작동·검증됨) — gate 가 자체 암호 서명엔진을 갖는다 (para-os §84 와 정합: gate = 결정 파이프라인의 actuator, 봉인은 esign.gate actuator):

  • ① CMS/PKCS#7 CAdES-BES detached 서명 (RSA-2048 + SHA-256). DocumentSigner trait(HSM-ready abstraction) + SoftwareSigner(self-signed X.509). 적대적 리뷰(위조 도달경로 없음) + openssl 양방향 interop, 7 tests.
  • ② RFC3161 신뢰 타임스탬프 → CAdES-T (hand-rolled ASN.1, 단일 clean dep line). default = DigiCert RSA TSA; 한국 prod = Koscom/CrossCert config-swap. 9 tests + live round-trip.
  • ⑤ 워크플로 배선: 시행(execute)esign.gate actuator 가 승인된 결정을 server-seal — canonical decision bytes → CAdES-T → append-only esign_seal evidence 테이블 저장 (전자문서법 §5 custodian). 신규 verify_seal MCP tool = 서명 + 무결성 + 타임스탬프 검증. e2e: 결재→seal→verify valid · 저장 CMS openssl cross-verify 통과 · DB tamper→integrity fail.

법적 근거 — 전자서명법 (2020, 공인 폐지): 사서명(private/internal e-sign)은 실지명의 + 서명의사면 유효, 운영 라이선스 불요. gate 매핑 = 실지명의 = 인증된 gate identity(내부 서명자) · 서명의사 = 결재 승인 행위. → 내부/사내 e-sign 은 본 엔진으로 합법 완결.

모두싸인 = optional alternative provider (기본 아님): 외부 카운터파티 라운드트립이 필요할 때 signature.provider=modusign 경로 (esign.send/EsignStub) 가 여전히 존재. gate-native 봉인이 Phase-1 기본, 모두싸인은 대안.

잔여 하드닝 / Phase-2:

  • 외부 서명자 본인확인 = 진짜 Phase-2 — 방통위 지정 본인확인기관 통합(B-gate-bonin-id-contract, 정보통신망법 §23-3 자가구축 불가). 내부 서명자는 gate auth = 실지명의라 불요; 외부 신원 강증명만 게이트.
  • HSM (cryptoki/PKCS#11) — DocumentSigner trait 가 이미 abstraction-ready, dev 는 software key. prod = HSM-backed DocumentSigner 구현 + 서명키 DR/escrow(분실 = 전 과거서명 검증불가).
  • PAdES 서명-PDF 컨테이너 (③④) — typst deterministic render + pyHanko PAdES. 현재 봉인 대상 = decision canonical bytes(결정적); 사람이 읽는 sealed-PDF 는 later.
  • production 키관리 — dev 는 ephemeral key. prod = 영속 서버 서명 identity + 회전·백업.

MUST NOT (Phase 무관, 불변): 자체 CA · per-user cert · 자체 TSA · “공인/인증” 주장. gate 는 단일 서버 서명 identity 로 봉인한다 (per-user cert 발급 없음) — 이것이 ModuSign-recipe 모델(provider 가 서버 서명으로 봉인, 사용자별 인증서 없이). 자체 TSA 도 안 만든다 — 외부 RFC3161 TSA(DigiCert/Koscom/CrossCert)에 위임.

환경 변수 (signing identity + TSA): GATE_ESIGN_KEY_PEM / GATE_ESIGN_CERT_PEM (서버 서명 키·인증서 PEM, 또는 GATE_ESIGN_KEY_DIR 로 디렉터리 지정) · GATE_TSA_URL (RFC3161 TSA 엔드포인트, default DigiCert / 한국 prod Koscom·CrossCert). prod 의 GATE_ESIGN_KEY_PEM = 비밀customers.yaml services.gate.secrets[] 에 등재(blueprint OIDC 서명키 blueprint/axe/oidc-signing-key 패턴, /architecture/secrets).

7. 법무 모듈 가드레일

gate 법무모듈 = 검색·요약·번역·템플릿(로폼: user-blank, 기계적)만 (D-gate-4).

하드룰 — 변호사법 §109(형사)·§34(5): 법률상담/사안별 자문/대리/결과예측-as-advice 금지. 공개 “AI 법률상담” 금지(AI대륙아주 7개월 폐쇄·징계 선례). 변호사 노출 시 정액광고만(로톡 모델 — 알선료/성공보수/광고수익배분 금지). 모든 출력 “법률 정보, 자문 아님” disclaimer. cite = retrieval-verified(존재 + 시행일/선고일 temporal 강제). 결재 자동주입 차단 — AI 기안이 법령/판례를 auto-approve 경로에 주입하지 않음(red-team P0 #2).

Phase-1 data: 국가법령정보 OPEN API(open.law.go.kr, 이용제한없음·무료) + data.go.kr 판례(상용 OK) + HF korean_law_open_data_precedents(openrail). 대법원/헌재 + 법령 grade(하급심 = 엘박스/케이스노트 상용 walled 라 제외). SoR = gate Postgres, index = pgvector-KR(Pinecone 아님). lbox_open/kcl = CC BY-NC = 유료제품 금지.

Phase-2 gate: Pinecone + Cohere rerank + Gemini embed flywheel(LLM비용 사용자부과·DB 복리) + cross-tenant 축적 = PIPA 처리근거·가명정보·국외이전(§28-8) 자문(B-gate-legal-counsel) 선결. B2B/internal-use 유지 = 최저위험.

8. 규제 경계 요약

법령무엇을 강제하나Phase
전자서명법 (2020, 공인폐지)사서명도 실지명의 + 서명의사면 유효 — 직접구현 합법, 운영 라이선스 불요. gate: 실지명의 = gate auth · 서명의사 = 결재 승인Phase-1 (직접 e-sign 빌트, D-gate-5)
전자문서법 §5서명문서 + 메타 무결성 보관 (gate = evidence custodian via esign_seal append-only + RFC3161 TSA)Phase-1 (gate-native 봉인)
정보통신망법 §23-3본인확인 자가구축 불가 → 방통위 지정 본인확인기관 통합 필수Phase-2 (외부 서명자 신원 한정; 내부 서명자는 gate auth = 실지명의라 불요)
변호사법 §109/§34법률사무 무면허 금지 — 검색·정보 한정, 자문/대리/auto-주입 금지Phase-1 (법무 활성 시)
개인정보보호법 (PIPA)cross-tenant 축적·국외이전·CI/DI = 처리근거·가명정보·DPIAPhase-2 (flywheel/SaaS 전제)
전자상거래법 (2025 개정)정기결제 명시동의·셀프해지·사전고지·다크패턴 금지Phase-2 (결제 전제)

대법원 2017도13263(해시 무결성 → 서명시점 해시 + custody chain) · 민사소송법 §358(실제 서명행위 → 진정성립)이 증거능력 타깃. 제외문서 = 유언·부동산등기·공정증서·일부보증(민법 §428-2).

9. Phase-2 게이트 (deferred)

각 야심은 자기 P0/규제 게이트를 동반한다 (B-gate-phase2-gates):

  1. e-sign — 엔진은 Phase-1 빌트 (D-gate-5), 잔여만 Phase-2/하드닝: (Phase-2) 외부 서명자 본인확인기관 통합(정보통신망법 §23-3) · (하드닝) HSM/KMS DocumentSigner(trait ready) + 서명키 DR/escrow · PAdES 서명-PDF(typst deterministic render + pyHanko) · production 키관리. 닫힌 항목: 자체 PKI 서버서명·CAdES-T·RFC3161 타임스탬프·custody(esign_seal)·canonical-bytes 결정성·para-os §84 재결정 = §6 참조.
  2. Pinecone 법무 flywheel — PIPA 자문 · 비식별/가명정보 · namespace 테넌트격리 · PII 임베딩 전 제거 코드강제.
  3. 공개 SaaS — tenant_id RLS substrate(owner_id RLS 재설계, red-team P0 #8) · self-IdP tenant바인딩/iss/aud/per-tenant 시크릿/MFA(P0 #9) · rate-limit·abuse · 서브도메인 격리.
  4. 결제 — 전자금융/전자상거래법(동의·셀프해지·사전고지·다크패턴) · LLM 미터링 과금 · Paddle MoR 영세율. (Stripe = 한국법인 불가.)
  5. cross-tenant 축적 — PIPA 근거 확정 후.

10. 착수 순서

docs-first(본 페이지 + D-gate-1~5) → cp -R cortex gate scaffold(auth 3-branch ladder[HS256 / Blueprint OIDC / Entra] · gate_app NOSUPERUSER + gate.actor GUC RLS · append-only audit · blue/green caddy 상속, index 도메인 미상속) → 포트 41xx 배선(pg4100 / blue4110 / green4111 / proxy4112) → 7테이블 migration(6 + esign_seal) → 상태기계 → esign.gate actuator(gate-native CAdES-T server-seal + esign_seal + verify_seal, D-gate-5 — 빌트) + 모두싸인 alt-provider actuator(Actuator trait + EsignStub → 모두싸인 sandbox, optional) → customers.yaml services.gate.secrets[](+ GATE_ESIGN_KEY_PEM 서명키) · cloudflared · pre-push guard.

관련

Last updated on