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`이(가) 실행 중인지 확인합니다. |
기능 |
|
Seccomp |
Seccomp 프로필은 권한 있는 컨테이너에서 항상 "제한 없음" 상태이므로 Trident에서 활성화할 수 없습니다. |
SELinux |
OpenShift에서 권한이 있는 컨테이너는 |
DAC |
권한이 있는 컨테이너는 루트로 실행해야 합니다. 권한이 없는 컨테이너는 CSI에 필요한 Unix 소켓에 액세스하기 위해 루트로 실행됩니다. |
Pod Security Standards(PSS)
| 레이블 | 설명 | 기본값 |
|---|---|---|
|
Trident Controller와 노드가 설치 네임스페이스에 포함될 수 있도록 허용합니다. 네임스페이스 레이블은 변경하지 마십시오. |
|
|
|
네임스페이스 레이블을 변경하면 Pod가 스케줄링되지 않거나 "생성 오류: …" 또는 "경고: trident-csi-…" 오류가 발생할 수 있습니다. 이러한 문제가 발생하면 네임스페이스 레이블이 privileged 변경되었는지 확인하십시오. 변경된 경우 Trident를 다시 설치하십시오.
|
Pod Security Policies(PSP)
| 필드 | 설명 | 기본값 |
|---|---|---|
|
권한 있는 컨테이너는 권한 상승을 허용해야 합니다. |
|
|
Trident는 인라인 CSI 임시 볼륨을 사용하지 않습니다. |
비어 있음 |
|
권한이 없는 Trident 컨테이너는 기본 세트 이상의 기능을 필요로 하지 않으며 권한이 있는 컨테이너에는 가능한 모든 기능이 부여됩니다. |
비어 있음 |
|
Trident는 "FlexVolume 드라이버"를 사용하지 않으므로 허용되는 볼륨 목록에 포함되지 않습니다. |
비어 있음 |
|
Trident 노드 Pod는 노드의 루트 파일 시스템을 마운트하므로 이 목록을 설정해도 아무런 이점이 없습니다. |
비어 있음 |
|
Trident는 어떤 것도 사용하지 않습니다 |
비어 있음 |
|
Trident는 안전하지 않은 `sysctls`을 필요로 하지 않습니다. |
비어 있음 |
|
권한 있는 컨테이너에는 별도의 기능을 추가할 필요가 없습니다. |
비어 있음 |
|
권한 상승 허용은 각 Trident Pod에서 처리됩니다. |
|
|
아니요 |
비어 있음 |
|
Trident 컨테이너는 루트로 실행됩니다. |
|
|
NFS 볼륨을 마운트하려면 호스트 IPC가 와 통신해야 합니다 |
|
|
iscsiadm은 iSCSI 데몬과 통신하기 위해 호스트 네트워크가 필요합니다. |
|
|
호스트 PID는 노드에서 `rpc-statd`이(가) 실행 중인지 확인하는 데 필요합니다. |
|
|
Trident는 호스트 포트를 사용하지 않습니다. |
비어 있음 |
|
Trident 노드 Pod는 볼륨을 마운트하기 위해 권한 있는 컨테이너를 실행해야 합니다. |
|
|
Trident 노드 Pod는 노드 파일 시스템에 기록해야 합니다. |
|
|
Trident 노드 Pod는 권한 있는 컨테이너를 실행하므로 기능을 삭제할 수 없습니다. |
|
|
Trident 컨테이너는 루트로 실행됩니다. |
|
|
Trident 컨테이너는 루트로 실행됩니다. |
|
|
Trident는 `RuntimeClasses`을 사용하지 않습니다. |
비어 있음 |
|
Trident는 현재 컨테이너 런타임과 Kubernetes 배포판이 SELinux를 처리하는 방식에 차이가 있기 때문에 `seLinuxOptions`을 설정하지 않습니다. |
비어 있음 |
|
Trident 컨테이너는 루트로 실행됩니다. |
|
|
Trident Pod에는 이러한 볼륨 플러그인이 필요합니다. |
|
보안 컨텍스트 제약 조건(SCC)
| 라벨 | 설명 | 기본값 |
|---|---|---|
|
Trident 노드 Pod는 노드의 루트 파일 시스템을 마운트합니다. |
|
|
NFS 볼륨을 마운트하려면 호스트 IPC가 `nfsd`와(과) 통신해야 합니다. |
|
|
iscsiadm은 iSCSI 데몬과 통신하기 위해 호스트 네트워크가 필요합니다. |
|
|
호스트 PID는 노드에서 `rpc-statd`이(가) 실행 중인지 확인하는 데 필요합니다. |
|
|
Trident는 호스트 포트를 사용하지 않습니다. |
|
|
권한 있는 컨테이너는 권한 상승을 허용해야 합니다. |
|
|
Trident 노드 Pod는 볼륨을 마운트하기 위해 권한 있는 컨테이너를 실행해야 합니다. |
|
|
Trident는 안전하지 않은 `sysctls`을 필요로 하지 않습니다. |
|
|
권한이 없는 Trident 컨테이너는 기본 세트 이상의 기능을 필요로 하지 않으며 권한이 있는 컨테이너에는 가능한 모든 기능이 부여됩니다. |
비어 있음 |
|
권한 있는 컨테이너에는 별도의 기능을 추가할 필요가 없습니다. |
비어 있음 |
|
Trident 컨테이너는 루트로 실행됩니다. |
|
|
이 SCC는 Trident에 특정되며 해당 사용자에게 귀속됩니다. |
비어 있음 |
|
Trident 노드 Pod는 노드 파일 시스템에 기록해야 합니다. |
|
|
Trident 노드 Pod는 권한 있는 컨테이너를 실행하므로 기능을 삭제할 수 없습니다. |
|
|
Trident 컨테이너는 루트로 실행됩니다. |
|
|
Trident는 현재 컨테이너 런타임과 Kubernetes 배포판이 SELinux를 처리하는 방식에 차이가 있기 때문에 `seLinuxOptions`을 설정하지 않습니다. |
비어 있음 |
|
권한이 있는 컨테이너는 항상 "Unconfined"로 실행됩니다. |
비어 있음 |
|
Trident 컨테이너는 루트로 실행됩니다. |
|
|
이 SCC를 Trident 네임스페이스의 Trident 사용자에게 바인딩하기 위한 항목이 하나 제공됩니다. |
해당 없음 |
|
Trident Pod에는 이러한 볼륨 플러그인이 필요합니다. |
|