메인 콘텐츠로 건너뛰기
여러분의 에이전트가 고객 데이터를 다룬다면, PII가 유출되는 두 곳은 여러분이 업스트림으로 보내는 프롬프트여러분이 유지하는 로그입니다. 이 레시피는 PII 안전 로깅을 처음부터 끝까지 연결합니다: PII 마스크 규칙이 모델 전에 요청을 정리하고, 원시 매치 콘텐츠는 기본적으로 match 피드에서 빠지며, 요청 로그 보존이 제한되어 아무것도 머무르지 않습니다. 아래의 모든 것은 콘솔의 워크스페이스 구성입니다 — 여러분의 앱은 /v1/chat/completions를 변경 없이 계속 호출합니다.
각 구성 단계는 역할로 게이트됩니다. guardrail 작성은 **Developer+**가 필요합니다; 보존이나 컴플라이언스 거주지 변경은 워크스페이스 Admin이 필요합니다. Matches 피드 읽기는 모든 Member에게 개방됩니다.

1. 세 가지 움직임의 PII 안전 로깅 파이프라인

PII 안전 파이프라인은 세 개의 독립적인 컨트롤이며, 각각은 전체 워크스페이스를 위해 한 번 뒤집는 스위치입니다:

가장자리에서 마스킹

pii guardrail 규칙은 업스트림 모델이 요청을 보기도 전에 이메일, SSN, 카드 등을 타입 지정 태그로 가립니다.

원시 콘텐츠 로깅 안 함

guardrail Log raw content 토글은 기본적으로 꺼져 있으므로, match 피드는 규칙이 발동했다는 사실을 기록하되 매치된 부분 문자열은 결코 기록하지 않습니다.

보존 제한

요청 로그 보존은 기본 30일이며 서버에서 180일 하드 최대값으로 제한됩니다 — 설계상 단기.
이 페이지의 나머지는 하나의 구체적인 예제로 세 가지를 모두 함께 연결합니다.

2. 모델이 보기 전에 PII 마스킹하기

input 단계와 mask 액션의 단일 pii 규칙을 가진 guardrail을 생성하세요. mask 액션에서 각 매치는 타입 지정 태그로 대체됩니다 — 이메일은 [EMAIL]이 되고, SSN은 [SSN]이 됩니다 — 그래서 업스트림 모델은 원본이 아니라 정화된 요청을 받습니다.
{
  "type": "pii",
  "stage": "input",
  "action": "mask",
  "entities": ["email", "phone", "ssn", "credit_card", "ip"]
}
콘솔에서: Guardrails → New guardrail, 위의 규칙을 추가하고(또는 PII 카테고리 아래의 PII Shield 프리셋에서 시작), 저장하세요. 키의 Guardrail 드롭다운을 통해 API 키에 연결하거나, 모든 키가 상속하도록 워크스페이스 기본값으로 설정하세요.
일부 엔티티는 마스킹하되 다른 것은 완전히 거부하고 싶으신가요? 하나의 규칙이 엔티티별 오버라이드를 운반할 수 있습니다 — email/phone은 마스킹하되 ssn/credit_cardblockentity_actions를 통해. 전체 PII 엔티티 세트, 커스텀 정규식 엔티티, 그리고 엔티티별 오버라이드 구문은 Guardrails를 참조하세요.
그 키로 요청을 보내면 이메일이 전송 중에 가려집니다:
curl https://api.orcarouter.ai/v1/chat/completions \
  -H "Authorization: Bearer sk-orca-..." \
  -H "Content-Type: application/json" \
  -d '{
    "model": "openai/gpt-4o-mini",
    "messages": [
      {"role": "user", "content": "Draft a reply to jane@acme.com about her SSN 123-45-6789"}
    ]
  }'
모델은 Draft a reply to [EMAIL] about her SSN [SSN]을 봅니다. 원본 값은 결코 게이트웨이를 떠나지 않습니다.
입력 단계 마스킹은 PII 안전 파이프라인이 의존하는 것입니다 — 업스트림 호출 전에 요청을 정리합니다. 출력 단계 마스킹은 비스트리밍과 스트리밍 응답 모두에서 작동하므로(스트리밍은 각 청크를 제자리에서 다시 씀), 모델이 내보내는 PII도 가릴 수 있습니다.

3. 원시 콘텐츠를 로그에서 멀리 두기

