Skip to main content
이 페이지는 샌드박스 정책의 모든 필드를 문서화합니다. 정책은 관리형 러너에 policy 필드로 전달되며, 클러스터는 최대 하나의 러너를 호스팅하므로 하나의 정책이 하나의 클러스터를 관리합니다. 작업 중심 워크스루는 샌드박스 정책 설정을 참조하세요. 실제 예시는 정책 예시를 참조하세요.

최상위 필드

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

해결 순서

샌드박스는 두 단계로 해결됩니다:
  1. Base. runtime 기본값, 그 다음 base, 그 다음 샌드박스 사양. 개별 값에 대해서는 샌드박스가 우선합니다. base의 목록 첨부 항목은 항상 적용됩니다.
  2. Constraints. 전체 확정된 사양에 대해 클램프가 검증됩니다. 위반은 거부되며, 조용히 재작성되지 않습니다.
제약 조건은 제출된 사양이 아닌 확정된 사양을 검증하기 때문에, base가 제공한 값은 샌드박스가 제공한 값과 동일한 조건으로 검사됩니다.

base

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

constraints

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

ResourceConstraints

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

ImageConstraints

NetworkConstraints

네트워크 제약 조건은 샌드박스가 요청할 수 있는 액세스의 허용 목록을 정의합니다. 샌드박스가 이그레스를 선언하면 정책은 해당 선언을 확장하지 않고 그대로 허용하거나 거부합니다. 샌드박스가 이그레스를 선언하지 않으면 정책은 default_egress를 적용합니다. 단, 샌드박스가 deny_egress를 설정한 경우는 예외입니다. 플랫폼 DNS 및 저장소 액세스는 별도로 부여됩니다. 허용 목록이 비어 있지 않으면 대상 또는 소스 유형과 포트를 기준으로 포함 여부를 확인합니다. 선언된 CIDR은 허용된 CIDR 범위를 모두 합친 범위나 any 규칙 안에 포함되어야 합니다. 테넌트 범위를 선언하려면 일치하는 테넌트 규칙이나 any 규칙이 있어야 하고, any를 선언하려면 any 규칙이 있어야 합니다.

EgressRule

각 규칙은 정확히 하나의 대상을 지정하며, 필요하면 포트로 범위를 좁힐 수 있습니다. 호스트 이름 규칙은 DNS 쿼리가 아니라 HTTPS 액세스를 승인합니다. allowed_egress가 비어 있지 않으면, 선언된 호스트 이름은 제외 항목을 적용한 후의 허용된 호스트 이름 패턴이나 any 규칙에 적합해야 합니다. CIDR만으로 구성된 허용 목록에서는 호스트 이름을 선언할 수 없습니다. 재사용할 호스트 이름 권한 부여는 default_egress가 아니라 샌드박스 템플릿에 정의하세요. dns_egress는 아웃바운드 UDP/TCP 포트 53을 별도로 제어합니다. DNS_EGRESS_MODE_ALLOW는 플랫폼 리졸버에 대한 액세스를 허용하며, 다른 리졸버를 사용하려면 이그레스 규칙이 필요합니다. DNS_EGRESS_MODE_DENY는 다른 규칙에서 허용하더라도 아웃바운드 포트 53을 차단합니다. 단, 로컬에서 응답하는 조회나 HTTPS처럼 허용된 다른 전송 방식을 통한 DNS는 차단하지 않습니다.

IngressRule

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

CidrBlock

PortRange

TenantScope

SelectorBlock

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

SecurityConstraints

allowed_runtime_classes는 비어 있으면 “아무것도”를 의미하는 유일한 목록이며, “모든 것”이 아닙니다. 샌드박스는 명시적으로 지정한 runtime 클래스만 선택할 수 있습니다. Host-reaching 설정은 정책 전용이며, 사용 중인 격리 방식에 관계없이 샌드박스 사양에 나타나지 않습니다.

InstanceConstraints

LifecycleConstraints

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

MetadataConstraints

VolumeConstraints

StorageMedium

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

검증 규칙

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

참고

마지막 수정일 2026년 10월 15일