Openshift - SCC

Reading time: 2 minutes

이 페이지의 원래 저자는 Guillaume입니다.

정의

OpenShift의 맥락에서 SCC는 Security Context Constraints를 의미합니다. Security Context Constraints는 OpenShift 클러스터에서 실행되는 포드의 권한을 제어하는 정책입니다. 이들은 포드가 실행될 수 있는 보안 매개변수를 정의하며, 수행할 수 있는 작업과 접근할 수 있는 리소스를 포함합니다.

SCC는 관리자가 클러스터 전반에 걸쳐 보안 정책을 시행하도록 도와주며, 포드가 적절한 권한으로 실행되고 조직의 보안 기준을 준수하도록 보장합니다. 이러한 제약 조건은 포드 보안의 다양한 측면을 지정할 수 있습니다. 예를 들어:

  1. 리눅스 기능: 특권 작업을 수행할 수 있는 능력과 같은 컨테이너에 제공되는 기능 제한.
  2. SELinux 컨텍스트: 시스템의 리소스와 프로세스가 상호작용하는 방식을 정의하는 컨테이너에 대한 SELinux 컨텍스트 시행.
  3. 읽기 전용 루트 파일 시스템: 특정 디렉토리의 파일을 수정하는 것을 방지하는 컨테이너.
  4. 허용된 호스트 디렉토리 및 볼륨: 포드가 마운트할 수 있는 호스트 디렉토리 및 볼륨 지정.
  5. UID/GID로 실행: 컨테이너 프로세스가 실행되는 사용자 및 그룹 ID 지정.
  6. 네트워크 정책: 포드의 네트워크 접근 제어, 예를 들어 이그레스 트래픽 제한.

SCC를 구성함으로써 관리자는 포드가 적절한 수준의 보안 격리 및 접근 제어로 실행되도록 보장하여 클러스터 내에서 보안 취약점이나 무단 접근의 위험을 줄일 수 있습니다.

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

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

Pod Escape Privileges

SCC 목록

OpenShift 클라이언트를 사용하여 모든 SCC를 나열하려면:

bash
$ 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 사용

포드에 사용되는 SCC는 주석 안에 정의됩니다:

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

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

bash
$ 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

참고문헌