발동하는 모든 규칙은 match를 기록합니다 — 그 타입, 액션, 단계, 그리고 상세 문자열. match가 매치된 부분 문자열(실제 이메일 주소, 실제 SSN)도 저장하는지는 guardrail의 Log raw content 토글로 게이트되며, 이는 기본 꺼짐 — 프라이버시 보수적 자세입니다.
Log raw content가 꺼져 있으면, Matches 피드pii 규칙이 input 단계에서 email을 마스킹했음을 보여주되, 주소 자체는 결코 보여주지 않습니다. 그것이 PII 안전 파이프라인을 위해 여러분이 원하는 바로 그것입니다: 무엇이 발동했는지의 완전한 감사 가능성, 보존된 PII는 0. 프로덕션에서는 꺼 두세요; 단기 트리아지에만 guardrail별로 켜세요. 토글은 소급되지 않습니다.
Guardrails → Matches(GET /api/guardrail/match, Member)에서 피드를 읽으세요. 실제 값을 결코 표면화하지 않고 마스킹 비율을 보려면 guardrail, 규칙 타입, 그리고 액션별로 그룹화하고 필터링하세요. match를 거짓 양성으로 표시하는 것은 Admin 작업입니다(POST /api/guardrail/match/:id/mark-fp).

4. 요청 로그가 얼마나 오래 사는지 제한하기

요청 로그 캡처는 옵트인 문제 해결 기능이며, 켜져 있을 때 보존은 제한됩니다:
설정동작
기본 보존30일워크스페이스별 값이 설정되지 않았을 때 적용됨.
하드 최대값180일더 긴 값은 서버에서 제한됨.
180일 상한을 초과할 수 없습니다 — 그것은 제안이 아니라 쓰기 시점에 강제됩니다. §2의 마스킹과 결합하면, 캡처된 로그조차 정화된 텍스트를 담고, 고정된 시계로 노후화됩니다.
캡처된 요청 로그를 데이터 저장소가 아니라 디버깅 레버로 취급하세요. 사건 동안 캡처를 활성화하고, 보존 윈도우를 단단히 유지하고, 안정 상태 관측성을 위해서는 Matches 피드(Log raw content가 꺼져 있을 때 결코 원시 PII를 담지 않음)에 의존하세요.

5. 삭제 권리와 거주지

두 가지 컨트롤이 컴플라이언트 파이프라인을 완성합니다:
사용자 자기 삭제는 30일 유예 윈도우에 들어가며, 그 후 PII가 정리되고 캐스케이드 퍼지가 그 사용자의 요청 로그, guardrail matches, 그리고 firewall events를 함께 제거합니다 — 그래서 어떤 아티팩트도 삭제 요청보다 오래 살지 않습니다.
컴플라이언스 리포트 아티팩트가 고정되는 지역을 PUT /api/compliance/residency(Admin)를 통해 설정하세요(us, eu, uk, ap, cn, global). 리포트의 교차 지역 읽기는 보류됩니다. 이는 리포트 아티팩트 지역을 고정합니다 — 추론 데이터 지리 고정이 아닙니다.

6. 배포하기 전에 검증하기

어떤 트래픽이 의존하기 전에 마스킹이 예상하는 것을 하는지 증명하세요:
1

규칙 샌드박스

guardrail 에디터의 Test 탭을 열고, 실제처럼 보이는 이메일과 SSN이 있는 샘플 텍스트를 붙여 넣고, input 단계를 고르고, 실행하세요. 샌드박스는 업스트림 호출이나 쿼터 소모 없이 판정과 렌더링된 텍스트 ([EMAIL], [SSN])를 반환합니다.
2

코퍼스에 대해 eval

Eval 탭은 번들 또는 커스텀 JSONL 코퍼스에 대해 정책을 실행하므로, 라이브가 되기 전에 잡기 비율과 거짓 양성을 측정할 수 있습니다.
3

피드가 깨끗하게 유지되는지 확인

실제 요청 하나를 보낸 다음, Matches를 열고 항목이 규칙이 발동했음을 매치된 부분 문자열 없이 보여주는지 확인하세요 — Log raw content가 꺼져 있다는 증거.

관련

Guardrails 레퍼런스

전체 PII 엔티티 세트, 커스텀 엔티티, 엔티티별 오버라이드, 그리고 Matches 피드.

RAG 파이프라인 보안 강화

검색 증강 에이전트를 위한 grounding과 PII 컨트롤.

SOC 2 증거

guardrail과 firewall 활동을 서명된 감사 리포트로 전환하세요.

데이터 유출

PII를 회선과 로그에서 멀리 두는 것 뒤의 위협 모델.