Openshift - SCC
Reading time: 2 minutes
이 페이지의 원래 저자는 Guillaume입니다.
정의
OpenShift의 맥락에서 SCC는 Security Context Constraints를 의미합니다. Security Context Constraints는 OpenShift 클러스터에서 실행되는 포드의 권한을 제어하는 정책입니다. 이들은 포드가 실행될 수 있는 보안 매개변수를 정의하며, 수행할 수 있는 작업과 접근할 수 있는 리소스를 포함합니다.
SCC는 관리자가 클러스터 전반에 걸쳐 보안 정책을 시행하도록 도와주며, 포드가 적절한 권한으로 실행되고 조직의 보안 기준을 준수하도록 보장합니다. 이러한 제약 조건은 포드 보안의 다양한 측면을 지정할 수 있습니다. 예를 들어:
- 리눅스 기능: 특권 작업을 수행할 수 있는 능력과 같은 컨테이너에 제공되는 기능 제한.
- SELinux 컨텍스트: 시스템의 리소스와 프로세스가 상호작용하는 방식을 정의하는 컨테이너에 대한 SELinux 컨텍스트 시행.
- 읽기 전용 루트 파일 시스템: 특정 디렉토리의 파일을 수정하는 것을 방지하는 컨테이너.
- 허용된 호스트 디렉토리 및 볼륨: 포드가 마운트할 수 있는 호스트 디렉토리 및 볼륨 지정.
- UID/GID로 실행: 컨테이너 프로세스가 실행되는 사용자 및 그룹 ID 지정.
- 네트워크 정책: 포드의 네트워크 접근 제어, 예를 들어 이그레스 트래픽 제한.
SCC를 구성함으로써 관리자는 포드가 적절한 수준의 보안 격리 및 접근 제어로 실행되도록 보장하여 클러스터 내에서 보안 취약점이나 무단 접근의 위험을 줄일 수 있습니다.
기본적으로 포드 배포가 요청될 때마다 다음과 같은 승인 프로세스가 실행됩니다:

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