본문으로 건너뛰기
이 페이지는 기계 번역이며 충분한 검토를 거치지 않았습니다. 영어 원문이 기준입니다. 보안, 개인정보 보호, 데이터 처리, 규정 준수 및 라이선스에 관한 설명은 기술 검토가 끝날 때까지 영어로 유지됩니다. 영어 원문 보기

정책 레시피

사용자가 가장 자주 마주치는 시나리오를 위한 복사해서 붙여넣는 정책입니다. 이 페이지의 모든 레시피는 다음을 따릅니다:

  • 쉬운 말로 쓴 한 문단짜리 문제 설명으로 시작합니다.
  • 대시보드나 로컬 controlzero.yaml에 바로 넣을 수 있는, 주석이 달린 완전한 policy.yaml을 제공합니다.
  • 무엇이 차단되고 무엇이 허용되는지를 각 경우의 추출된 액션과 reason_code와 함께 정확히 나열합니다.
  • 픽스처 기반 적용 레시피에는 CI에서 실행되는 기계 판독용 scenarios.json 파일이 포함되며, 단계별 안내만 있는 레시피에는 없을 수 있습니다.

Claude Code, Gemini CLI, Cursor IDE, Kiro CLI에서 적용 이벤트의 거부는 도구 호출이 실행되기 전에 중지시킵니다.

영어 원문 -- 번역은 기술 검토 대기 중입니다

Coverage is declared per event, not per host, so an enforcing event never implies protection for another event the vendor does not expose.

기능 매트릭스는 코드에 있는 어댑터의 기능 선언에서 도출됩니다. 설치 환경의 선언을 내보내려면 controlzero coverage --json을 실행하세요(옵션 없는 controlzero coverage는 호스트별 짧은 요약만 출력합니다).

영어 원문 -- 번역은 기술 검토 대기 중입니다

The enforcement path fails closed by default when it cannot establish coverage. Signed policy bundles make policy tampering detectable, and the audit trail distinguishes a control that did not run from one that ran and found nothing. For modify-and-proceed DLP, the Python SDK masks matching secrets in place on Claude Code and Gemini CLI and returns the redacted arguments for forwarding.

처음이신가요? 읽기 전용 데이터베이스부터 시작하세요 -- 대표적인 예시이며 대부분의 고객이 가장 먼저 연결하는 레시피입니다.

제공되는 레시피​

#레시피해결하는 문제
1Read-only databaseAgent can SELECT but never DROP. Piggyback-proof.
2Block secrets and PII egressLLM calls allowed, but API keys / SSNs / cards never leave.
3개발은 경고, 프로덕션은 거부하나의 정책, 두 가지 운영 방식: 개발에서는 소프트, 프로덕션에서는 하드.
4LLM model allow-listOnly the models you have vetted can be called.
5범위가 제한된 파일 접근저장소와 /tmp는 읽기/쓰기를 허용하고 SSH 키, AWS 자격 증명, /etc는 거부합니다.
6Block outbound networkStop curl / wget / ssh / nc from exfiltrating data.
7Multi-tenant isolationTeam A agents never touch Team B resources.
8Tamper responseFour postures when the bundle is altered: warn, deny, deny-all, quarantine.
9Deny-list: block the dangerous fewLet the agent work freely; hard-block only rm, DROP, disk wipes, and SSH-key writes.
10Approval (HITL) for destructive actionsGreen-light rm / DROP / TRUNCATE / DELETE / GRANT / REVOKE before they run; fail closed otherwise.
15프롬프트 수준 PII 가림 처리Python SDK 전용이며, 지원되는 코딩 호스트는 Claude Code와 Gemini CLI입니다.

COMING SOON​

레시피 네 개는 개발 중이거나 문서화가 필요한 기능에 의존하고 있어 보류 중입니다. 우선 처리를 원하시면 TODO-RECIPE-NN 태그와 함께 지원팀에 문의하세요.

#레시피보류 사유추적
11시간대별 접근시간 및 주체 일치를 위한 조건 DSLTODO-RECIPE-11
12반복 거부 시 알림알림 규칙 빌더 (신규 기능)TODO-RECIPE-12
13Git 브랜치 범위 작업셸 추출기 (T4 -- 사양 반영 완료, SDK 사본 개발 중)TODO-RECIPE-13
14조직별 속도 제한기능은 있으나 문서화와 조건 DSL 필요TODO-RECIPE-14

레시피 형식​

모든 레시피 페이지는 빠르게 훑어볼 수 있도록 같은 템플릿을 따릅니다:

  1. 문제 -- 사용자의 말투로 쓴 한 문단.
  2. 정책 -- 복사해서 붙여넣을 수 있는 전체 YAML.
  3. 작동 원리 -- 어떤 추출기가 실행되고, 어떤 규칙이 일치하며, 어떤 결정이 내려지는지.
  4. 차단되는 항목 -- 추출된 액션, 결정, reason_code가 있는 표.
  5. 허용되는 항목 -- 추출된 액션, 결정, reason_code가 있는 표.
  6. 직접 테스트하기 -- 문서화된 시나리오에 대한 controlzero test 실행 예와, 가능한 경우 위 표를 뒷받침하는 픽스처.
  7. 주의 사항 -- 레시피가 다루지 않는 범위. 빈틈을 솔직히 밝히므로 두 번째 레시피나 도구 계층 통제와 함께 사용할 수 있습니다.
  8. 관련 레시피 -- 다음으로 필요할 가능성이 높은 두세 개.

테스트 픽스처의 작동 방식​

docs-site/docs/recipes/ 아래의 픽스처 기반 적용 레시피는 메인 저장소의 tests/fixtures/enforcement-spec/recipes/{recipe-name}/에 대응하는 디렉터리를 가집니다:

  • policy.yaml -- 레시피에 표시된 YAML과 바이트 단위로 동일합니다.
  • scenarios.json -- 레시피마다 최소 하나의 허용, 하나의 거부, 하나의 우회 시도, 하나의 "기본값으로 넘어가는" 경우를 다루는 {input, expected} 케이스 배열입니다.

tests/fixtures/enforcement-spec/recipes/test_recipes.py의 드라이버가 CI를 실행할 때마다 모든 레시피 디렉터리를 순회하며 결정 + reason_code + 추출된 메서드가 기대값과 일치하는지 검증합니다. 레시피 페이지가 코드의 실제 동작과 모순되면 CI가 실패합니다.

레시피 추가하기​

레시피는 단순한 문서 페이지가 아니라 제품에 대한 진술입니다. 작성하기 전에 다음을 확인하세요:

  1. 최소 세 곳의 고객이 문의한 문제인가?
  2. 제품이 오늘 실제로 이를 적용할 수 있는가?
  3. 80%의 경우에 맞는 하나의 정책이 있고, 나머지 20%에 대한 주의 사항이 명시되어 있는가?

세 질문 모두 "예"라면 위 형식을 따라 같은 PR에 마크다운 파일과 픽스처 디렉터리를 모두 추가하세요. 나머지는 CI 드라이버가 처리합니다.

질문 2의 답이 "아직 아니오"라면 지원팀에 문의하여 로드맵 팀이 격차를 등록하도록 하고, 위의 "COMING SOON" 표에 새 TODO-RECIPE-NN 태그와 함께 레시피를 추가한 뒤 멈추세요. 반쯤 작동하는 레시피는 없는 것보다 나쁩니다.