🔐 Kubernetes securityContext 완전 정리
2026. 2. 22. 00:09ㆍk8s
Kubernetes에서 securityContext는
컨테이너 또는 Pod의 보안 관련 실행 옵션을 정의하는 설정
이다.
즉,
- 어떤 사용자로 실행할지
- root 사용 여부
- 파일 권한
- privilege 사용 여부
- Linux capability 제어
등을 설정할 수 있다.
📌 securityContext 적용 위치
securityContext는 두 군데에 설정할 수 있다.
1️⃣ Pod 수준
spec:
securityContext:
runAsUser: 1000
fsGroup: 2000
→ Pod 전체에 적용
2️⃣ Container 수준
containers:
- name: app
image: nginx
securityContext:
runAsUser: 1001
allowPrivilegeEscalation: false
→ 해당 컨테이너에만 적용
📊 Pod vs Container 차이
| 항목 | Pod securityContext | Container securityContext |
|---|---|---|
| runAsUser | O | O |
| fsGroup | O | X |
| capabilities | X | O |
| privileged | X | O |
📌 주요 옵션 정리
1️⃣ runAsUser
컨테이너를 특정 UID로 실행
securityContext:
runAsUser: 1000
→ root(0) 대신 1000번 사용자로 실행
2️⃣ runAsGroup
securityContext:
runAsGroup: 1000
3️⃣ fsGroup
볼륨 파일의 그룹 소유권 설정
securityContext:
fsGroup: 2000
👉 볼륨 마운트 시 GID 강제 적용
👉 PVC 사용 시 매우 중요
4️⃣ runAsNonRoot
root 실행 방지
securityContext:
runAsNonRoot: true
→ root로 실행되면 Pod 시작 실패
5️⃣ privileged
컨테이너에 거의 host 수준 권한 부여
securityContext:
privileged: true
⚠ 매우 위험
Docker의 --privileged와 유사
6️⃣ allowPrivilegeEscalation
권한 상승 허용 여부
securityContext:
allowPrivilegeEscalation: false
7️⃣ capabilities
Linux capability 제어
securityContext:
capabilities:
add: ["NET_ADMIN"]
drop: ["ALL"]
8️⃣ readOnlyRootFilesystem
루트 파일 시스템을 읽기 전용으로
securityContext:
readOnlyRootFilesystem: true
→ 보안 강화에 매우 효과적
📌 실제 예제 (권장 보안 설정)
apiVersion: v1
kind: Pod
metadata:
name: secure-pod
spec:
securityContext:
fsGroup: 2000
containers:
- name: app
image: nginx
securityContext:
runAsUser: 1000
runAsNonRoot: true
allowPrivilegeEscalation: false
readOnlyRootFilesystem: true
capabilities:
drop:
- ALL
📌 fsGroup이 중요한 이유
PVC를 마운트할 때
파일 권한 문제로 접근 실패하는 경우가 많다.
fsGroup을 설정하면:
볼륨 파일의 그룹 소유자를 강제로 맞춰
해당 그룹 권한으로 접근 가능하게 만든다.
📌 실무 보안 권장 가이드
✔ root 실행 금지 (runAsNonRoot)
✔ capability 최소화 (drop: ALL)
✔ privileged 사용 금지
✔ readOnlyRootFilesystem 사용
✔ allowPrivilegeEscalation=false
📌 securityContext vs PodSecurity
| 구분 | securityContext | PodSecurity |
|---|---|---|
| 적용 대상 | Pod/Container | Namespace |
| 제어 방식 | 개별 설정 | 정책 기반 |
| 목적 | 실행 권한 설정 | 보안 표준 강제 |
🎯 한 줄 정리
securityContext는
컨테이너의 실행 권한과 보안 옵션을 제어하는 설정이며,
운영 환경에서는 root 사용을 최소화하는 것이 핵심이다.
'k8s' 카테고리의 다른 글
| 🩺 Kubernetes livenessProbe & readinessProbe 정리 (0) | 2026.02.22 |
|---|---|
| 📦 Kubernetes LimitRange 완전 정리 (0) | 2026.02.22 |
| 🐤 Kubernetes Canary Deployment 완전 정리 (0) | 2026.02.21 |
| 🔁 Kubernetes Deployment Rollout 완전 정리 (0) | 2026.02.21 |
| 🔁 Kubernetes Deployment에서 ReplicaSet이 여러 개 보이는 이유 (0) | 2026.02.21 |