728x90
✅ 목표: Cilium의 L7 네트워크 정책을 활용하여,
HTTP DELETE 요청을 차단하거나 특정 파드에서만 허용하는 보안 정책을 구성하고 실습합니다.
🔎 이번 글에서 수행할 작업 요약
- MinIO 객체 삭제 요청의 위험성과 차단 필요성 이해
- Cilium L7 HTTP 정책을 활용한 DELETE 차단 구성
- 허용된 파드와 차단된 파드 비교 테스트
- Hubble을 통해 정책 효과 시각화
⚠️ 1단계: MinIO 객체 삭제 요청의 위험성
이 단계의 목적: API 요청 중 DELETE 메서드가 미치는 영향과
실무 환경에서 어떻게 잘못 사용될 수 있는지를 이해합니다.
- DELETE 요청은 버킷 또는 객체를 영구 삭제함
- 버전 관리가 비활성화된 버킷은 복구 불가능
- 잘못된 설정 시 누구나 curl로 DELETE 가능
☑️ 이 때문에 네트워크 레벨에서 DELETE 요청 차단은 매우 효과적인 보안 전략입니다.
🛡️ 2단계: Cilium L7 정책으로 DELETE 차단 구성
이 단계의 목적: etl 네임스페이스의 모든 파드에서 MinIO로 향하는 DELETE 요청을 차단하는
L7 기반 네트워크 정책을 정의합니다.
# deny-delete-policy.yaml
apiVersion: "cilium.io/v2" # Cilium 정책 API 버전
kind: CiliumNetworkPolicy # 정책 리소스 종류
metadata:
name: deny-delete-method # 정책 이름
namespace: etl # 정책 적용 대상 네임스페이스
spec:
endpointSelector: {} # etl 네임스페이스의 모든 파드
egress:
- toEndpoints:
- matchLabels:
app.kubernetes.io/name: minio # 목적지가 MinIO인 경우
toPorts:
- ports:
- port: "9000" # MinIO 포트
protocol: TCP
rules:
http:
- method: "DELETE" # 🔒 DELETE 메서드만 차단
deny: true # ✅ deny 플래그를 true로 설정
kubectl apply -f deny-delete-policy.yaml
✅ Cilium에서는 deny: true 설정을 통해 특정 요청만 선택적으로 차단할 수 있습니다.
🧪 3단계: DELETE 요청 허용/차단 비교 테스트
이 단계의 목적: DELETE 요청이 정책에 의해 차단되고,
다른 HTTP 메서드는 여전히 허용되는지를 확인합니다.
# 테스트 파드 생성 및 접근
kubectl exec -it test-client -n etl -- sh
# ❌ DELETE 요청 시도 (정책에 의해 차단 예상)
curl -X DELETE http://minio.minio.svc.cluster.local:9000/my-bucket/test.txt
# ✅ GET 요청 (허용되어야 함)
curl -I http://minio.minio.svc.cluster.local:9000
☑️ DELETE 요청은 DROP 처리되고, GET/PUT 요청은 통과된다면 정책이 정상 작동 중입니다.
🔍 4단계: Hubble UI/CLI로 흐름 확인
이 단계의 목적: 시각적 도구(Hubble)를 통해 DROP 처리된 DELETE 요청을 확인하고
정책 효과를 검증합니다.
# CLI로 삭제 요청 DROP 로그 확인
hubble observe --namespace etl --verdict DROP --protocol http
# UI 접속 후 Flow 탭에서 DELETE 요청 흐름 확인
http://<HUBBLE-UI-EXTERNAL-IP>
Hubble에서는 Source, Destination, Method, Verdict(DROP) 정보를 한눈에 확인할 수 있습니다.
📎 요약 및 핵심 정리
- MinIO 객체 삭제는 되돌릴 수 없는 작업이므로, 네트워크 정책으로 DELETE 요청을 차단하는 것이 매우 효과적임
- Cilium L7 정책의 deny: true 옵션을 활용하면 특정 HTTP 메서드만 선택적으로 제어 가능
- 정책 적용 후 GET, PUT은 허용되면서 DELETE만 DROP되는 흐름을 통해 정책의 세밀함을 검증함
- 보안 강화를 위해 **"쓰기/읽기/삭제 권한을 메서드 수준으로 분리"**하는 전략을 적용할 수 있음
728x90