개요
Pod 컨테이너가 root로 실행되면 안 되는 경우 SecurityContext를 활용하여 프로세스 실행 사용자를 변경할 수 있다. 추가로 root 권한을 획득하지 않게 설정하고 싶다면 allowPrivilegeEscalation 설정 적용을 고려해 볼 수 있다.
allowPrivilegeEscalation
프로세스가 부모 프로세스보다 많은 권한을 얻을 수 있는지에 대한 부분을 제어한다. 컨테이너 프로세스에 설정되는 no_new_prives 플래그를 직접 제어한다. allowPrivilegeEscalation는 privileged 모드로 실행되거나 CAP_SYS_ADMIN을 가지고 있으면 항상 참이다.
allowPrivilegeEscalation과 uid, privileged/CAP_SYS_ADMIN 설정 여부에 따른 no_new_privs 플래그 값은 다음과 같이 결정된다.
allowPrivilegeEscalation setting | uid = 0 or unset | uid != 0 | privileged/CAP_SYS_ADMIN |
nil | no_new_privs=true | no_new_privs=false | no_new_privs=false |
false | no_new_privs=true | no_new_privs=true | no_new_privs=false |
true | no_new_privs=false | no_new_privs=false | no_new_privs=false |
설정 예시
apiVersion: v1
kind: Pod
metadata:
name: security-context-demo-2
spec:
securityContext:
runAsUser: 1000
containers:
- name: sec-ctx-demo-2
image: gcr.io/google-samples/node-hello:1.0
securityContext:
allowPrivilegeEscalation: false
참고 문서
https://kubernetes.io/docs/tasks/configure-pod-container/security-context/