Monitoring 정책
Monitoring 정책 (Monitoring policies)
sbx policy ls와 sbx policy log로 활성 정책 규칙과 샌드박스 네트워크 활동을 한눈에 확인하는 방법을 알아볼게요.
출처: 문서
본문
sbx policy ls와 sbx policy log는 규칙이 로컬 구성에서 왔든 organization 거버넌스에서 왔든 상관없이 모든 활성 정책 규칙과 샌드박스 네트워크 활동을 통합해서 보여줘요. 작성한 규칙을 검증하고, 요청이 차단되거나 허용되는 이유를 디버깅하는 데 모두 유용해요.
규칙 나열 (Listing rules)
sbx policy ls로 모든 활성 정책과 현재 상태를 확인하세요:
$ sbx policy ls
POLICY SOURCE APPLIES TO SUMMARY
local-policy local all network: 42 allow, 1 deny; filesystem read: 1 allow; filesystem write: 1 allow
1b2633ea-e604-48bb-a5e6-3ac86ba383fe kit sandbox:my-sandbox network: 3 allow
열은 다음과 같아요:
POLICY: 정책 이름.SOURCE: 정책이 온 곳.local은 로컬 구성(프리셋 또는sbx policy로 추가한 규칙),kit은 kit,org는 조직을 의미해요.APPLIES TO: 정책이 적용되는 샌드박스.all은 전역 정책,sandbox:<name>은 단일 샌드박스로, 프로필 이름은 그 프로필을 사용하는 샌드박스로 범위를 한정해요.SUMMARY: 유형과 결정별 규칙 항목 수. 예:network: 5 allow, 1 deny. 여러 대상을 이름 붙인 규칙은 대상마다 항목 하나씩 기여해요. 나열에 HTTP 메서드·경로를 매칭하는 규칙이 포함되면 네트워크 수는 각 부분을(L4)또는(L7)로 표시해요. HTTP 규칙을 참고하세요.
규칙 ID와 리소스를 포함한 전체 규칙 수준 상세를 보려면 --wide를 전달하세요. 단일 정책이나 규칙을 조사하려면 sbx policy inspect를 사용하세요:
$ sbx policy inspect Balanced
--source로 출처(local, org, kit)를, --decision으로 결과(allow, deny)를 필터링할 수 있어요.
--protocol tcp 또는 --protocol udp로 네트워크 규칙을 필터링할 수 있어요. --created-via 필터는 규칙이 어떻게 생성됐는지(default, added, provisioned, approval) 선택해요.
--include-inactive를 전달하면 STATUS 열도 나타나요. 비활성 규칙 표시를 참고하세요.
Organization 거버넌스가 활성화되면 출력은 어떤 조직이 정책을 관리하는지, 동기화 상태, 숨겨진 비활성 규칙 수를 보여주는 요약 줄로 시작해요:
$ sbx policy ls
Governance: Managed by my-org | Sync: OK, last synced 08:21:01 | Hidden: 9 inactive rules. Show with: sbx policy ls --include-inactive
POLICY SOURCE APPLIES TO SUMMARY
default filesystem org all filesystem read: 2 allow; filesystem write: 7 allow, 2 deny
default network org all network: 38 allow, 4 deny
Governance는 어떤 조직이 정책을 관리하는지, Sync는 데몬이 최신 규칙을 가져왔는지 보여줘요. 동기화 상태에 오류나 오래된 타임스탬프가 보이면 데몬이 최신 org 정책을 갖고 있지 않을 수 있어요. sbx policy reset을 실행해 새로 가져오도록 강제하세요. Hidden은 숨겨진 비활성 규칙 수와 그 규칙을 드러내는 방법을 보고해요.
Docker가 어떤 조직이 계정을 거버넌스하는지 결정할 수 없으면 정책 출력에 Governance: Unresolved가 표시되고 대시보드에도 동일한 미결정 상태가 보여요. 예를 들어 계정이 거버넌스가 활성화된 여러 조직에 속할 때 이런 일이 발생해요. 충돌이 해결될 때까지 정책 시행은 실패 닫힘(fail closed)이므로 로컬 allow 규칙으로 접근을 허용할 수 없어요. 관련 조직의 관리자에게 문의해 충돌하는 거버넌스 구성을 해결하세요.
비활성 규칙 표시 (Showing inactive rules)
Organization 거버넌스가 활성화되면 local 및 kit 정의 allow 규칙은 평가되지 않으므로 sbx policy ls가 기본적으로 숨겨요. 그것들도 나열하려면(예: organization 정책이 덮어쓰는 allow 규칙을 확인하려면) --include-inactive를 전달하세요. 이러면 STATUS 열이 추가돼요:
$ sbx policy ls --include-inactive
Governance: Managed by my-org | Sync: OK, last synced 08:41:06
POLICY SOURCE APPLIES TO SUMMARY STATUS
default filesystem org all filesystem read: 2 allow; filesystem write: 7 allow, 2 deny active
default network org all network: 38 allow, 4 deny active
default-fs-read-allow-all local all filesystem read: 1 allow inactive
default-fs-write-allow-all local all filesystem write: 1 allow inactive
비활성 정책은 STATUS 열에 inactive로 표시돼요. Organization 거버넌스가 활성화된 동안에는 효과가 없어요. Local 및 kit 정의 deny 규칙은 organization 정책 위에 여전히 적용되므로 활성 상태로 남고 숨겨지지 않아요. Precedence(우선순위)를 참고하세요.
--type network, --type filesystem, --type http로 해당 유형의 정책만 표시할 수 있어요. 샌드박스 인자 없이 sbx policy ls는 모든 샌드박스의 모든 정책을 보여줘요. 샌드박스 이름을 전달하면 전역 정책과 그 샌드박스에 범위 지정된 정책으로 필터링해요:
$ sbx policy ls my-sandbox
파일시스템 규칙
sbx policy ls는 파일시스템 정책을 네트워크 정책과 함께 나열해요. 파일시스템 규칙은 샌드박스가 워크스페이스로 마운트할 수 있는 호스트 경로를 제어해요. --type filesystem을 전달하면 그것만 표시해요:
$ sbx policy ls --type filesystem
POLICY SOURCE APPLIES TO SUMMARY
local-policy local all filesystem read: 1 allow; filesystem write: 1 allow
쓰기 가능한 워크스페이스 마운트는 filesystem:read 규칙과 filesystem:write 규칙 모두로 허용되어야 하고, 읽기 전용 마운트는 filesystem:read만 필요해요. 기본 로컬 정책은 모든 경로에 대한 읽기·쓰기 접근을 허용하며, 위의 두 default-fs-* 규칙으로 표시돼요. 규칙 문법과 경로 패턴은 Policy 개념을 참고하세요.
HTTP 규칙
HTTP 메서드와 경로를 매칭하는 규칙은 http 유형으로 나열돼요. --wide를 전달하면 네트워크 규칙과 함께 METHOD와 PATH 열을 볼 수 있어요:
$ sbx policy ls --wide
TYPE METHOD PATH
network - -
http GET /repos/org/project/**
http POST /admin/**
전체 대상을 매칭하는 규칙은 두 열 모두에 -를 보여줘요. HTTP 규칙만 나열하려면 --type http를 전달하세요.
HTTP 규칙은 SUMMARY 열에서 네트워크 규칙으로 계산되며, 각 부분은 매칭되는 네트워크 계층으로 라벨이 붙어요. L4는 전체 대상을 매칭하는 항목, L7은 HTTP 메서드·경로도 매칭하는 항목을 세요:
$ sbx policy ls
POLICY SOURCE APPLIES TO SUMMARY
local-policy local all network: 2 allow (L4), 1 deny (L7)
레이블은 현재 나열에 HTTP 규칙이 하나 이상 포함될 때 나타나요. 필터와 숨겨진 비활성 규칙이 나열 내용을 바꾸므로, HTTP 규칙이 없는 필터링된 나열은 network: 42 allow 같은 라벨 없는 수를 보여줘요.
규칙 문법은 HTTP 메서드 및 경로를 참고하세요.
트래픽 모니터링 (Monitoring traffic)
sbx policy log로 샌드박스가 어떤 호스트에 접촉했고 어떤 규칙이 매칭됐는지 확인하세요:
$ sbx policy log
Blocked requests:
SANDBOX TYPE HOST PROXY RULE REASON LAST SEEN COUNT
my-sandbox network blocked.example.com transparent domain-blocked default-deny 10:15:25 29-Jan 1
Allowed requests:
SANDBOX TYPE HOST PROXY RULE REASON LAST SEEN COUNT
my-sandbox network api.anthropic.com forward domain-allowed 10:15:23 29-Jan 42
my-sandbox network registry.npmjs.org forward-bypass domain-allowed 10:15:20 29-Jan 18
my-sandbox network app.example.com browser-open 10:15:10 29-Jan 1
PROXY 열은 요청이 샌드박스를 어떻게 떠났는지 보여줘요:
| 값 | 설명 |
|---|---|
forward |
포워드 프록시를 통해 라우팅됨. 자격 증명 주입을 지원. |
forward-bypass |
자격 증명 주입 없이 포워드 프록시를 통해 라우팅됨. |
transparent |
투명 프록시가 가로챔. 정책은 시행되지만 자격 증명 주입은 불가. |
network |
HTTP가 아닌 트래픽. TCP와 실험적 UDP 이그레스는 네트워크 정책을 따르고, ICMP는 차단. |
browser-open |
샌드박스 프로세스가 호스트 브라우저에서 URL을 열도록 요청. URL을 열기 전에 정책이 시행됨. |
RULE 열은 요청과 매칭된 정책 규칙을 식별해요. REASON 열은 데몬이 기록할 때 추가 컨텍스트를 포함해요.
인자로 샌드박스 이름을 전달해 필터링할 수 있어요:
$ sbx policy log my-sandbox
--limit N으로 마지막 N개 항목만, --json으로 머신이 읽을 수 있는 출력, --type network로 정책 유형별 필터링을 할 수 있어요. sbx policy log는 네트워크 트래픽만 기록하며, 파일시스템 마운트 결정은 아직 로그에서 사용할 수 없어요.