반응형
🧱 기본 개념: SecurityContext란?
- Kubernetes Pod나 Container에 적용할 수 있는 보안 설정 블록
- 주요 기능:
- 루트 권한 제한 (runAsNonRoot)
- 사용자/그룹 ID 지정 (runAsUser, runAsGroup)
- Linux Capabilities 조정
- seccomp, AppArmor, SELinux 적용
1️⃣ 루트 권한 없이 실행하기 (runAsNonRoot)
- 보안의 기본! 컨테이너를 root가 아닌 사용자로 실행
- 이미지 자체가 root로 빌드되었어도 Pod 설정이 우선됨
securityContext:
runAsNonRoot: true
runAsUser: 1000
runAsGroup: 3000
⚠️ 주의: 설정한 사용자/그룹이 앱 실행에 필요한 권한이 있는지 확인해야 함
2️⃣ 커널 보안 기능 (Linux Kernel Security Features)
✅ seccomp (Secure Computing Mode)
- 시스템 호출(syscall) 을 제한하는 보안 필터
- 공격자가 unshare, clone, mount 같은 위험한 syscall을 못 쓰게 막음
🛠 적용 방법:
securityContext:
seccompProfile:
type: RuntimeDefault
- RuntimeDefault는 컨테이너 런타임 기본 프로필
- 커스텀 seccomp 프로필도 사용 가능 (하지만 유지보수 어려움)
📌 CVE-2022-0185 대응에도 활용됨 (unshare syscall 차단)
✅ AppArmor
- 프로세스 단위 보안 정책 적용 (파일, 네트워크, capability 제한)
- 프로필 방식: 프로그램 별로 허용 리소스를 정의
- enforce: 차단
- complain: 허용하지만 로그 기록
🛠 적용 방법 (예: Docker 기반 Ubuntu 환경):
securityContext:
appArmorProfile: localhost/my-custom-profile
✅ SELinux (Security-Enhanced Linux)
- 리눅스 보안 라벨 기반 정책 적용
→ 파일, 포트, 프로세스 접근 제어
🛠 적용 방법:
securityContext:
seLinuxOptions:
level: "s0:c123,c456"
role: "system_r"
type: "spc_t"
주로 RHEL/CentOS 기반 시스템에서 사용
🔐 보안 기능 요약 표
기능 설명 적용 위치 예시
seccomp | 위험한 syscall 제한 | securityContext.seccompProfile | unshare syscall 차단 |
AppArmor | 실행 중인 프로세스 권한 제한 | AppArmor 프로필 지정 | 파일 쓰기 차단 |
SELinux | 보안 라벨 기반 접근 제어 | securityContext.seLinuxOptions | /etc/passwd 접근 차단 |
3️⃣ Privileged 컨테이너 주의사항
- privileged: true 설정 시, 모든 보안 설정이 무력화됨
- seccomp, AppArmor, SELinux 적용 안 됨
- 모든 Linux capability 사용 가능 (예: CAP_SYS_ADMIN, CAP_NET_ADMIN)
- 일반적으로는 ❌ 지양
- 꼭 필요한 경우에만 사용하고, 가능한 최소 권한만 부여
🛠 예시 (되도록 사용 자제):
securityContext:
privileged: true
4️⃣ 고급 보안 기능
👤 User Namespace 사용 (실험적)
- 컨테이너 안에서는 root지만, 호스트에선 일반 사용자로 매핑
- hostUsers: false 설정 필요
- 아직 완전한 기능 지원은 부족
🎯 실전 보안 권장 사항 요약
체크리스트 설명
✅ runAsNonRoot 설정 | 가능한 모든 컨테이너에 적용 |
✅ seccomp 적용 | RuntimeDefault 또는 제한적인 커스텀 프로필 |
✅ AppArmor/SELinux 설정 | OS가 지원할 경우 적용 |
⚠️ privileged 사용 제한 | 정말 필요한 경우만 사용 |
🔐 Capability 최소화 | add 대신 drop 중심으로 운영 |
📦 사용자 지정 보안 프로필 배포 시 | Security Profiles Operator 활용 고려 |
반응형
'Certificated 도전 > KCSA - Kubernetes' 카테고리의 다른 글
[KCSA]Kubernetes 애플리케이션 보안 체크리스트 (개발자용) (0) | 2025.03.30 |
---|---|
[KCSA]Kubernetes 보안 체크리스트 요약 (한눈에 보기) (0) | 2025.03.30 |
[KCSA] Kubernetes API 서버 우회 위험 및 대응 가이드 (0) | 2025.03.30 |
[KCSA]Kubernetes 인증 메커니즘 하드닝 가이드 (0) | 2025.03.30 |
[KCSA]멀티 테넌시(Multi-tenancy)란 (0) | 2025.03.30 |