Skip to main content

보안 심화 — OPA, Falco, Supply Chain

기본편 #7(RBAC)을 넘어서는 프로덕션 보안


1. Policy as Code — OPA/Gatekeeper

1.1 왜 Policy as Code인가

RBAC은 **"누가 무엇을 할 수 있는가"**를 제어. 하지만 "어떤 리소스가 어떤 조건을 만족해야 하는가"(예: 모든 Pod에 리소스 제한 필수, 특정 레지스트리만 허용)는 RBAC으로 할 수 없음.

1.2 OPA & Gatekeeper

컴포넌트역할
OPA (Open Policy Agent)범용 정책 엔진 (Rego 언어)
GatekeeperOPA의 K8s 네이티브 구현 (Admission Webhook)
flowchart LR
User_OPA["kubectl apply"] --> API_OPA["API Server"]
API_OPA --> Gatekeeper_OPA["Gatekeeper<br/>(Admission Webhook)"]
Gatekeeper_OPA -->|"정책 위반"| Reject["❌ 거부"]
Gatekeeper_OPA -->|"정책 준수"| Accept["✅ 허용"]

1.3 정책 예시

정책설명
이미지 레지스트리 제한gcr.io/myorg/*만 허용
리소스 제한 필수requests/limits 없으면 거부
레이블 필수app, team 레이블 없으면 거부
Privileged 금지privileged: true인 Pod 거부
latest 태그 금지이미지 태그가 latest이면 거부

2. 런타임 보안 — Falco

2.1 Falco란

시스템 콜을 모니터링하여 컨테이너의 비정상 행위를 실시간 탐지.

탐지 예시설명
컨테이너 내 셸 실행kubectl exec 또는 악성 코드
/etc/shadow 읽기패스워드 파일 접근
아웃바운드 네트워크 연결예상치 못한 외부 통신
바이너리 실행원래 이미지에 없는 프로그램 실행

2.2 아키텍처

flowchart LR
Kernel["Linux Kernel<br/>(시스템 콜)"] -->|"eBPF/kprobe"| Falco["Falco Engine<br/>(규칙 매칭)"]
Falco -->|"알림"| Output["Slack / PagerDuty<br/>SIEM / Stdout"]

3. Supply Chain Security

3.1 이미지 보안 파이프라인

flowchart LR
Build["이미지 빌드"] --> Scan["취약점 스캔<br/>(Trivy)"]
Scan --> Sign["이미지 서명<br/>(Cosign)"]
Sign --> Push["레지스트리 Push"]
Push --> Admission["Admission 검증<br/>(서명 확인)"]
Admission --> Deploy["배포"]
단계도구역할
스캔Trivy, Grype, SnykCVE 탐지
서명Cosign (Sigstore)이미지 무결성 보장
SBOMSyft, Trivy소프트웨어 구성 목록 생성
검증Kyverno, Gatekeeper미서명/미스캔 이미지 차단

4. CIS Benchmark

CIS(Center for Internet Security)의 K8s 보안 벤치마크를 자동 검사.

# kube-bench 실행 — CIS 벤치마크 자동 체크
docker run --rm -v /etc:/etc:ro -v /var:/var:ro \
aquasec/kube-bench run
영역검사 항목
MasterAPI Server 설정, etcd 암호화, RBAC
Workerkubelet 설정, 파일 권한
PodSecurity Context, 네트워크 정책

다음 글

→ #16 멀티클러스터 & Federation