27.18.6. SELinux 옵션
권한 있는 SCC를 제외한 사전 정의된 모든 SCC는 seLinuxContext
를 MustRunAs 로 설정합니다. 따라서 포드의 요구 사항과 일치할 가능성이 가장 높은 SCC는 포드에서 SELinux 정책을 사용하도록 강제 적용합니다. 포드에서 사용하는 SELinux 정책은 포드 자체, 이미지, SCC 또는 프로젝트(기본값 제공)에 정의할 수 있습니다.
SELinux 레이블은 Pod의 securityContext.seLinuxOptions
섹션에 정의할 수 있으며 사용자
,역할
,유형
및 수준을
지원합니다.
이 주제에서는 Level 및 MCS 레이블이 서로 바꿔 사용할 수 있습니다.
... securityContext: 1 seLinuxOptions: level: "s0:c123,c456" 2 ...
다음은 SCC 및 기본 프로젝트의 내용입니다.
$ oc get -o yaml --export scc scc-name ... seLinuxContext: type: MustRunAs 1 # oc get -o yaml --export namespace default ... metadata: annotations: openshift.io/sa.scc.mcs: s0:c1,c0 2 ...
권한 있는 SCC를 제외한 사전 정의된 모든 SCC는 seLinuxContext
를 MustRunAs 로 설정합니다. 이렇게 하면 Pod에서 포드 정의, 이미지 또는 기본값으로 정의할 수 있는 MCS 레이블을 사용합니다.
SCC는 SELinux 레이블을 필요로 하는지 여부를 결정하고 기본 레이블을 제공할 수 있습니다. seLinuxContext
전략이 MustRunAs 로 설정되고 Pod(또는 이미지)가 레이블을 정의하지 않으면 OpenShift Container Platform은 기본적으로 SCC 자체 또는 프로젝트에서 선택한 레이블로 설정됩니다.
seLinuxContext
가 RunAsAny 로 설정된 경우 기본 레이블이 제공되지 않으며 컨테이너에서 최종 레이블을 결정합니다. Docker의 경우 컨테이너는 고유한 MCS 레이블을 사용하므로 기존 스토리지 마운트의 레이블과 일치하지 않을 수 있습니다. 지정된 레이블에서 액세스할 수 있도록 SELinux 관리를 지원하는 볼륨과 해당 레이블만 제외되는 방식에 따라 레이블이 다시 지정됩니다.
이는 권한이 없는 컨테이너에 대한 두 가지를 의미합니다.
-
볼륨에는 권한이 없는 컨테이너에서 액세스할 수 있는 유형이 제공됩니다. 이 유형은 일반적으로 RHEL(Red Hat Enterprise Linux) 버전 7.5 이상에서
container_file_t
입니다. 이 유형은 볼륨을 컨테이너 콘텐츠로 처리합니다. 이전 RHEL 버전인 RHEL 7.4, 7.3 등에서 볼륨에svirt_sandbox_file_t
유형이 지정됩니다. -
수준을
지정하면 볼륨에 지정된 MCS 레이블이 지정됩니다.
Pod에서 볼륨에 액세스하려면 Pod에 볼륨의 두 카테고리가 모두 있어야 합니다. 따라서 s0:c1,c2 가 있는 Pod는 s0:c1,c2 를 사용하여 볼륨에 액세스할 수 있습니다. s0 이 있는 볼륨은 모든 포드에서 액세스할 수 있습니다.
포드가 권한 부여에 실패하거나 권한 오류로 인해 스토리지 마운트가 실패하는 경우 SELinux 강제를 방해할 가능성이 있습니다. 이를 확인하는 한 가지 방법은 다음을 실행하는 것입니다.
# ausearch -m avc --start recent
그러면 AVC(Access Vector Cache) 오류에 대한 로그 파일이 검사됩니다.