목적
실행·RAG·배포 감사 이벤트에 DB 리소스를 기준으로 확정한 조직 범위와 안전한 추적 메타데이터를 기록한다.
내부 챗봇의 실제 로그인 사용자가 수행한 실행을 현재 조직의 관리자 감사 화면에서 workflow·KB·모델·비용과 함께 조회할 수 있도록 한다.
문제
관리자 감사 조회는 audit_metadata.organization_id를 기준으로 조직 범위를 제한하지만, workflow 실행·RAG 검색·배포 이벤트 일부가 해당 값을 기록하지 않는다.
그 결과 이벤트가 저장돼도 조직 감사 화면에 나타나지 않으며, 실행 사용자와 workflow·KB·선택 모델·비용을 하나의 흐름으로 추적할 수 없다.
구현 범위
조직 범위
audit_logs에 별도 organization 컬럼을 추가하지 않는다.
기존 규칙인 audit_metadata.organization_id를 사용한다.
organization ID는 요청이나 실행 context 값을 그대로 신뢰하지 않는다.
Workflow·App·Knowledge Base의 DB 값을 조회해 조직 범위를 확정한다.
대상 이벤트
workflow.deploy
organization ID
workflow ID
deployment ID
request ID
correlation ID
workflow.execute
organization ID
workflow ID
workflow run ID
실제 로그인 사용자 actor
선택 모델
입력·출력 토큰
실행 비용
request ID
correlation ID
rag.retrieve
organization ID
workflow run ID
node ID
Knowledge Base ID
허용된 검색 결과 수
request ID
correlation ID
Actor 기록
내부 챗봇 실행에서는 App 또는 Workflow 소유자가 아닌 실제 로그인 사용자를 actor로 기록한다.
실행 context의 execution_subject와 DB 리소스 범위를 검증해 actor와 organization을 연결한다.
관리자 조회
필요한 실행·RAG·배포 필드를 감사 상세 metadata allowlist에 추가한다.
현재 선택한 조직의 감사 목록과 상세에서만 이벤트를 조회할 수 있어야 한다.
다른 조직의 이벤트는 목록에서 제외하고 직접 상세 조회도 404로 숨긴다.
기존 감사 이벤트를 중복 생성하지 않고 현재 producer를 보강한다.
보안
다음 정보는 감사 metadata, API 응답, 일반 로그 및 화면에 노출하지 않는다.
원문 질문과 답변
문서 및 RAG chunk 내용
권한 없는 문서의 ID·제목·개수
credential 원문
API key, token, encrypted config
raw provider request·response
완료 조건
제외 범위
audit_logs.organization_id 전용 컬럼 및 인덱스 추가
기존 감사로그 backfill
audit outbox 및 내구성 구조 일반화
배포 활성화·비활성화·삭제 lifecycle 보강
모든 trigger mode별 E2E 테스트
조직 전환 race 및 자동 갱신 UI 개선
가격 미등록 모델의 비용 표현 개선
참고
docs/demo/onboarding-chatbot-demo-required-features.md의 (6.) 조직 단위 감사로그 정합성
docs/features/audit-tracing/
docs/features/admin-dashboard/
MBA-234: 인증 기반 내부 챗봇 배포
2026-07-17 최신 구현 매트릭스
PR #490의 Generic Audit Outbox 및 Workflow correlation 병합 결과를 현재 baseline으로 사용한다.
부분 구현됨
workflow.execute 경로에 DB resource에서 확정한 organization context를 전달하는 기반
workflow_run_id, workflow_node_run_id와 correlation 식별자를 typed field로 전달·저장하는 기반
일반 비동기 audit producer의 durable audit_event_outbox 전달 경로
이 이슈에 남은 범위
내부 챗봇 실행의 실제 로그인 사용자를 canonical actor로 확정
workflow.execute에 실제 선택 모델, input/output token과 실행 비용 기록
workflow.deploy의 organization/workflow/deployment/request/correlation 계약 완성
rag.retrieve의 organization, run, node, 허용된 KB와 result count 계약 완성
관리자 audit detail allowlist와 cross-organization 목록·상세 404 검증
기존 producer와 PR feat(audit): Outbox 기반 감사 이벤트 전달과 Workflow 실행 연계 구현 #490 Outbox가 같은 사용자 동작을 중복 기록하지 않는 idempotency 검증
내부 챗봇 실행 → RAG → 실행 완료 → 조직 감사 조회 PostgreSQL/E2E 검증
PR #490의 구현을 되돌리거나 별도 audit delivery 구조를 만들지 않는다. 기존 producer와 Outbox envelope를 확장해 남은 필드를 채우며, 위 미완료 항목이 끝나기 전에는 이 이슈를 완료로 보지 않는다.
목적
실행·RAG·배포 감사 이벤트에 DB 리소스를 기준으로 확정한 조직 범위와 안전한 추적 메타데이터를 기록한다.
내부 챗봇의 실제 로그인 사용자가 수행한 실행을 현재 조직의 관리자 감사 화면에서 workflow·KB·모델·비용과 함께 조회할 수 있도록 한다.
문제
관리자 감사 조회는
audit_metadata.organization_id를 기준으로 조직 범위를 제한하지만, workflow 실행·RAG 검색·배포 이벤트 일부가 해당 값을 기록하지 않는다.그 결과 이벤트가 저장돼도 조직 감사 화면에 나타나지 않으며, 실행 사용자와 workflow·KB·선택 모델·비용을 하나의 흐름으로 추적할 수 없다.
구현 범위
조직 범위
audit_logs에 별도 organization 컬럼을 추가하지 않는다.audit_metadata.organization_id를 사용한다.대상 이벤트
workflow.deployworkflow.executerag.retrieveActor 기록
execution_subject와 DB 리소스 범위를 검증해 actor와 organization을 연결한다.관리자 조회
404로 숨긴다.보안
다음 정보는 감사 metadata, API 응답, 일반 로그 및 화면에 노출하지 않는다.
완료 조건
workflow.deploy,workflow.execute,rag.retrieve이벤트에audit_metadata.organization_id가 기록된다.404가 적용된다.제외 범위
audit_logs.organization_id전용 컬럼 및 인덱스 추가참고
docs/demo/onboarding-chatbot-demo-required-features.md의(6.) 조직 단위 감사로그 정합성docs/features/audit-tracing/docs/features/admin-dashboard/2026-07-17 최신 구현 매트릭스
PR #490의 Generic Audit Outbox 및 Workflow correlation 병합 결과를 현재 baseline으로 사용한다.
부분 구현됨
workflow.execute경로에 DB resource에서 확정한 organization context를 전달하는 기반workflow_run_id,workflow_node_run_id와 correlation 식별자를 typed field로 전달·저장하는 기반audit_event_outbox전달 경로이 이슈에 남은 범위
workflow.execute에 실제 선택 모델, input/output token과 실행 비용 기록workflow.deploy의 organization/workflow/deployment/request/correlation 계약 완성rag.retrieve의 organization, run, node, 허용된 KB와 result count 계약 완성PR #490의 구현을 되돌리거나 별도 audit delivery 구조를 만들지 않는다. 기존 producer와 Outbox envelope를 확장해 남은 필드를 채우며, 위 미완료 항목이 끝나기 전에는 이 이슈를 완료로 보지 않는다.