Openshift - SCC

이 페이지의 원 저자는 Guillaume

정의

Openshift에서 SCC는 Security Context Constraints의 약자입니다. Security Context Constraints는 Openshift 클러스터에서 실행되는 pod의 권한을 제어하는 정책입니다. 이는 pod가 실행되는 데 허용되는 보안 매개변수를 정의하며, 수행할 수 있는 작업 및 액세스할 수 있는 리소스를 포함합니다.

SCC는 관리자가 클러스터 전체에 보안 정책을 강제할 수 있도록 돕습니다. 이를 통해 pod가 적절한 권한으로 실행되고 조직의 보안 표준을 준수하는지 확인할 수 있습니다. 이러한 제약 조건은 pod 보안의 여러 측면을 지정할 수 있습니다. 예를 들어:

  1. Linux capabilities: 컨테이너에서 사용 가능한 기능을 제한하는 것(특권 작업 수행 가능 여부 등).

  2. SELinux context: 컨테이너에 대한 SELinux 컨텍스트를 강제하는 것으로, 프로세스가 시스템 리소스와 상호 작용하는 방식을 정의합니다.

  3. Read-only root filesystem: 특정 디렉토리의 파일 수정을 방지하는 것.

  4. 허용된 호스트 디렉토리 및 볼륨: pod가 마운트할 수 있는 호스트 디렉토리 및 볼륨을 지정하는 것.

  5. Run as UID/GID: 컨테이너 프로세스가 실행되는 사용자 및 그룹 ID를 지정하는 것.

  6. 네트워크 정책: pod의 네트워크 액세스를 제어하는 것으로, egress 트래픽을 제한하는 등의 작업을 수행할 수 있습니다.

SCC를 구성함으로써 관리자는 pod가 적절한 수준의 보안 격리와 액세스 제어로 실행되고 클러스터 내에서 보안 취약점이나 무단 액세스의 위험을 줄일 수 있습니다.

기본적으로 pod 배포가 요청될 때마다 다음과 같이 승인 프로세스가 실행됩니다:

이 추가적인 보안 계층은 특권이 있는 pod의 생성, 호스트 파일 시스템의 마운트, 또는 특권 상승으로 이어질 수 있는 어떠한 속성 설정도 기본적으로 금지합니다.

Pod Escape Privileges

SCC 목록

Openshift 클라이언트로 모든 SCC를 나열하려면:

$ oc get scc #List all the SCCs

$ oc auth can-i --list | grep securitycontextconstraints #Which scc user can use

$ oc describe scc $SCC #Check SCC definitions

모든 사용자는 가장 엄격한 SCC인 "restricted" 및 "restricted-v2"에 액세스할 수 있습니다.

SCC 사용

Pod에 사용되는 SCC는 다음과 같이 주석 내에서 정의됩니다:

$ oc get pod MYPOD -o yaml | grep scc
openshift.io/scc: privileged

사용자가 여러 SCC에 액세스 할 때 시스템은 보안 컨텍스트 값과 일치하는 SCC를 사용합니다. 그렇지 않으면 금지된 오류가 발생합니다.

$ oc apply -f evilpod.yaml #Deploy a privileged pod
Error from server (Forbidden): error when creating "evilpod.yaml": pods "evilpod" is forbidden: unable to validate against any security context constrain

SCC 우회

OpenShift - SCC bypass

참고 자료

Last updated