--- # reviewers: # - title: 파드 시큐리티 스탠다드 description: > 파드 시큐리티 스탠다드에 정의된 여러 가지 정책 레벨에 대한 세부사항 content_type: concept weight: 10 --- 파드 시큐리티 스탠다드에서는 보안 범위를 넓게 다루기 위해 세 가지 _정책을_ 정의한다. 이러한 정책은 _점증적이며_ 매우 허용적인 것부터 매우 제한적인 것까지 있다. 이 가이드는 각 정책의 요구사항을 간략히 설명한다. | 프로필 | 설명 | | ------ | ----------- | | 특권(Privileged) | 무제한 정책으로, 가장 넓은 범위의 권한 수준을 제공한다. 이 정책은 알려진 권한 상승(privilege escalations)을 허용한다. | | 기본(Baseline) | 알려진 권한 상승을 방지하는 최소한의 제한 정책이다. 기본(최소로 명시된) 파드 구성을 허용한다. | | 제한(Restricted) | 엄격히 제한된 정책으로 현재 파드 하드닝 모범 사례를 따른다. | ## 프로필 세부사항 ### 특권(Privileged) {#privileged} **_특권_ 정책은 의도적으로 열려있으며 전적으로 제한이 없다.** 이러한 종류의 정책은 권한이 있고 신뢰할 수 있는 사용자가 관리하는 시스템 및 인프라 수준의 워크로드를 대상으로 한다. 특권 정책은 제한 사항이 없는 것으로 정의한다. 기본으로 허용하는 메커니즘(예를 들면, gatekeeper)은 당연히 특권 정책일 수 있다. 반대로, 기본적으로 거부하는 메커니즘(예를 들면, 파드 시큐리티 폴리시)의 경우 특권 정책은 모든 제한 사항을 비활성화해야 한다. ### 기본(Baseline) {#baseline} **_기본_ 정책은 알려진 권한 상승을 방지하면서 일반적인 컨테이너 워크로드에 대해 정책 채택을 쉽게 하는 것을 목표로 한다.** 이 정책은 일반적인(non-critical) 애플리케이션의 운영자 및 개발자를 대상으로 한다. 아래 명시한 제어 방식은 다음과 같이 강행되거나 금지되어야 한다. {{< note >}} 다음 표에서 와일드카드(`*`)는 리스트에 포함된 모든 요소들을 가리킨다. 예를 들어, `spec.containers[*].securityContext`는 시큐리티 컨텍스트 오브젝트에 _정의되어 있는 모든 컨테이너를_ 가리킨다. 정의된 컨테이너 중 하나라도 요구사항을 충족시키지 못한다면, 파드 전체가 검증 과정에서 실패한다. {{< /note >}}
제어 | 정책 |
---|---|
호스트 프로세스 |
윈도우 파드는 호스트 프로세스 컨테이너를 실행할 권한을 제공하며, 이는 윈도우 노드에 대한 특권 접근을 가능하게 한다. 기본 정책에서의 호스트에 대한 특권 접근은 허용되지 않는다. {{< feature-state for_k8s_version="v1.23" state="beta" >}} 제한된 필드
허용된 값
|
호스트 네임스페이스 |
호스트 네임스페이스 공유는 금지된다. 제한된 필드
허용된 값
|
특권 컨테이너 |
특권 파드(Privileged Pods)는 대부분의 보안 메커니즘을 비활성화하므로 금지된다. 제한된 필드
허용된 값
|
기능(Capabilities) |
아래 명시되지 않은 부가 기능을 추가하는 작업은 금지된다. 제한된 필드
허용된 값
|
호스트 경로(hostPath) 볼륨 |
호스트 경로 볼륨은 금지된다. 제한된 필드
허용된 값
|
호스트 포트 |
호스트 포트는 허용되지 않아야 하며, 또는 적어도 알려진 목록 범위내로 제한되어야 한다. 제한된 필드
허용된 값
|
AppArmor |
지원되는 호스트에서는, 제한된 필드
허용된 값
|
SELinux |
SELinux 타입을 설정하는 것은 제한되며, 맞춤 SELinux 사용자 및 역할 옵션을 설정하는 것은 금지되어 있다. 제한된 필드
허용된 값
제한된 필드
허용된 값
|
/proc 마운트 타입 |
기본 제한된 필드
허용된 값
|
Seccomp |
Seccomp 프로필은 제한된 필드
허용된 값
|
Sysctls |
Sysctls는 보안 메커니즘을 비활성화 시키거나 호스트에 위치한 모든 컨테이너에 영향을 미칠 수 있으며, 허용된 "안전한" 서브넷을 제외한 곳에서는 허용되지 않아야 한다. 컨테이너 또는 파드 네임스페이스에 속해 있거나, 같은 노드 내의 다른 파드 및 프로세스와 격리된 상황에서만 sysctl 사용이 안전하다고 간주한다. 제한된 필드
허용된 값
|
제어 | 정책 |
기본 프로필에 해당하는 모든 요소 | |
볼륨 타입 |
제한 정책은 다음과 같은 볼륨 타입만 허용한다. 제한된 필드
허용된 값 spec.volumes[*] 목록에 속한 모든 아이템은 다음 필드 중 하나를 null이 아닌 값으로 설정해야 한다.
|
권한 상승(v1.8+) |
권한 상승(예를 들어, set-user-ID 또는 set-group-ID 파일 모드를 통한)은 허용되지 않아야 한다. v1.25+에서는 리눅스 전용 정책이다. 제한된 필드
허용된 값
|
루트가 아닌 권한으로 실행 |
컨테이너는 루트가 아닌 사용자 권한으로 실행되어야 한다. 제한된 필드
허용된 값
spec.securityContext.runAsNonRoot 가 true 로 설정되면
컨테이너 필드는 undefined/nil 로 설정될 수 있다.
|
루트가 아닌 사용자로 실행(v1.23+) |
컨테이너에서는 runAsUser 값을 0으로 설정하지 않아야 한다. 제한된 필드
허용된 값
|
Seccomp(v1.19+) |
Seccomp 프로필은 다음과 같은 값으로 설정되어야 한다. 제한된 필드
허용된 값
spec.securityContext.seccompProfile.type 필드가 적절하게 설정되면,
컨테이너 필드는 undefined/nil 로 설정될 수 있다.
모든 컨테이너 레벨 필드가 설정되어 있다면,
pod-level 필드는 undefined/nil 로 설정될 수 있다.
|
능력(Capabilities) (v1.22+) |
컨테이너는 제한된 필드
허용된 값
제한된 필드
허용된 값
|