> ## Documentation Index
> Fetch the complete documentation index at: https://docs.platform.nora.my/llms.txt
> Use this file to discover all available pages before exploring further.

# 감사

> 모든 중요 액션의 기록 — 그리고 SIEM 으로 포워딩.

중요한 모든 액션이 로깅. 감사 트레일이 누가·언제·왜 뭐 했는지 아는 방법 — 팀 리뷰, 컴플라이언스, 인시던트 응답용.

## 무엇이 감사되나

* **배포와 롤백** — Flow 와 파이프라인 버전.
* **승인** — 액터·이유·타겟과 함께 결정.
* **접근 변경** — 초대, 역할 변경, 멤버 제거, Flow 별 접근 부여.
* **토큰 이벤트** — 발급, 취소, 첫 사용.
* **시크릿 로테이션** — 커넥터, 도구 헤더, 트리거 시크릿. 값은 절대 로깅 안 됨.
* **Provider 키 이벤트** — 설정, 삭제.
* **정책 변경** — 워크스페이스 정책 편집.
* **개선 배포** — 개선 플로우의 출시.
* **데이터 액션** — 벌크 supersede, 삭제.
* **결제 변경** — 플랜 변경, 세금 편집, overage cap 조정.

트레이스 페이로드 (프롬프트, 도구 응답) 는 감사 항목 아님 — 자체 보존 시스템. 감사는 구조·접근·설정 변경 커버.

## 감사 뷰

**Settings → Security → Audit**. 역시간순 목록:

* **Actor** — 이름 + 이메일 (또는 자동화의 경우 "워크스페이스 토큰: X").
* **Action** — publish / rollback 등.
* **Target** — Flow, 블록, 시크릿 이름, 멤버.
* **Details** — 액션 특화 필드 (릴리스 노트, 롤백 이유, 역할 델타).
* **Source** — UI / CLI / API / 웹훅.
* **IP / user agent** — 액션 시작한 곳.
* **서명** — 모든 항목 서명; 변조 감지 가능.

액터·액션 타입·날짜 범위로 필터.

## 익스포트

**Settings → Security → Audit → Export**:

* **CSV** — 평평한 테이블.
* **JSON** — 항목당 전체 세부.
* **PDF** — 인쇄 가능, 로우당 항목.

익스포트가 워크스페이스 레벨 서명으로 서명되어 외부 감사자가 진위 검증 가능.

특정 기간 벌크 익스포트:

```bash theme={null}
# CLI (API 로 감사 익스포트)
curl -H "Authorization: Bearer $NORA_TOKEN" \
     "https://api.platform.nora.my/v1/audit?from=2026-07-01&to=2026-07-31" \
     > audit-jul-2026.jsonl
```

## 보존

* **Free** — 30일.
* **Team** — 1년.
* **Enterprise** — 설정 가능 (최대 7년 또는 무기한).

옛 항목은 아카이브 (익스포트로 여전히 쿼리 가능) 되지만 기본 뷰에서 숨김.

보존 설정: **Settings → Security → Audit → Retention**. Owner 만.

## 불변성

감사 항목은 삭제·편집·재정렬 안 됨. 항목이 틀리면 교정 항목 추가 — 원본 남음. 이것이 감사 트레일을 신뢰 가능하게 만듦.

Owner 조차 감사 항목 삭제 못함. 저장 레이어에서 강제.

## SIEM 포워딩

보안 운영 센터 있는 조직용으로 감사 이벤트를 SIEM 으로 포워드. **Settings → Security → Audit → Forwarding**:

* **Slack / Discord 웹훅** — 중요 이벤트 (배포, 롤백, 시크릿 로테이션) 알림.
* **PagerDuty** — 롤백이나 자동 롤백 트리거에 페이지.
* **Splunk / Datadog / SumoLogic** — HTTPS 로 JSON 스트림.
* **일반 웹훅** — 모든 감사 이벤트를 여러분 엔드포인트로 POST.

목적지별 필터 설정 — 예: publish 와 rollback 이벤트만 Slack 으로, 모든 것을 Splunk 로.

### 웹훅 페이로드 모양

```json theme={null}
{
  "id": "audit_abc",
  "timestamp": "2026-07-31T09:12:34Z",
  "workspace_id": "acme",
  "actor": {"kind": "user", "id": "u_alice", "email": "alice@acme.com"},
  "action": "flows.publish",
  "target": {"flow": "support-agent", "version": 42},
  "details": {"summary": "refund tightening"},
  "source": "cli",
  "ip": "10.0.0.42",
  "signature": "sha256:..."
}
```

## 서명 검증

각 항목이 서명 유지. 워크스페이스의 공개 감사 키 (**Settings → Security → Audit → Verification key**) 로 검증:

```python theme={null}
import hmac, hashlib
signature = hmac.new(key, canonical_json(entry).encode(), hashlib.sha256).hexdigest()
assert signature == entry['signature']
```

누출-변조된 감사 로그가 검증 실패하도록 보장.

## 컴플라이언스 모드

**Compliance mode** 켬 (Flow 별, Settings → Access) 이 감사 조임:

* 모든 액션이 이유 필요 (옵션 아님).
* 감사 보존이 컴플라이언스 요구 기간으로 강제.
* 특정 파괴 액션이 multi-sign 승인 필요 (감사가 두 사인자 모두 기록).
* 데이터 익스포트가 명시 승인 워크플로우 필요.

컴플라이언스 모드는 Flow 별 단방향 전환 — 끄기는 Owner + 서면 정당화 필요.

## 감사로 디버깅

감사 뷰가 답하는 흔한 질문:

* "이 Flow 마지막으로 누가 배포?" — 필터 action=`flows.publish`, target=`<flow>`.
* "왜 롤백?" — 필터 action=`flows.rollback`, 항목 클릭으로 이유 필드.
* "이 시크릿 언제 로테이션?" — 필터 action=`secrets.rotate`.
* "지난주 이 Flow 접근 만진 사람?" — 필터 target=`<flow>`, action prefix=`access.`.

## 관련

* [감사 트레일 (Reliable)](/ko/reliable/versions/audit) — 이 같은 감사 표면, 버전/배포 각도에서 봄.
* [접근·정책](/ko/settings/workspace/access) — 컴플라이언스 모드 토글이 여기 있음.
* [`nora approvals`](/ko/cli/approvals) — 승인 결정이 감사됨.
