NetworkConfig 하나를 참조합니다. 액세스를 변경하려면 이 리소스를 업데이트하세요. 단, 요청할 수 있는 규칙의 범위는 배치 위치의 네트워크 정책에 따라 제한됩니다. 서버리스 샌드박스에서는 CoreWeave가 이 정책을 관리하고, CoreWeave Kubernetes Service(CKS) 러너에서는 Admin이 이 정책을 설정합니다.
시작하기 전에
선택한 러너에서 이 기능을 사용할 수 있다면 동적 네트워크 정책은 서버리스 샌드박스와 CKS 샌드박스를 모두 지원합니다. 서버리스는 CoreWeave에서 관리하는 러너를 사용하므로 별도의 CKS 클러스터나 러너가 필요하지 않습니다. 시작하기 전에 다음 항목이 준비되어 있는지 확인하세요.sandbox_user권한이 있는 CoreWeave API 액세스 토큰. API 액세스 토큰 관리를 참조하세요.- 조직에 서비스를 제공하는 API에서 활성화된
NetworkConfig지원. 가용성 및 사전 요구 사항을 참조하세요. - 샌드박스가 사용하는 러너에서 활성화된 실시간 네트워크 업데이트. 서버리스 러너는 CoreWeave가 관리합니다. CKS 관리형 러너의 경우
spec.overrides.env.ENABLE_LIVE_NETWORK_UPDATE를 문자열"true"로 설정하세요. 러너 관리를 참조하세요. - 배치의 네트워크 정책에서 지원 및 허용되는 HTTPS 호스트 이름 권한 부여(이 가이드의 예시에 필요).
- 로컬에 설치된
curl및jq.
https://api.cwsandbox.com으로 JSON 요청을 보냅니다. Python 및 TypeScript 클라이언트에서는 NetworkConfig 오퍼레이션을 사용할 수 없습니다.
토큰을 설정하세요. [API-ACCESS-TOKEN]을 CoreWeave API 액세스 토큰으로 바꾸세요.
Set the API token
네트워크 설정 생성 및 바인딩
Python 패키지 인덱스와 해당 다운로드 호스트로의 HTTPS 연결을 허용하는 호출자 소유 설정을 생성하세요. ID는 조직 내에서 고유한 값으로 선택하세요. 이 예제에서는build-egress를 사용합니다.
Create a network configuration
spec, etag, status가 포함된 NetworkConfig가 반환됩니다. 생성 시 규칙 구문의 유효성이 검사됩니다. 설정을 샌드박스에 바인딩하면 플랫폼에서 러너 정책을 확인합니다.
이 설정을 사용하는 서버리스 샌드박스를 생성하세요. 이 예제에서는 CPU 1개와 메모리 1GiB를 할당합니다.
Create a sandbox with the configuration
sandboxId를 저장하세요. 플랫폼은 샌드박스가 RUNNING 상태가 되기 전에 초기 규칙을 적용합니다. CKS의 경우 spec.mode를 SANDBOX_MODE_CKS로 변경하고, 필요하면 spec.runnerIds를 선택하세요.
하나의 설정은 한 번에 종료되지 않은 샌드박스 하나에만 바인딩할 수 있습니다. 하나의 생성 요청에 spec.networkConfigId와 인라인 spec.network를 함께 보내지 마세요.
networkConfigId를 생략하면 플랫폼이 샌드박스용 설정을 생성합니다. 이때 인라인 spec.network 규칙이 있으면 이를 복사하고, 없으면 정책 기본값이 적용되는 빈 설정을 사용합니다. 부여된 ID는 GetSandbox.spec.networkConfigId에서 조회하세요.
실행 중인 샌드박스의 규칙 업데이트
규칙을 변경하기 전에 실행 중인 샌드박스 내부에서pypi.org 및 files.pythonhosted.org에 대한 새 HTTPS 연결을 테스트하세요. 방법은 실행 가이드를 참조하세요. 두 연결이 모두 성공하는지 확인한 후, 업데이트 후에 다시 실행할 수 있도록 프로브 명령어를 저장해 두세요. 연결에 실패한 경우 문제를 모두 해결한 후 계속 진행하세요.
액세스를 제한할 준비가 되면 샌드박스의 이그레스 권한 부여를 지우고, UDP 및 TCP 포트 53의 아웃바운드 DNS를 거부하세요. 이 업데이트는 선언된 ingress를 변경하지 않습니다.
최신 상태가 아닌 desired-state 쓰기를 거부하려면 현재 설정을 조회한 후 업데이트할 때 해당 etag를 함께 전달하세요.
Restrict outbound access
NetworkConfig가 반환됩니다. 샌드박스는 동일한 ID와 프로세스 상태를 유지한 채 계속 실행됩니다. 다른 포트를 통한 허용된 저장소 액세스처럼 플랫폼에 필요한 트래픽은 계속 사용 가능할 수 있습니다. denyEgress가 네트워크를 완전히 격리하는 것은 아닙니다.
목록을 지울 때는 명시적인 마스크를 사용하세요. denyEgress가 설정되지 않았거나 false인 상태에서 이그레스 목록을 비우면 정책 기본값으로 복원됩니다. 모든 트래픽을 거부한다는 의미가 아닙니다.
결과 확인
[SANDBOX-ID]를 샌드박스 생성 시 반환된 ID로 바꾼 후 샌드박스를 확인하세요.
Inspect sandbox network status
RUNNING 상태를 유지하고, 동일한 spec.networkConfigId를 참조하며, 업데이트된 status.effectiveEgress, status.effectiveIngress, status.effectiveDnsEgress를 보고하는지 확인하세요. JSON 응답에서는 비어 있는 반복 필드가 생략될 수 있습니다.
업데이트 전에 성공했던 연결 프로브를 다시 실행하세요. 이전에 권한이 부여되었던 두 호스트로의 새 아웃바운드 HTTPS 연결이 모두 실패하는지, 그리고 기존 워크로드가 계속 실행되는지 확인하세요. 프로브 실패를 적용이 완료되었다는 근거로 판단하기 전에, 대상에 접근할 수 없는 경우처럼 무관한 실패 원인이 없는지 먼저 조사하세요. 상태 필드는 마지막으로 성공한 업데이트를 기준으로 저장된 보고 내용일 뿐, 적용 여부를 실시간으로 측정한 값이 아닙니다.
설정 재사용 또는 삭제
샌드박스가 종료되면 호출자가 생성한 설정을 다시 사용할 수 있습니다. 정리 작업이 완료되는 동안에는status.sandboxId에 이전 ID가 잠시 남아 있을 수 있습니다. 이 설정을 새 샌드박스에 바인딩하거나 삭제할 수 있습니다.
Delete an unused network configuration
spec을 새 설정이나 인라인 생성 입력에 복사하세요. GetSandbox.spec을 복사하면 독립된 규칙 집합이 아니라 설정 ID만 복사됩니다.
지원되는 변경 사항 및 제한
동적 네트워크 정책에는 다음과 같은 변경 사항 및 제한이 적용됩니다.- 이그레스 대상 권한 부여, 기존
CUSTOM서비스에 선언된 ingress 소스,denyEgress,denyIngress,dnsEgress를 업데이트할 수 있습니다. 단, 규칙은 러너 정책 범위를 벗어날 수 없습니다. - 서비스 포트와 공개 범위는 여전히 생성 시점에만 설정할 수 있습니다. 자세한 내용은 퍼블릭 엔드포인트를 참조하세요.
- HTTPS 호스트 이름 권한 부여는 여전히 TCP 포트
443의 HTTPS에만 적용됩니다. 호스트 이름 권한 부여는httpsHostname권한 부여를 하나 이상 포함하여 생성한 샌드박스에서만 실시간으로 변경할 수 있습니다. 호스트 이름 권한 부여 없이 생성한 샌드박스에 이를 추가하려면 새 샌드박스를 만드세요. - 일부 이전 샌드박스에서는 호스트 이름 권한 부여를 실시간으로 변경할 수 없으며, 제거도 불가능합니다. 업데이트가
CWSANDBOX_INVALID_REQUEST로 거부되면 필요한 권한 부여를 포함하여 새 샌드박스를 만드세요. - 러너가 HTTPS 호스트 이름 권한 부여를 지원해야 합니다. 러너가 이를 강제 적용할 수 없으면 해당 권한 부여를 추가하거나 변경하는 요청은
CWSANDBOX_INVALID_REQUEST를 반환합니다.