86 lines
9.0 KiB
Markdown
86 lines
9.0 KiB
Markdown
---
|
|
title: Kubernetes Pod Security Standards — Restricted Profile
|
|
source_type: official-doc
|
|
url: https://kubernetes.io/docs/concepts/security/pod-security-standards/
|
|
archive_url:
|
|
related_branches: [feature-container-runtime-contract]
|
|
related_projects: [ca-skeleton]
|
|
tags: [official-doc, ca-skeleton, container, security, kubernetes, pod-security]
|
|
created: 2026-06-14
|
|
---
|
|
|
|
# Kubernetes Pod Security Standards — Restricted Profile
|
|
|
|
> Layer: `raw/` — 외부 자료(공식 문서)의 원문 발췌·출처 기록.
|
|
> 검증된 요약은 `/ingest` 후 `wiki/concepts/`에 별도 작성. 원본은 raw에 영구 보관.
|
|
|
|
## Parent / 활용 branch (필수, 최소 1개+)
|
|
|
|
| Branch | 이 자료가 정당화하는 결정 |
|
|
|---|---|
|
|
| [[raw/branch-notes/feature-container-runtime-contract]] | D2 — read-only root filesystem + writable-path minimization. Restricted profile 이 emptyDir 을 허용 볼륨으로 명시하고, readOnlyRootFilesystem 은 Restricted policy 의 enumerated admission field 가 아니라는 사실을 원문으로 확인함. |
|
|
|
|
## 출처 / Source
|
|
|
|
- 원본 URL: https://kubernetes.io/docs/concepts/security/pod-security-standards/
|
|
- 아카이브 URL:
|
|
- 저자 / 조직: Kubernetes Authors (kubernetes.io)
|
|
- 발행일: (동적 업데이트 페이지 — 버전 고정 없음)
|
|
- 마지막 확인일: 2026-06-14
|
|
|
|
## 왜 저장했는지 / Why archived
|
|
|
|
feature-container-runtime-contract D2 (read-only root fs 의무화 + writable path 최소화) 의 정책 근거를 공식 Kubernetes 문서에서 확보하기 위해 저장. 특히 두 사실을 원문으로 확정: (1) Restricted profile 은 `emptyDir` 을 허용 볼륨 타입으로 명시적으로 포함하며, (2) 현행 Restricted policy specification 에 `readOnlyRootFilesystem` 이 admission field 로 열거되어 있지 않음 — branch note 의 Open Risk 정확성을 위해 이 구분이 필수.
|
|
|
|
## 핵심 인용 / Key quotes (verbatim, 3~5문장)
|
|
|
|
> [§Profile Table] "Restricted Heavily restricted policy, following current Pod hardening best practices."
|
|
|
|
> [§Restricted Policy Description] "The Restricted policy is aimed at enforcing current Pod hardening best practices, at the expense of some compatibility. It is targeted at operators and developers of security-critical applications, as well as lower-trust users. The following listed controls should be enforced/disallowed:"
|
|
|
|
> [§Restricted / Volume Types — Allowed Values] "The Restricted policy only permits the following volume types. [...] Every item in the spec.volumes[*] list must set one of the following fields to a non-null value: spec.volumes[*].configMap spec.volumes[*].csi spec.volumes[*].downwardAPI spec.volumes[*].emptyDir spec.volumes[*].ephemeral spec.volumes[*].persistentVolumeClaim spec.volumes[*].projected spec.volumes[*].secret"
|
|
|
|
> [§Policy Instantiation] "The methods of enforcement of individual policies are not defined here."
|
|
|
|
> [§Restricted policy specification — Control list] "Everything from the Baseline policy Volume Types [...] Privilege Escalation (v1.8+) [...] Running as Non-root [...] Running as Non-root user (v1.23+) [...] Seccomp (v1.19+) [...] Capabilities (v1.22+)"
|
|
|
|
**Critical absence note (verified by Self-Grep):** The term `readOnlyRootFilesystem` does not appear anywhere in the fetched page text (grep returned zero matches). The Restricted policy specification as of 2026-06-14 does NOT enumerate `readOnlyRootFilesystem` as a Restricted admission field.
|
|
|
|
## Claims Extracted / 추출된 주장
|
|
|
|
| Claim ID | Claim (이 자료가 직접 말하는 것) | Evidence quote | Strength | Applies to | Does not prove |
|
|
|---|---|---|---|---|---|
|
|
| K8S-PSS-C1 | Kubernetes 의 Restricted profile 은 "current Pod hardening best practices" 를 강제하는 것을 목표로 하며 일부 호환성을 희생한다 | [§Restricted Policy Description] "The Restricted policy is aimed at enforcing current Pod hardening best practices, at the expense of some compatibility." | `official-vendor-doc` | Kubernetes 클러스터에서 Restricted PodSecurity policy 를 네임스페이스에 적용한 경우 | Restricted 가 모든 hardening 요구사항의 완전한 목록임을 증명하지 않음; 추가 조직 정책(CIS Benchmark 등) 이 더 엄격할 수 있음 |
|
|
| K8S-PSS-C2 | Restricted profile 의 Volume Types 제어 아래 `emptyDir` 은 명시적으로 허용된 볼륨 타입이다 | [§Restricted / Volume Types] "Every item in the spec.volumes[*] list must set one of the following fields to a non-null value: spec.volumes[*].emptyDir" | `official-vendor-doc` | Kubernetes 클러스터에 Restricted policy 가 적용된 네임스페이스 | tmpfs 마운트 옵션(medium: Memory) 의 별도 제어나 size limit 에 대해서는 이 페이지가 말하지 않음 |
|
|
| K8S-PSS-C3 | 현행 Restricted policy specification 에는 `readOnlyRootFilesystem` 이 admission 검사 field 로 열거되어 있지 않다 | [§Restricted policy specification] (전체 control list: Volume Types, Privilege Escalation, Running as Non-root, Running as Non-root user, Seccomp, Capabilities — `readOnlyRootFilesystem` 없음) | `official-vendor-doc` | Kubernetes 공식 Pod Security Standards 페이지 (확인일 2026-06-14) | readOnlyRootFilesystem 설정 자체가 불필요하다는 의미 아님; Restricted 외 다른 admission webhook/policy engine(Kyverno, OPA) 이 이를 강제할 수 있음 |
|
|
| K8S-PSS-C4 | Restricted policy 의 각 개별 control 의 집행 방법(enforcement mechanism) 은 이 페이지에서 정의하지 않는다 | [§Policy Instantiation] "The methods of enforcement of individual policies are not defined here." | `official-vendor-doc` | Kubernetes Pod Security Standards 정책 정의 문서 | 실제 클러스터에서 Pod Security Admission controller, Kyverno, OPA 등 어떤 방법으로 집행되는지는 별도 문서 참조 필요 |
|
|
| K8S-PSS-C5 | Restricted policy 는 Baseline policy 의 모든 제어를 포함하며 추가 제어를 적용한다 | [§Restricted policy specification / Control Policy] "Everything from the Baseline policy" | `official-vendor-doc` | Kubernetes Pod Security Standards Restricted 적용 시 | Baseline 의 각 구체적 제어가 무엇인지는 이 claim 이 아니라 Baseline section 을 참조해야 함 |
|
|
|
|
## Usage Boundaries / 적용 경계
|
|
|
|
- 이 자료가 직접 증명하는 것:
|
|
- `K8S-PSS-C1`: Restricted policy 가 "hardening best practices" 지향 정책임을 공식 문서로 확인.
|
|
- `K8S-PSS-C2`: `emptyDir` 이 Restricted Volume Types 제어의 허용 목록에 포함됨 — branch note D2 의 `/var/tmp emptyDir mount` 와 `/tmp tmpfs mount` 가 Restricted policy 와 호환됨을 증명.
|
|
- `K8S-PSS-C3`: 2026-06-14 기준 현행 Restricted admission spec 에 `readOnlyRootFilesystem` 이 없음 — branch note D2 의 "read-only root fs 강제" 는 Restricted policy 의 자동 집행이 아니라 별도 securityContext 설정 또는 추가 policy engine 이 필요함.
|
|
- `K8S-PSS-C4`: enforcement mechanism 이 이 페이지에서 정의되지 않음 — 실제 admission 집행은 별도 controller/webhook 설정에 의존.
|
|
- `K8S-PSS-C5`: Restricted ⊇ Baseline (superset 관계).
|
|
- 이 자료가 증명하지 않는 것:
|
|
- Restricted profile 이 `readOnlyRootFilesystem` 을 admission 레벨에서 강제한다는 것 (현행 페이지에서 이 field 는 Restricted 제어에 없음).
|
|
- `emptyDir` 의 tmpfs 마운트 (`medium: Memory`) 사용 방법 또는 size limit 정책.
|
|
- CIS Kubernetes Benchmark §5.x 등 외부 hardening 표준과의 관계.
|
|
- 이 정책을 ca-tmpl 의 실제 Kubernetes manifest 에 어떻게 적용하는지.
|
|
- 내 프로젝트에 적용하려면 추가 확인이 필요한 것:
|
|
- ca-tmpl skeleton 의 실제 Kubernetes YAML 에서 `securityContext.readOnlyRootFilesystem: true` 를 별도로 설정하고, `spec.volumes` 에 `emptyDir` 명시가 Restricted policy 와 충돌하지 않음을 smoke test 로 확인.
|
|
- readOnlyRootFilesystem 을 Restricted 외에 강제하려면 Kyverno 또는 OPA policy rule 별도 작성 필요 여부 확인.
|
|
|
|
## 메모 / Notes
|
|
|
|
- 2026-06-14 확인: 현행 Restricted policy specification 에 `readOnlyRootFilesystem` 이 없음. 이전 버전 Kubernetes docs 에는 있었을 수도 있음 — 버전별 비교는 [kubernetes/website GitHub history](https://github.com/kubernetes/website) 참조 권고.
|
|
- branch note D2 의 Open Risk 표현: "read-only root fs 강제의 외부 표준 (CIS Benchmark §5.x) raw 등록 필요" — K8S-PSS-C3 로 인해 Restricted policy 만으로는 부족하며 CIS Benchmark raw source 등록이 여전히 필요.
|
|
- 추가로 봐야 할 동일 출처 페이지: [Pod Security Admission](https://kubernetes.io/docs/concepts/security/pod-security-admission/) (namespace-level 적용 방법), [CIS Kubernetes Benchmark](https://www.cisecurity.org/benchmark/kubernetes) (§5 hardening 외부 표준).
|
|
|
|
## Related / 관련
|
|
|
|
- 같은 주제 다른 official-doc: [[raw/official-docs/container-distroless-google-github]], [[raw/official-docs/container-alpine-java-musl-tradeoffs]]
|
|
- 이 자료를 인용한 wiki 요약: (미작성 — `/ingest` 시 생성 예정)
|