파드 보안 어드미션
파드 보안 어드미션은 파드의 동작을 제한하는 Kubernetes 파드 보안 표준을 구현하여 관련 네임스페이스에 대해 구성된 파드 보안 프로파일 정책을 위반하는 파드에 대해 경고 메시지와 kube-apiserver 감사 이벤트를 제공한다.
Red Hat OpenShift on IBM Cloud 버전 4.11 이상은 Kubernetes 포드 보안 어드미션에 대한 지원을 포함합니다. 자세한 내용은 Kubernetes 문서에서 파드 보안 어드미션 및 파드 보안 표준을 참조한다.
파드 보안 어드미션은 Red Hat OpenShift on IBM Cloud 버전 4.11 이상에서 항상 활성화되어 있다. 이전 버전( Kubernetes )은 파드 보안 정책을 사용합니다.
보안 프로필 이해
Kubernetes 포드 보안 표준은 다음 세 가지 프로파일을 정의합니다.
- 권한이 부여됨
- 기본 파드 보안 구성은 제한이 없고 알려진 권한 상승을 허용하는
privilegedKubernetes 파드 보안 프로파일을 전역적으로 적용하고restricted프로파일에 설정된 정책에 따라 경고 및 감사 이벤트를 생성합니다. - 기준선
baseline프로필은 알려진 권한 상승을 방지하는 제한적인 프로필입니다. 기본(최소로 지정된) 파드 구성을 허용합니다.- 제한됨
restricted프로필은 엄격하게 제한되며 현재 포드 강화 모범 사례를 따릅니다.
파드 보안 프로파일에 대한 자세한 내용은 Kubernetes 문서에서 프로파일 세부 정보를 참조하세요.
파드 보안 어드미션에는 잠재적인 위반이 감지될 경우 컨트롤 플레인이 취할 조치를 정의하는 세 가지 모드가 포함되어 있다.
- 적용
- 정책을 위반하면 파드가 거부됩니다.
- 감사
- 정책 위반은 감사 로그에 기록된 이벤트에 감사 주석을 추가하도록 트리거되지만, 그 외에는 허용됩니다.
- 경고
- 정책 위반 시 사용자 대상 경고가 트리거되지만 그 외에는 허용됩니다.
새로운 기능을 다루기 위해 보안 표준 또는 프로파일 구현이 변경되면, 특정 버전의 역할을 사용하도록 파드 보안 어드미션을 구성할 수 있다. 지원되는 버전은 다음과 같습니다.
- Kubernetes major.minor 버전(예:
v1.25) latest
파드 보안 어드미션이 나에게 적합하지 않다면 어떻게 해야 하나요?
파드 보안 어드미션은 항상 활성화되어 있지만, 여러 어드미션 컨트롤러 중 하나가 될 수 있다. 사용 사례에 적합한 다른 보안 정책 모델을 구현하기 위해 타사( Kubernetes ) 허용 컨트롤러를 구성할 수 있습니다.
privileged 프로파일을 사용하여 파드 보안 어드미션을 적용, 경고 및 감사하도록 구성하면 컨트롤 플레인에서 모든 파드를 실행할 수 있다. 그런 다음 다른 입학 컨트롤러가 이를 거부하도록 구성할 수 있습니다.
다음 중 한 가지 조치를 취하지 않는 한 타사 허용 컨트롤러를 설치할 수 있습니다.
- 자체 파드 보안 정책(PSP)을 설치하지 않습니다.
- 정책의 일부를 시행하기 위해 PSP에 의존하지 않습니다.
파드 시큐리티 어드미션 네임스페이스 레이블 구성하기
각 네임스페이스에서 파드 보안에 사용할 어드미션 제어 모드를 정의할 수 있다. Kubernetes 는 네임스페이스에 사용할 미리 정의된 파드 보안 표준 프로파일을 정의하기 위해 설정할 수 있는 레이블 집합을 정의한다. 선택한 레이블은 잠재적인 위반이 감지될 경우 제어 플레인이 취하는 조치를 정의합니다.
기본적으로 Red Hat OpenShift on IBM Cloud 는 다음 네임스페이스에 privileged 파드 보안 레이블을 추가한다. 이러한 네임스페이스는 privileged 프로필을 사용하여 enforce, audit, warn 로 레이블이 지정됩니다.
kube-systemibm-systemibm-operatorscalico-systemtigera-operatorcalico-apiserver(버전 4.16 이상)
이러한 네임스페이스 또는 openshift-* 네임스페이스의 레이블을 제거하거나 변경하지 마세요.
네임스페이스에 레이블을 지정하여 일부 또는 모든 파드 보안 어드미션에 대한 파드 보안 프로파일을 설정할 수 있다 modes.
예를 들어 네임스페이스에 레이블을 지정하여 warn 또는 audit 프로필을 사용하는 것 외에 baseline 프로필을 사용하여 privileged 프로필을 적용할 수 있습니다.
이 레이블을 사용하면 관리자와 애플리케이션 개발자는 파드를 거부하지 않고 baseline 프로필에 대한 경고 및 감사 기록만 찾아 애플리케이션을 드라이런할 수 있습니다. 그런 다음 적용 모드를 baseline 으로 변경하기 전에 워크로드에 필요한 변경을 수행할 수 있습니다.
파드 보안 어드미션 네임스페이스 레이블은 pod-security.kubernetes.io/<MODE>: <LEVEL> 및 pod-security.kubernetes.io/<MODE>-version: <VERSION> 형식이다.
pod-security.kubernetes.io/enforcepod-security.kubernetes.io/enforce-versionpod-security.kubernetes.io/auditpod-security.kubernetes.io/audit-versionpod-security.kubernetes.io/warnpod-security.kubernetes.io/warn-version
네임스페이스에 레이블을 지정하여 privileged 프로필을 적용하고 baseline 프로필 위반에 대한 경고 및 감사 이벤트를 생성하려면 다음 레이블을 사용하세요.
pod-security.kubernetes.io/enforce: privilegedpod-security.kubernetes.io/enforce-version: latestpod-security.kubernetes.io/audit: baselinepod-security.kubernetes.io/audit-version: latestpod-security.kubernetes.io/warn: baselinepod-security.kubernetes.io/warn-version: latest
기본 파드 보안 어드미션 플러그인 구성
Red Hat OpenShift on IBM Cloud 는 기본적으로 다음 PodSecurityConfiguration 을 사용합니다.
apiVersion: pod-security.admission.config.k8s.io/v1
kind: PodSecurityConfiguration
defaults:
enforce: "privileged"
enforce-version: "latest"
audit: "privileged"
audit-version: "latest"
warn: "privileged"
warn-version: "latest"
exemptions:
usernames: []
runtimeClasses: []
namespaces: []
파드 보안 어드미션 구성
미리 정의된 파드 보안 레이블을 사용하여 네임스페이스 수준에서 파드 보안 동작을 구성할 수 있다. 구성에 대한 자세한 내용은 Red Hat OpenShift 문서에서 파드 보안 어드민 동기화 제어하기를 참조하세요. 단계는 클러스터 버전마다 다르므로 올바른 버전에 맞는 단계를 보고 있는지 확인하세요.
Red Hat OpenShift on IBM Cloud 에 대한 apiserver 로그 구성에 대한 자세한 내용은 Kubernetes API 서버 감사 로그를 참조하세요.
파드 보안 어드미션은 보안 프로파일을 위반하는 파드에 대해 적용, 경고 및 감사 이벤트를 생성할 수 있는 기능을 제공합니다. OpenShift 4.11 에서 기본 구성은 권한 있는 프로필을 적용하는 동시에 restricted 프로필을 기반으로 경고 및 감사 이벤트도 생성합니다. 이 동작은 네임스페이스에 미리 정의된 파드 보안 레이블을 사용하여 네임스페이스 수준에서 제어할 수 있다. 파드 보안 프로파일이 적용되면
다음 예시와 같은 경고가 표시될 수 있다.
`Warning: would violate PodSecurity "restricted:latest": host namespaces (hostNetwork=true, hostPID=true), privileged (container "container-00" must not set securityContext.privileged=true), allowPrivilegeEscalation != false (container "container-00" must set securityContext.allowPrivilegeEscalation=false), unrestricted capabilities (container "container-00" must set securityContext.capabilities.drop=["ALL"]), restricted volume types (volume "host" uses restricted volume type "hostPath"), runAsNonRoot != true (pod or container "container-00" must set securityContext.runAsNonRoot=true), runAsUser=0 (container "container-00" must not set runAsUser=0), seccompProfile (pod or container "container-00" must set securityContext.seccompProfile.type to "RuntimeDefault" or "Localhost")`
이 예제에서는 서비스 계정에 SecurityContextConstraint 프로필에 대한 권한이 부여되어 있는 한 파드가 계속 생성되고 실행될 수 있습니다. 이 경고는 파드가 지정된 파드 보안 프로파일에서 실행되려면 allowPrivilegeEscalation=false 옵션을 설정하는 등 파드와 컨테이너의 securityContext 프로파일을 변경해야 하거나
해당 기능을 허용하는 파드 보안 프로파일을 사용해야 한다는 것을 나타낸다.
Red Hat OpenShift 에는 지정된 네임스페이스에 있는 서비스 계정의 SCC 권한에 따라 네임스페이스 레이블을 적용하는 컨트롤러도 포함되어 있습니다. 파드 보안 어드미션과 SCC가 모두 적용됩니다. 주로 SCC를 사용하고 파드 보안 어드미션 동기화 컨트롤러를 사용하여 네임스페이스에서 파드 보안 레이블을 조정할 수 있다. 또는 네임스페이스의 모든 서비스 계정이 동등한(또는 그 이상의 권한이 있는) SCC를 사용할 수 있도록 하는 네임스페이스 역할 바인딩과 함께 주로 파드 보안 프로파일을 사용할 수 있다. 모든 네임스페이스의 모든 권한 있는 사용자 또는 모든 서비스 계정과 같이 전역적으로 적용되는 역할 바인딩 또는 클러스터 역할 바인딩은 특정 SCC에서 실행될 것으로 예상되는 Red Hat OpenShift 구성 요소에 영향을 줄 수 있으므로 정의하지 마세요.
추가 자원
- 포드 보안 어드미션 이해 및 관리.
- Red Hat OpenShift 4.11 에서 포드 보안 입장.
- Kubernetes API 서버 감사 로그에서는 Red Hat OpenShift on IBM Cloud 서비스에서 API 서버 감사 로그를 구성하는 방법에 대해 설명합니다.