Kubernetes

[K8s] pod container에 root 권한 제한하기

비번변경 2023. 6. 26. 18:17

개요

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/

https://github.com/kubernetes/design-proposals-archive/blob/main/auth/no-new-privs.md#changes-of-securitycontext-objects