
Kubernetes에서 컨테이너 보안 설정(SecurityContext) 은 Docker의 보안 기능(사용자 ID, Linux Capabilities 등)을 기반으로 구성됨.
Pod 또는 Container 단위로 설정 가능하며, Container 수준의 설정이 Pod 설정을 덮어씀.
Pod 수준 설정
모든 컨테이너에 동일한 보안 설정을 적용할 때 사용
Container 수준 설정
특정 컨테이너에 개별적으로 보안 설정을 적용할 때 사용
컨테이너 수준에 설정이 있으면 Pod 수준 설정은 무시됨
아래는 ubuntu 이미지를 사용하여 sleep 명령어를 실행하는 Pod이며,
Pod 수준에서 runAsUser 설정을 적용한 예시:
apiVersion: v1
kind: Pod
metadata:
name: secure-pod
spec:
securityContext:
runAsUser: 1000
containers:
- name: ubuntu-container
image: ubuntu
command: ["sleep", "3600"]
컨테이너 내부에서 별도 사용자로 실행하고 NET_ADMIN, SYS_TIME 권한을 부여하는 예시:
apiVersion: v1
kind: Pod
metadata:
name: secure-pod-container
spec:
containers:
- name: ubuntu-container
image: ubuntu
command: ["sleep", "3600"]
securityContext:
runAsUser: 1001
capabilities:
add: ["NET_ADMIN", "SYS_TIME"]
securityContext는 Pod 수준, Container 수준에 모두 정의 가능