> ## Documentation Index
> Fetch the complete documentation index at: https://docs.coreweave.com/llms.txt
> Use this file to discover all available pages before exploring further.

# 정책 레퍼런스

> 샌드박스 정책의 모든 필드, 유형, 기본값 및 검증 규칙입니다.

이 페이지는 샌드박스 정책의 모든 필드를 문서화합니다. 정책은 관리형 러너에 `policy` 필드로 전달되며, 클러스터는 최대 하나의 러너를 호스팅하므로 하나의 정책이 하나의 클러스터를 관리합니다.

작업 중심 워크스루는 [샌드박스 정책 설정](/ko/products/sandboxes/profiles/configure)을 참조하세요. 실제 예시는 [정책 예시](/ko/products/sandboxes/profiles/profile-examples)를 참조하세요.

<h2 id="top-level-fields">
  최상위 필드
</h2>

| 필드 | 유형 | 설명 |
| - | - | - |
| `display_name` | string | 이 정책이 정의하는 보안 태세를 나타내는, 사람이 읽기 쉬운 이름입니다. |
| `base` | object | 샌드박스 사양보다 먼저 적용되는 runtime 기본값 및 첨부 항목입니다. [`base`](#base)를 참조하세요. |
| `constraints` | `PolicyConstraints` | 확정된 사양을 기준으로 검증되는 유형 지정 클램프입니다. [`constraints`](#constraints)를 참조하세요. |

빈 정책도 유효하며, 이 경우 모든 요청을 허용하는 보안 태세로 선언됩니다. `base`와 `constraints`는 모두 선택 사항이므로, 클러스터의 보안 태세는 의도치 않게 상속되는 일 없이 항상 명시적으로 지정됩니다.

<h2 id="resolution-order">
  해결 순서
</h2>

샌드박스는 두 단계로 해결됩니다:

1. **Base.** runtime 기본값, 그 다음 `base`, 그 다음 샌드박스 사양. 개별 값에 대해서는 샌드박스가 우선합니다. `base`의 목록 첨부 항목은 항상 적용됩니다.
2. **Constraints.** 전체 확정된 사양에 대해 클램프가 검증됩니다. 위반은 거부되며, 조용히 재작성되지 않습니다.

제약 조건은 제출된 사양이 아닌 확정된 사양을 검증하기 때문에, `base`가 제공한 값은 샌드박스가 제공한 값과 동일한 조건으로 검사됩니다.

<h2 id="base">
  `base`
</h2>

runtime 기본값과 첨부 항목의 조각입니다. Kubernetes 러너에서 이는 파드 사양 조각입니다.

`base`는 샌드박스가 선언할 일이 없는 인프라 설정이 있는 곳입니다: 스케줄러, 노드 셀렉터, 톨러레이션, 우선순위 클래스, 토폴로지 스프레드, 서비스 어카운트, 이미지 풀 시크릿, 플랫폼 볼륨, DNS 설정, 그리고 pinned 어노테이션과 같은 파드 메타데이터입니다. `affinity`, 파드 및 컨테이너 `securityContext`, `runtimeClassName`, `initContainers`와 같은 보안에 민감한 필드는 즉시 거부됩니다.

<h2 id="constraints">
  `constraints`
</h2>

`PolicyConstraints`는 정책이 강제 적용하는 유형 지정 클램프를 그룹화합니다. 모든 그룹은 선택 사항이며, 생략된 그룹은 제한을 적용하지 않습니다.

| 그룹 | 유형 | 적용 대상 |
| - | - | - |
| `resources` | `ResourceConstraints` | CPU, 메모리, GPU의 범위와 기본값. |
| `image` | `ImageConstraints` | 샌드박스가 실행할 수 있는 이미지. |
| `network` | `NetworkConstraints` | 이그레스 및 ingress 허용 목록과 기본값. |
| `security` | `SecurityConstraints` | 권한, capabilities, 격리. |
| `instance` | `InstanceConstraints` | 샌드박스가 배치될 수 있는 노드 인스턴스 유형. |
| `lifecycle` | `LifecycleConstraints` | 샌드박스를 유지할 수 있는 기간. |
| `metadata` | `MetadataConstraints` | 어노테이션 키와 개수. |
| `volumes` | `VolumeConstraints` | 저장소 미디어와 볼륨당 크기. |

<h2 id="resourceconstraints">
  `ResourceConstraints`
</h2>

| 필드 | 유형 | 설명 |
| - | - | - |
| `max_cpu` | string | 컨테이너가 요청할 수 있는 최대 CPU 양으로, Kubernetes 수량 형식으로 표현합니다. |
| `max_memory` | string | 컨테이너가 요청할 수 있는 최대 메모리 양입니다. |
| `min_cpu` | string | 컨테이너가 요청할 수 있는 최소 CPU 양입니다. |
| `min_memory` | string | 컨테이너가 요청할 수 있는 최소 메모리 양입니다. |
| `default_cpu` | string | 샌드박스가 CPU를 요청하지 않을 때 적용되는 CPU 양입니다. |
| `default_memory` | string | 샌드박스가 메모리를 요청하지 않을 때 적용되는 메모리 양입니다. |
| `max_gpu_count` | int64 | 샌드박스가 요청할 수 있는 최대 GPU 수입니다. |
| `cpu_ceiling` | string | 샌드박스의 최종 산정된 총 CPU 양에 대한 한도입니다. |
| `memory_ceiling` | string | 샌드박스의 최종 산정된 총 메모리 양에 대한 한도입니다. |
| `require_limits` | bool | true인 경우, CPU와 메모리 한도를 모두 선언하지 않은 샌드박스를 거부합니다. |

총량 한도는 개별 최댓값과 다릅니다. `max_cpu`는 컨테이너 하나의 요청량을 제한하는 반면, `cpu_ceiling`은 최종 산정된 총량을 제한합니다. 이 차이는 `base`가 자체 컨테이너를 추가할 때 중요합니다.

<h2 id="imageconstraints">
  `ImageConstraints`
</h2>

| 필드 | 유형 | 설명 |
| - | - | - |
| `allowed_registries` | string 목록 | 샌드박스 이미지가 출처일 수 있는 레지스트리입니다. 비어 있으면 모두 허용합니다. |
| `allowed_images` | string 목록 | 샌드박스가 실행할 수 있는 정확한 이미지입니다. 비어 있으면 모두 허용합니다. |

<h2 id="networkconstraints">
  `NetworkConstraints`
</h2>

네트워크 제약 조건은 샌드박스가 요청할 수 있는 액세스의 허용 목록을 정의합니다. 샌드박스가 이그레스를 선언하면 정책은 해당 선언을 확장하지 않고 그대로 허용하거나 거부합니다. 샌드박스가 이그레스를 선언하지 않으면 정책은 `default_egress`를 적용합니다. 단, 샌드박스가 `deny_egress`를 설정한 경우는 예외입니다. 플랫폼 DNS 및 저장소 액세스는 별도로 부여됩니다.

| 필드 | 유형 | 설명 |
| - | - | - |
| `allowed_egress` | `EgressRule` 목록 | 샌드박스 생성 시 확인되는 이그레스 허용 목록입니다. 비어 있지 않으면 선언된 모든 규칙이 이 목록 범위 안에 포함되어야 합니다. 비어 있으면 선언 가능한 모든 항목을 허용합니다. |
| `default_egress` | `EgressRule` 목록 | 샌드박스가 이그레스를 선언하지 않을 때 적용되며, `deny_egress`를 설정한 경우는 예외입니다. 선언이 하나라도 있으면 전부 대체됩니다. `allowed_egress` 범위 안에 포함되어야 하며 `https_hostname` 규칙을 포함할 수 없습니다. |
| `allowed_ingress` | `IngressRule` 목록 | 공개 범위가 `CUSTOM`인 포트에 대한 ingress 허용 목록으로, 샌드박스 생성 시 확인됩니다. 비어 있지 않으면 선언된 모든 규칙이 이 목록 범위 안에 포함되어야 합니다. 비어 있으면 선언 가능한 모든 항목을 허용합니다. |
| `default_ingress` | `IngressRule` 목록 | 샌드박스가 공개 범위가 `CUSTOM`인 포트를 노출하면서 ingress를 선언하지 않을 때 적용되며, `deny_ingress`를 설정한 경우는 예외입니다. 명시적인 ingress 규칙이 있으면 전부 대체됩니다. `allowed_ingress` 범위 안에 포함되어야 합니다. |
| `deny_https_hostname_rules` | bool | true이면 `allowed_egress` 및 샌드박스 요청에 포함된 `https_hostname` 규칙을 거부합니다. DNS 쿼리나 CIDR 규칙으로 허용된 HTTPS는 차단하지 않습니다. |
| `dns_egress` | `DNSEgressMode` | UDP/TCP 포트 53의 아웃바운드 DNS 트래픽을 제어합니다. 지정하지 않으면 기본값은 `DNS_EGRESS_MODE_ALLOW`입니다. 샌드박스는 `DNS_EGRESS_MODE_DENY`를 선택할 수 있지만, 정책에서 `DENY`를 요구하면 `ALLOW`를 요청할 수 없습니다. |

허용 목록이 비어 있지 않으면 대상 또는 소스 유형과 포트를 기준으로 포함 여부를 확인합니다. 선언된 CIDR은 허용된 CIDR 범위를 모두 합친 범위나 `any` 규칙 안에 포함되어야 합니다. 테넌트 범위를 선언하려면 일치하는 테넌트 규칙이나 `any` 규칙이 있어야 하고, `any`를 선언하려면 `any` 규칙이 있어야 합니다.

<h3 id="egressrule">
  `EgressRule`
</h3>

각 규칙은 정확히 하나의 대상을 지정하며, 필요하면 포트로 범위를 좁힐 수 있습니다.

| 필드 | 유형 | 설명 |
| - | - | - |
| `cidr` | `CidrBlock` | 주소 범위입니다. 필요하면 carve-out을 적용할 수 있습니다. |
| `https_hostname` | string | HTTPS 호스트 이름입니다. 정확한 이름을 지정하거나 `*.example.com`처럼 가장 왼쪽 레이블 하나에 와일드카드를 사용할 수 있습니다. 호스트 이름 기반 HTTPS 규칙을 지원하는 러너가 필요합니다. `allowed_egress`에서 `*`는 모든 호스트 이름 선언을 허용합니다. |
| `https_hostname_except` | string 목록 | 이 규칙에서 제외할 호스트 이름입니다. `allowed_egress`에서 `https_hostname`과 함께 사용할 때만 유효합니다. `*`를 제외하면 동일한 호스트 이름 패턴을 사용합니다. |
| `tenant` | `TenantScope` | 관계에 따라 선택되는 다른 샌드박스입니다. |
| `any` | bool | 플랫폼 내부 범위를 제외한, 도달 가능한 모든 대상입니다. 다른 샌드박스나 클러스터 워크로드에 연결하려면 tenant 또는 selector 규칙을 사용하세요. |
| `selector` | `SelectorBlock` | 레이블로 선택되는 워크로드입니다. |
| `ports` | `PortRange` 목록 | 규칙이 적용되는 포트입니다. 생략하면 모든 포트에 적용됩니다. 단, `https_hostname` 규칙은 TCP 443만 허용합니다. |

호스트 이름 규칙은 DNS 쿼리가 아니라 HTTPS 액세스를 승인합니다. `allowed_egress`가 비어 있지 않으면, 선언된 호스트 이름은 제외 항목을 적용한 후의 허용된 호스트 이름 패턴이나 `any` 규칙에 적합해야 합니다. CIDR만으로 구성된 허용 목록에서는 호스트 이름을 선언할 수 없습니다. 재사용할 호스트 이름 권한 부여는 `default_egress`가 아니라 [샌드박스 템플릿](/ko/products/sandboxes/profiles/templates)에 정의하세요.

`dns_egress`는 아웃바운드 UDP/TCP 포트 53을 별도로 제어합니다. `DNS_EGRESS_MODE_ALLOW`는 플랫폼 리졸버에 대한 액세스를 허용하며, 다른 리졸버를 사용하려면 이그레스 규칙이 필요합니다. `DNS_EGRESS_MODE_DENY`는 다른 규칙에서 허용하더라도 아웃바운드 포트 53을 차단합니다. 단, 로컬에서 응답하는 조회나 HTTPS처럼 허용된 다른 전송 방식을 통한 DNS는 차단하지 않습니다.

<h3 id="ingressrule">
  `IngressRule`
</h3>

| Field | 유형 | 설명 |
| - | - | - |
| `cidr` | `CidrBlock` | 선택적 carve-out이 포함된 주소 범위. |
| `tenant` | `TenantScope` | 관계에 따라 선택된 다른 샌드박스. |
| `any` | bool | 모든 소스. |
| `ports` | `PortRange` 목록 | 규칙이 적용되는 포트. 공개 범위가 `CUSTOM`인 모든 포트에 적용하려면 생략하세요. |

Ingress 규칙은 소스를 명명하지 않습니다. 인바운드 패킷에는 이름이 없기 때문입니다.

<h3 id="cidrblock">
  `CidrBlock`
</h3>

| 필드 | 유형 | 설명 |
| - | - | - |
| `cidr` | string | Required. 주소 범위(예: `10.0.0.0/8`). |
| `except` | string 목록 | `cidr`에서 carve-out된 범위. carve-out은 해당 규칙에만 적용됩니다. |

<h3 id="portrange">
  `PortRange`
</h3>

| 필드 | 유형 | 설명 |
| - | - | - |
| `protocol` | string | 선택. 기본값은 TCP입니다. |
| `port` | int32 | 필수. 포트 또는 범위의 시작. |
| `end_port` | int32 | 선택. 범위의 끝. |

<h3 id="tenantscope">
  `TenantScope`
</h3>

| 값 | 선택 대상 |
| - | - |
| `TENANT_SCOPE_SAME_USER` | 동일한 사용자가 소유한 샌드박스입니다. |
| `TENANT_SCOPE_SAME_ORG` | 동일한 조직에 속한 샌드박스입니다. |
| `TENANT_SCOPE_SANDBOX_NETWORK` | 동일한 샌드박스 네트워크에 있는 샌드박스입니다. 아직 지원되지 않으며, 이 값을 사용하는 egress 규칙은 거부됩니다. |

<h3 id="selectorblock">
  `SelectorBlock`
</h3>

| 필드 | 유형 | 설명 |
| - | - | - |
| `pod_labels` | string map | 필수. 대상 파드와 매칭할 레이블입니다. |
| `namespace_labels` | string map | 선택. 대상 namespace와 매칭할 레이블입니다. |

매칭은 레이블 쌍이 정확히 일치하는지를 기준으로 하지만, 선언에는 레이블을 추가로 지정할 수 있습니다. 이그레스 허용 목록이 비어 있지 않으면, 선언된 셀렉터는 일치하는 셀렉터 규칙의 레이블 쌍을 모두 포함해야 합니다. 두 셀렉터는 namespace 레이블을 모두 생략하거나 모두 포함해야 하며, 포함하는 경우 선언에는 필요한 namespace 레이블 쌍이 모두 있어야 합니다. `any` 규칙은 셀렉터에는 적용되지 않지만, 허용 목록이 비어 있으면 셀렉터를 선언할 수 있습니다.

<h2 id="securityconstraints">
  `SecurityConstraints`
</h2>

| 필드 | 유형 | 설명 |
| - | - | - |
| `allow_privileged` | bool | Whether a 컨테이너 may run privileged. |
| `allowed_capabilities` | string 목록 | Linux capabilities a 컨테이너 may add. |
| `allowed_seccomp_profiles` | string 목록 | Permitted seccomp profiles, such as `RuntimeDefault` or `Unconfined`. |
| `allow_host_network` | bool | Whether a 샌드박스 may use the host network namespace. 사용 중단 and being removed. |
| `allow_host_pid` | bool | Whether a 샌드박스 may use the host PID namespace. 사용 중단 and being removed. |
| `allowed_runtime_classes` | string 목록 | runtime 클래스 a 샌드박스 may pin. Fails closed: empty permits no pin at all. |
| `default_cpu_runtime_class` | string | runtime 클래스 applied to a CPU 샌드박스 that pins none. |
| `default_gpu_runtime_class` | string | runtime 클래스 applied to a GPU 샌드박스 that pins none. |

`allowed_runtime_classes`는 비어 있으면 "아무것도"를 의미하는 유일한 목록이며, "모든 것"이 아닙니다. 샌드박스는 명시적으로 지정한 runtime 클래스만 선택할 수 있습니다.

Host-reaching 설정은 정책 전용이며, 사용 중인 격리 방식에 관계없이 샌드박스 사양에 나타나지 않습니다.

<h2 id="instanceconstraints">
  `InstanceConstraints`
</h2>

| 필드 | 유형 | 설명 |
| - | - | - |
| `allowed_instance_types` | string 목록 | 노드 인스턴스 유형으로, 샌드박스가 배치될 수 있는 것입니다. 비어 있으면 모두 허용합니다. |

<h2 id="lifecycleconstraints">
  `LifecycleConstraints`
</h2>

| 필드 | 유형 | 설명 |
| - | - | - |
| `default_lifetime_seconds` | int32 | 샌드박스가 수명을 요청하지 않을 때 적용되는 수명. |

정책에는 수명 한도가 없습니다. 플랫폼 최대값(현재 30일)이 모든 샌드박스를 제한하며, 이를 초과하는 생성 요청은 거부됩니다. `max_lifetime_seconds` 필드는 정책 문서에서 제거되었으며, `cwic`는 이를 여전히 포함하는 정책을 거부합니다.

<h2 id="metadataconstraints">
  `MetadataConstraints`
</h2>

| 필드 | 유형 | 설명 |
| - | - | - |
| `denied_annotation_prefixes` | string 목록 | 거부되는 어노테이션 키 접두사입니다. |
| `max_annotation_count` | int32 | 샌드박스에 설정할 수 있는 어노테이션의 최대 개수입니다. `0`은 제한이 없음을 의미합니다. |

<h2 id="volumeconstraints">
  `VolumeConstraints`
</h2>

| 필드 | 유형 | 설명 |
| - | - | - |
| `allowed_media` | `StorageMedium` 목록 | 허용된 저장소 미디어. 비어 있으면 모두 허용합니다. |
| `max_size` | string | 볼륨당 최대 크기(예: `100Gi`). |

<h3 id="storagemedium">
  `StorageMedium`
</h3>

| 값 | 설명 |
| - | - |
| `STORAGE_MEDIUM_UNSPECIFIED` | Platform 기본값으로, 디스크 기반입니다. |
| `STORAGE_MEDIUM_DISK` | 디스크 기반입니다. |
| `STORAGE_MEDIUM_MEMORY` | RAM 기반이며, 컨테이너의 메모리를 사용합니다. |

`allowed_media`에서 `STORAGE_MEDIUM_MEMORY`를 생략하여 RAM 기반 볼륨을 금지합니다.

<h2 id="validation-rules">
  검증 규칙
</h2>

정책은 다음 중 어느 하나라도 해당하면 거부됩니다:

* 인코딩된 문서가 256 KiB를 초과합니다.
* 정책이 null입니다. 설정된 정책은 지울 수 없고, 교체만 가능합니다.
* `default_egress`에 `https_hostname` 규칙이 포함되어 있습니다.
* 기본 이그레스 또는 ingress 규칙이 해당 허용 목록의 범위를 벗어납니다.

<h2 id="see-also">
  참고
</h2>

* [Configure a 샌드박스 정책](/ko/products/sandboxes/profiles/configure): 이 페이지의 모든 그룹에 대한 작업 중심 워크스루입니다.
* [정책 examples](/ko/products/sandboxes/profiles/profile-examples): 일반적인 클러스터 보안 태세를 위한 다섯 가지 완전한 정책입니다.
* [정책 overview](/ko/products/sandboxes/profiles/profiles): 샌드박스가 정책에 대해 어떻게 해결하는지.
* [Deploy and manage a 러너](/ko/products/sandboxes/operations/managed-runners): 정책이 있는 위치와 설정 방법.
