[k8s] Pod 보안을 위해 root 가 아닌 사용자로 컨테이너 실행하기

[k8s] 쿠버네티스 Pod 보안을 위해 root 가 아닌 사용자로 컨테이너 실행하기

  • Pod의 Security context에서 runAsUser를 설정하면 컨테이너에서 실행할 사용자를 지정할 수 있다.

  • Pod의 Security context에서 runAsNonRoot를 설정하면 root로 실행하는 컨테이너의 실행을 차단할 수 있다.

    • 차단 시 CreateContainerConfigError 에러와 Error: container has runAsNonRoot and image will run as root 에러 발생

1. runAsUser로 사용자 지정 전

  • pod 설정 yaml 파일
  • 컨테이너 내 프로세스 출력 결과 : 프로세스가 root로 실행 중

2. runAsUser로 사용자 지정 후

  • pod 설정 yaml 파일 : securityContext 내 실행 사용자 2000으로 설정
  • yaml 파일에서 UID 2000 으로 설정 후 프로세스 목록 조회 결과 모든 프로세스가 UID 2000으로 실행된다.
  • 실제 컨테이너 내 UID 2000 이 없어도 문제 없다.

3. runAsNonRoot 으로 root 계정 실행 컨테이너 차단 시

  • 파드 보안 설정에서 runAsNonRoot 을 true로 설정하면 root 를 사용하는 컨테이너의 실행을 차단할 수 있다.

  • pod 설정 yaml 파일 : runAsNonRoot을 true로 설정

  • runAsNonRoot 설정 후 실행 시 "Error: container has runAsNonRoot and image will run as root" 에러가 발생함

  • runAsUser를 일반 사용자로 지정하면 runAsNonRoot가 true 이더라도 문제 없이 실행된다.
  • 이 경우에도 컨테이너를 실행하는 docker 프로세스 자체는 root 계정으로 실행 됨

다른 카테고리의 글 목록

k8s 카테고리의 포스트를 톺아봅니다