Skip to main content
본 한국어 번역은 사용자 편의를 위해 제공되는 기계 번역입니다. 영어 버전과 한국어 버전이 서로 어긋나는 경우에는 언제나 영어 버전이 우선합니다.

Pod Security Standards(PSS) 및 Security Context Constraints(SCC)

Kubernetes Pod 보안 표준(PSS) 및 Pod 보안 정책(PSP)은 권한 수준을 정의하고 Pod의 동작을 제한합니다. OpenShift 보안 컨텍스트 제약 조건(SCC)은 OpenShift Kubernetes Engine에 특화된 Pod 제한 사항을 정의합니다. 이러한 사용자 정의를 제공하기 위해 Trident는 설치 중에 특정 권한을 활성화합니다. 다음 섹션에서는 Trident에서 설정한 권한에 대해 자세히 설명합니다.

참고 PSS는 Pod Security Policies(PSP)를 대체합니다. PSP는 Kubernetes v1.21에서 사용이 권장되지 않으며 v1.25에서 제거될 예정입니다. 자세한 내용은 "Kubernetes: 보안"를 참조하십시오.

필수 Kubernetes 보안 컨텍스트 및 관련 필드

권한 설명

권한 있음

CSI를 사용하려면 마운트 포인트가 양방향이어야 하므로 Trident 노드 Pod는 권한 있는 컨테이너를 실행해야 합니다. 자세한 내용은 "Kubernetes: 마운트 전파"을 참조하십시오.

호스트 네트워킹

iSCSI 데몬에 필요합니다. `iscsiadm`는 iSCSI 마운트를 관리하고 호스트 네트워킹을 사용하여 iSCSI 데몬과 통신합니다.

호스트 IPC

NFS는 프로세스 간 통신(IPC)을 사용하여 NFSD와 통신합니다.

호스트 PID

NFS의 경우 `rpc-statd`을(를) 시작해야 합니다. Trident은 NFS 볼륨을 마운트하기 전에 호스트 프로세스를 쿼리하여 `rpc-statd`이(가) 실행 중인지 확인합니다.

기능

SYS_ADMIN 기능은 권한 있는 컨테이너에 대한 기본 기능의 일부로 제공됩니다. 예를 들어 Docker는 권한 있는 컨테이너에 대해 다음과 같은 기능을 설정합니다:
CapPrm: 0000003fffffffff
CapEff: 0000003fffffffff

Seccomp

Seccomp 프로필은 권한 있는 컨테이너에서 항상 "제한 없음" 상태이므로 Trident에서 활성화할 수 없습니다.

SELinux

OpenShift에서 권한이 있는 컨테이너는 spc_t("Super Privileged Container") 도메인에서 실행되고, 권한이 없는 컨테이너는 container_t 도메인에서 실행됩니다. containerd`에서 `container-selinux`가 설치된 경우 모든 컨테이너가 `spc_t 도메인에서 실행되므로 SELinux가 사실상 비활성화됩니다. 따라서 Trident는 컨테이너에 `seLinuxOptions`를 추가하지 않습니다.

DAC

권한이 있는 컨테이너는 루트로 실행해야 합니다. 권한이 없는 컨테이너는 CSI에 필요한 Unix 소켓에 액세스하기 위해 루트로 실행됩니다.

Pod Security Standards(PSS)

레이블 설명 기본값

pod-security.kubernetes.io/enforce pod-security.kubernetes.io/enforce-version

Trident Controller와 노드가 설치 네임스페이스에 포함될 수 있도록 허용합니다. 네임스페이스 레이블은 변경하지 마십시오.

enforce: privileged
enforce-version: <version of the current cluster or highest version of PSS tested.>

경고 네임스페이스 레이블을 변경하면 Pod가 스케줄링되지 않거나 "생성 오류: …​" 또는 "경고: trident-csi-…​" 오류가 발생할 수 있습니다. 이러한 문제가 발생하면 네임스페이스 레이블이 privileged 변경되었는지 확인하십시오. 변경된 경우 Trident를 다시 설치하십시오.

Pod Security Policies(PSP)

필드 설명 기본값

allowPrivilegeEscalation

권한 있는 컨테이너는 권한 상승을 허용해야 합니다.

true

allowedCSIDrivers

Trident는 인라인 CSI 임시 볼륨을 사용하지 않습니다.

비어 있음

allowedCapabilities

권한이 없는 Trident 컨테이너는 기본 세트 이상의 기능을 필요로 하지 않으며 권한이 있는 컨테이너에는 가능한 모든 기능이 부여됩니다.

비어 있음

allowedFlexVolumes

Trident는 "FlexVolume 드라이버"를 사용하지 않으므로 허용되는 볼륨 목록에 포함되지 않습니다.

비어 있음

allowedHostPaths

Trident 노드 Pod는 노드의 루트 파일 시스템을 마운트하므로 이 목록을 설정해도 아무런 이점이 없습니다.

비어 있음

allowedProcMountTypes

Trident는 어떤 것도 사용하지 않습니다 ProcMountTypes.

