Skip to main content
CoreWeave Sandboxes의 동적 네트워크 정책을 사용하면 실행 중인 샌드박스의 워크로드를 다시 시작하지 않고도 네트워크 액세스를 변경할 수 있습니다. 예를 들어 에이전트가 의존성을 다운로드한 후, 신뢰할 수 없는 코드를 실행하기 전에 아웃바운드 트래픽을 제한하도록 할 수 있습니다. 각 샌드박스는 원하는 네트워크 규칙이 담긴 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.
예시에서는 서버리스 배치를 사용하며, Connect를 통해 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
응답으로는 ID, 원하는 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 연결이 모두 실패하는지, 그리고 기존 워크로드가 계속 실행되는지 확인하세요. 프로브 실패를 적용이 완료되었다는 근거로 판단하기 전에, 대상에 접근할 수 없는 경우처럼 무관한 실패 원인이 없는지 먼저 조사하세요. 상태 필드는 마지막으로 성공한 업데이트를 기준으로 저장된 보고 내용일 뿐, 적용 여부를 실시간으로 측정한 값이 아닙니다.
업데이트 시 적용이 완료되기 전에 원하는 설정이 먼저 저장될 수 있습니다. 일시적인 실패가 발생하면 이전 적용 상태가 복원되지 않은 채 일부 변경 사항만 적용된 상태로 남을 수 있습니다. 제한이 동작한다고 판단하기 전에 현재 설정을 조회하고, 해당 설정의 현재 etag로 의도한 규칙을 다시 적용한 다음 트래픽을 확인하세요. 러너가 영구적으로 거부하는 경우 API는 이전에 원했던 설정으로 복원을 시도합니다. 적용 동작 및 라이프사이클을 참조하세요. etag가 일치하지 않으면 설정을 다시 조회한 뒤 동시에 발생한 변경 사항을 조정해야 합니다.

설정 재사용 또는 삭제

샌드박스가 종료되면 호출자가 생성한 설정을 다시 사용할 수 있습니다. 정리 작업이 완료되는 동안에는 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를 반환합니다.
리소스 필드, 업데이트 마스크, 오류 처리에 대한 자세한 내용은 NetworkConfig API 참조를 참조하세요.
마지막 수정일 2026년 10월 27일