1. 왜 K8s 보안인가 — 기본 설정은 안전하지 않다
2023년 Aqua Security 보고서: 인터넷 노출 K8s API 서버 350,000+, 90%+ 기본 설정 그대로. 2024년 RedHat 보고서: K8s 인시던트 1년 67% 경험, 가장 빈번 — 잘못 설정(45%), 취약점(35%), 공급망(28%). Tesla Tesla, Capital One, SolarWinds CI/CD에서 모두 K8s 또는 컨테이너 인프라가 핵심 침해 경로였다.
오해 1 — “EKS·AKS·GKE는 CSP가 보안 다 한다.” Managed K8s는 컨트롤플레인 일부만, 데이터플레인·워크로드·구성·이미지는 고객 100% 책임. 오해 2 — “이미지 스캐너면 끝.” 런타임·RBAC·NetworkPolicy·Secrets·Admission이 함께. 오해 3 — “PSP 폐지 후 보안 통제 없다.” Pod Security Standards(2022 GA) + Kyverno/OPA가 PSP 대체.
4Cs of Cloud Native Security(공식 K8s 문서):
Code → Container → Cluster → Cloud
↓ ↓ ↓ ↓
SAST Image Scan RBAC·NW IAM·VPC
SCA Distroless PSS·NP Encryption
Test Signed Admission Logging
Secrets SBOM Runtime Compliance
2. 핵심 표준·가이드라인
NIST SP 800-190(Application Container Security Guide, 2017):
- 컨테이너 이미지·레지스트리·오케스트레이터·호스트 OS·하드웨어 5 카테고리 위험·완화
NSA/CISA Kubernetes Hardening Guidance v1.2(2022.8):
- 가장 권위 있는 K8s 강화 가이드(미 국가안보국·CISA 공동)
- 5 주제: Pod Security·Network Separation·Authentication & Authorization·Log Auditing·Upgrading & Application Security
CIS Kubernetes Benchmark(현재 v1.10):
- Master·etcd·Worker·Policies 100+ 항목
- EKS·AKS·GKE·OpenShift 별도 버전
- 도구: kube-bench(Aqua), CIS-CAT Pro, Trivy K8s
MITRE ATT&CK for Containers(2021~):
- Initial Access·Execution·Persistence·Privilege Escalation·Defense Evasion·Credential Access·Discovery·Lateral Movement·Impact
- 도구: Calico Threat Detection·Datadog·Sysdig
OWASP Kubernetes Top 10(2022):
- K01 Insecure Workload Configurations
- K02 Supply Chain Vulnerabilities
- K03 Overly Permissive RBAC
- K04 Lack of Centralized Policy
- K05 Inadequate Logging & Monitoring
- K06 Broken Authentication
- K07 Missing Network Segmentation
- K08 Secrets Management
- K09 Misconfigured Cluster Components
- K10 Outdated and Vulnerable K8s Components
3. Pod Security Standards (PSS) — PSP 후계
PSP(PodSecurityPolicy) — K8s 1.21 deprecated, 1.25 제거(2022.8).
Pod Security Standards(K8s 1.22 도입·1.25 GA) — 3 Levels:
| Level | 정책 | 적합 |
|---|---|---|
| Privileged | 모두 허용 | 시스템·인프라 워크로드 |
| Baseline | 알려진 권한 상승 차단 | 일반 비신뢰 사용자 |
| Restricted | 강화 보안 + 최선 관행 | 보안 중요 워크로드 |
Restricted 핵심:
runAsNonRoot: trueallowPrivilegeEscalation: falseseccompProfile.type: RuntimeDefaultcapabilities.drop: ["ALL"]readOnlyRootFilesystem: true- Volume types 제한
- HostNetwork·HostPID·HostIPC 금지
Pod Security Admission(K8s 1.25 GA):
- Namespace 라벨로 적용
apiVersion: v1
kind: Namespace
metadata:
name: production
labels:
pod-security.kubernetes.io/enforce: restricted
pod-security.kubernetes.io/enforce-version: latest
pod-security.kubernetes.io/audit: restricted
pod-security.kubernetes.io/warn: restricted
Modes: enforce(차단)·audit(감사 로그)·warn(경고만).
4. Stage 1 — 클러스터·구성 진단 (1~2개월)
자동 평가:
- kube-bench: CIS Benchmark
- kubescape(ARMO): NSA/CISA·MITRE ATLAS·CIS·Pod Security
- Trivy K8s: 통합 스캐너
- Polaris(Fairwinds): Pod 구성·자원
- kubeaudit: 모범 사례
- Datree·Checkov·Kyverno CLI: 정책 검증
기본 점검 항목:
- API Server 인증·RBAC
- etcd 암호화·접근통제
- Kubelet 권한
- Audit Log 활성화
- Admission Controllers 활성화
- Network Plugin·NetworkPolicy 지원
- 클러스터 버전(EOL 6개월 전 업그레이드)
- 노드 OS·CRI 보안
자산 인벤토리:
- 모든 클러스터(EKS·AKS·GKE·OpenShift·on-prem·vClusters)
- Namespace·Workload·Image·SA·Secret·ConfigMap
- 노출 서비스(LoadBalancer·Ingress·NodePort)
- Persistent Volume·StorageClass
- CRDs·Operators
Multi-tenancy 평가:
- 다중 팀·다중 환경 격리 수준
- Namespace as a Service(NaaS)
- vCluster·Capsule·Hierarchical Namespace
- 강한 격리: 별도 클러스터·노드풀
5. Stage 2 — RBAC·Identity·인증 (2~3개월)
RBAC 원칙:
- Default Deny —
system:anonymous·system:unauthenticated권한 0 - ClusterRole 남발 X — Namespace 단위 Role 선호
cluster-admin사용자·SA 최소화- Wildcard(
*) verb·resource 금지 escalate·bind·impersonateverb 엄격 관리
Service Account 관리:
- Default SA 사용 금지(
automountServiceAccountToken: false) - Pod별 전용 SA
- Workload Identity:
- AWS IRSA(IAM Roles for Service Accounts)
- Azure Workload Identity(2023.10 GA)
- GCP Workload Identity
- SPIFFE/SPIRE(클라우드 중립)
- Bound Service Account Token(K8s 1.21+ TokenRequest API) — 만료·청중·바인딩
External 인증:
- OIDC(Okta·Entra ID·Keycloak·Auth0·Google)
- AWS IAM(EKS)·Azure AD(AKS)·GCP IAM(GKE)
- kubectl-oidc-login(Keycloak·Dex)
- Audit Trail —
kubectl exec·kubectl logs추적
도구:
- rakkess(corneliusweig): SA 접근권한 시각화
- rbac-tool(Insight Engineering): 시각화·취약 RBAC 탐지
- kubescape RBAC Visualizer
- Permify·Otterize: 자동 RBAC 생성
6. Stage 3 — 네트워크·Admission·Runtime (3~6개월)
NetworkPolicy(K8s 1.7+ GA):
- Default Deny 모든 Namespace
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
name: default-deny
namespace: production
spec:
podSelector: {}
policyTypes: [Ingress, Egress]
- CNI 지원: Calico·Cilium·Antrea·Weave(Calico/Cilium 권장)
- Egress 제한 — 외부 호출 화이트리스트
Advanced — Cilium NetworkPolicy(CNP):
- L3/L4 + L7(HTTP·gRPC·Kafka·DNS) 정책
- eBPF 기반 고성능
- Identity-aware
- Hubble 가시화
Service Mesh + mTLS:
- Istio: 풀스택, 정책·관측·보안
- Linkerd: 경량, mTLS 자동
- Cilium Service Mesh: eBPF Sidecar-less
- mTLS 자동·자격증명 회전·Zero Trust Workload
Admission Controllers:
- Kyverno: YAML 기반·K8s 친화 (CNCF Graduated 2024)
- OPA Gatekeeper: Rego 정책
- Sigstore Policy Controller: 이미지 서명 검증
- Tanzu Mission Control·Polaris·Trivy Operator
Kyverno 정책 예시:
apiVersion: kyverno.io/v1
kind: ClusterPolicy
metadata:
name: disallow-latest-tag
spec:
validationFailureAction: Enforce
rules:
- name: validate-image-tag
match:
any:
- resources:
kinds: [Pod]
validate:
message: "Using ':latest' tag is not allowed"
pattern:
spec:
containers:
- image: "!*:latest"
Runtime Security:
- Falco(CNCF Incubating·Sysdig 기원): eBPF·시스템 콜·룰 기반
- Tetragon(Isovalent/Cisco): eBPF·정책 강제 가능
- Tracee(Aqua): eBPF·이벤트 풍부
- Sysdig Secure: 상용 통합
- Calico Threat Defense: 네트워크+런타임
- 도구 비교: Falco는 탐지 중심, Tetragon은 차단까지
eBPF 기반 가시성:
- Cilium Hubble — 네트워크 흐름
- Pixie — 코드 수정 없는 관측
- Inspektor Gadget — 디버깅·보안
- Tetragon — 정책 + 차단
7. Stage 4 — Secrets·공급망·이미지 (3~6개월)
Secrets Management:
- External Secrets Operator: Vault·AWS Secrets Manager·Azure Key Vault·GCP Secret Manager 동기화
- Sealed Secrets(Bitnami): GitOps 친화, 암호화 후 Git 저장
- SOPS(Mozilla): 파일 단위 암호화
- HashiCorp Vault: 동적 자격증명·DB 자격증명 회전·PKI
- CSI Secret Store Driver: 시크릿을 볼륨으로 마운트(메모리 only)
- etcd Encryption at Rest 의무(K8s API 시크릿)
시크릿 위생:
- ConfigMap에 시크릿 절대 X
- 환경변수 노출 최소화 (파일 마운트 선호)
- Pod 로그·이벤트에 시크릿 출력 차단
- Audit log에서 시크릿 마스킹
컨테이너 이미지 공급망:
- 베이스 이미지: Distroless(Google)·Chainguard Images·Wolfi(Chainguard) — 최소 의존성·CVE 적음
- 멀티스테이지 빌드 — 빌드 도구 미포함
- Non-root user
- Read-only filesystem
- Multi-arch(amd64·arm64)
- SBOM 자동 생성
이미지 서명 + SLSA:
- Cosign: 키리스 서명(OIDC) + Rekor 투명 로그
- SLSA Provenance:
slsa-github-generator·GitHub Artifact Attestations - Notary v2/Notation: OCI 표준 서명
서명 검증 Admission:
- Sigstore Policy Controller:
apiVersion: policy.sigstore.dev/v1beta1
kind: ClusterImagePolicy
metadata:
name: must-be-signed
spec:
images:
- glob: "ghcr.io/org/**"
authorities:
- keyless:
url: "https://fulcio.sigstore.dev"
identities:
- issuer: "https://token.actions.githubusercontent.com"
subject: "https://github.com/org/repo/.github/workflows/build.yml@refs/heads/main"
- Kyverno verifyImages: SLSA·서명·attestation 검증
Registry Security:
- Harbor·ECR·ACR·GCR·Quay
- 매일 재스캔(이미 배포된 이미지 신규 CVE)
- 미서명 이미지 금지
- KEV·EPSS 우선순위
8. Stage 5 — 운영·자동화·고도화 (지속)
Audit Logging:
- API Server Audit Policy —
Metadata·Request·RequestResponse수준 - 모든 변경 로그 (Create·Update·Delete·Patch)
- SIEM 전송(Splunk·Sentinel·Elastic·Loki)
Threat Detection:
- MITRE ATT&CK for Containers 매핑
- 비정상 행동: Exec·Shell·외부 IP·암호화폐 채굴·권한 상승
- Falco/Tetragon 룰셋
- Container Drift 탐지 (이미지와 런타임 차이)
자동 대응:
- Falco → Falco-talon·Falcosidekick → Slack/PagerDuty/SOAR
- 자동 Pod 격리·삭제·롤백
- ArgoCD Auto-sync 차단 — 위협 발견 시
GitOps 보안:
- ArgoCD·Flux RBAC·OIDC
- App-of-Apps 패턴
- 보안 정책을 Git에 저장·리뷰
- 위협 발견 시 Git 자동 revert
Multi-tenancy 고도화:
- vCluster(Loft Labs): 가상 K8s 클러스터
- Capsule: Tenant 추상화
- Hierarchical Namespace Controller(HNC)
- Kiosk(Loft): 셀프서비스
- Crossplane: 클라우드 자원 K8s API화
Service Account Token 단기화:
- Bound Service Account Token(K8s 1.21+) 자동 활용
- Token 짧은 만료(1시간·하루)
- Persistent Token 금지
컴플라이언스 통합:
- ISO 27001 A.8.27·A.8.29
- PCI DSS v4.0.1 컨테이너 가이드
- ISMS-P 클라우드 부속
- CIS K8s + EKS/AKS/GKE Benchmark
- NIST CSF 2.0·800-190 매핑
고도화:
- Confidential Containers: CoCo 프로젝트 — TEE 내 컨테이너
- WebAssembly(Wasm) on K8s: SpinKube·wasmCloud — 경량·격리
- Edge K8s: K3s·MicroK8s·KubeEdge — 제조 현장
- OT/IT K8s 격리
9. 비용·ROI
| 항목 | 비용 (연간) |
|---|---|
| Managed K8s(EKS·AKS·GKE) | 3억~30억 |
| 보안 도구(Aqua·Sysdig·Wiz·Prisma) | 1억~20억 |
| Open Source(Falco·Tetragon·Kyverno) | 0 + 인력 |
| Service Mesh(Istio·Linkerd) | 0 + 인력 또는 상용 |
| 인력(K8s SRE+Security 2~10명) | 4억~30억 |
| 교육·인증(CKS·CKA) | 3천~3억 |
| 합계 (중견 제조사) | 8~85억 |
ROI:
- 평균 컨테이너 침해 비용(IBM 2024) 38억 → 1건 예방 = 1년치
- 잘못 설정으로 인한 사고 95%+ 사전 차단
- 개발 속도 향상 — 보안 자동화로 배포 게이트 단축
- 컴플라이언스(ISMS-P·PCI·HIPAA) 자동화
- 사이버보험 — K8s 강화 시 15~25% 할인
10. 자가 점검
Cluster·Identity:
- kube-bench/kubescape CIS 80%+
- API Server·etcd 암호화·접근통제
- Audit Logging 활성화·SIEM 전송
- RBAC 최소권한·Wildcard 제거
- Default SA 비활성화
- Workload Identity(IRSA·SPIFFE)
- Bound Service Account Token
- External OIDC 인증
Pod Security·Network:
- Pod Security Admission Restricted
- NetworkPolicy Default Deny 모든 NS
- Cilium L7·Service Mesh mTLS
- Egress 화이트리스트
- Multi-tenancy 격리(vCluster·Capsule)
Admission·정책:
- Kyverno 또는 OPA Gatekeeper
- Sigstore Policy Controller 서명 검증
- Image registry 화이트리스트
- CVE 정책(Critical 차단)
- Resource Quota·LimitRange
Runtime·Detection:
- Falco/Tetragon 런타임 보호
- MITRE ATT&CK for Containers 매핑
- Threat Hunting·Sigma 룰
- eBPF 가시성(Cilium Hubble·Pixie)
- 자동 대응(Falcosidekick·SOAR)
공급망·시크릿:
- SBOM 자동 생성
- Cosign 서명·SLSA Provenance
- Distroless·Chainguard 베이스
- Non-root·Read-only·Drop Capabilities
- External Secrets·Vault
- Sealed Secrets / SOPS for GitOps
- CSI Secret Store
거버넌스:
- OWASP K8s Top 10 자가진단
- NSA/CISA Hardening v1.2 매핑
- NIST SP 800-190 매핑
- ISO 27001·ISMS-P 클라우드·PCI·CSF 2.0 통합
- CKS 인증 보유 인력
- GitOps + 보안 정책 PR
11. 마무리 — 기본 설정은 안전하지 않다
Kubernetes 보안은 ① 클러스터·구성 진단, ② RBAC·Identity·인증, ③ 네트워크·Admission·Runtime, ④ Secrets·공급망·이미지, ⑤ 운영·자동화·고도화 — 5단계로 정착시킨다. K8s는 기본 설정이 안전하지 않다, Pod Security Standards + RBAC + NetworkPolicy + Admission + Runtime + 공급망 6 영역 모두 강화해야 한다. NSA/CISA Hardening Guidance + NIST SP 800-190 + CIS Benchmark를 운영체에 녹이면 컨테이너 침해 95%+ 사전 차단된다.
통합 사이클
- Cloud Security CNAPP
- AI/LLM 보안 OWASP LLM Top 10
- NIST PQC·FIPS 140-3
- Penetration Testing·Red Team
- CTI 위협 인텔리전스 MISP·STIX
- 침해사고 대응 NIST SP 800-61
- BCP·DRP·ISO 22301
- DevSecOps Shift-Left CI/CD
- Threat Modeling STRIDE·PASTA·LINDDUN
- CWE·CVSS·EPSS·KEV
- FIDO2·WebAuthn·Passkey
- SLSA·OpenSSF·Sigstore
- NIST SSDF SP 800-218
- Zero Trust Architecture
- OWASP Top 10·ASVS·SAMM
- ISO 27001 인증
- 한국 ISMS-P
- NIST CSF 2.0
- EU NIS2
- EU CRA
- HITRUST CSF
- CIS Controls v8.1
- CSA STAR 클라우드
- MITRE ATT&CK