비어 있음

allowedUnsafeSysctls

Trident는 안전하지 않은 `sysctls`을 필요로 하지 않습니다.

비어 있음

defaultAddCapabilities

권한 있는 컨테이너에는 별도의 기능을 추가할 필요가 없습니다.

비어 있음

defaultAllowPrivilegeEscalation

권한 상승 허용은 각 Trident Pod에서 처리됩니다.

false

forbiddenSysctls

아니요 sysctls 허용되지 않습니다.

비어 있음

fsGroup

Trident 컨테이너는 루트로 실행됩니다.

RunAsAny

hostIPC

NFS 볼륨을 마운트하려면 호스트 IPC가 와 통신해야 합니다 nfsd

true

hostNetwork

iscsiadm은 iSCSI 데몬과 통신하기 위해 호스트 네트워크가 필요합니다.

true

hostPID

호스트 PID는 노드에서 `rpc-statd`이(가) 실행 중인지 확인하는 데 필요합니다.

true

hostPorts

Trident는 호스트 포트를 사용하지 않습니다.

비어 있음

privileged

Trident 노드 Pod는 볼륨을 마운트하기 위해 권한 있는 컨테이너를 실행해야 합니다.

true

readOnlyRootFilesystem

Trident 노드 Pod는 노드 파일 시스템에 기록해야 합니다.

false

requiredDropCapabilities

Trident 노드 Pod는 권한 있는 컨테이너를 실행하므로 기능을 삭제할 수 없습니다.

none

runAsGroup

Trident 컨테이너는 루트로 실행됩니다.

RunAsAny

runAsUser

Trident 컨테이너는 루트로 실행됩니다.

runAsAny

runtimeClass

Trident는 `RuntimeClasses`을 사용하지 않습니다.

비어 있음

seLinux

Trident는 현재 컨테이너 런타임과 Kubernetes 배포판이 SELinux를 처리하는 방식에 차이가 있기 때문에 `seLinuxOptions`을 설정하지 않습니다.

비어 있음

supplementalGroups

Trident 컨테이너는 루트로 실행됩니다.

RunAsAny

volumes

Trident Pod에는 이러한 볼륨 플러그인이 필요합니다.

hostPath, projected, emptyDir

보안 컨텍스트 제약 조건(SCC)

라벨 설명 기본값

allowHostDirVolumePlugin

Trident 노드 Pod는 노드의 루트 파일 시스템을 마운트합니다.

true

allowHostIPC

NFS 볼륨을 마운트하려면 호스트 IPC가 `nfsd`와(과) 통신해야 합니다.

true

allowHostNetwork

iscsiadm은 iSCSI 데몬과 통신하기 위해 호스트 네트워크가 필요합니다.

true

allowHostPID

호스트 PID는 노드에서 `rpc-statd`이(가) 실행 중인지 확인하는 데 필요합니다.

true

allowHostPorts

Trident는 호스트 포트를 사용하지 않습니다.

false

allowPrivilegeEscalation

권한 있는 컨테이너는 권한 상승을 허용해야 합니다.

true

allowPrivilegedContainer

Trident 노드 Pod는 볼륨을 마운트하기 위해 권한 있는 컨테이너를 실행해야 합니다.

true

allowedUnsafeSysctls

Trident는 안전하지 않은 `sysctls`을 필요로 하지 않습니다.

none

allowedCapabilities

권한이 없는 Trident 컨테이너는 기본 세트 이상의 기능을 필요로 하지 않으며 권한이 있는 컨테이너에는 가능한 모든 기능이 부여됩니다.

비어 있음

defaultAddCapabilities

권한 있는 컨테이너에는 별도의 기능을 추가할 필요가 없습니다.

비어 있음

fsGroup

Trident 컨테이너는 루트로 실행됩니다.

RunAsAny

groups

이 SCC는 Trident에 특정되며 해당 사용자에게 귀속됩니다.

비어 있음

readOnlyRootFilesystem

Trident 노드 Pod는 노드 파일 시스템에 기록해야 합니다.

false

requiredDropCapabilities

Trident 노드 Pod는 권한 있는 컨테이너를 실행하므로 기능을 삭제할 수 없습니다.

none

runAsUser

Trident 컨테이너는 루트로 실행됩니다.

RunAsAny

seLinuxContext

Trident는 현재 컨테이너 런타임과 Kubernetes 배포판이 SELinux를 처리하는 방식에 차이가 있기 때문에 `seLinuxOptions`을 설정하지 않습니다.

비어 있음

seccompProfiles

권한이 있는 컨테이너는 항상 "Unconfined"로 실행됩니다.

비어 있음

supplementalGroups

Trident 컨테이너는 루트로 실행됩니다.

RunAsAny

users

이 SCC를 Trident 네임스페이스의 Trident 사용자에게 바인딩하기 위한 항목이 하나 제공됩니다.

해당 없음

volumes

Trident Pod에는 이러한 볼륨 플러그인이 필요합니다.

hostPath, downwardAPI, projected, emptyDir