취약점분석 (Blue Team)/Cloud

[k8s-goat] 17. Secure Network Boundaries using NSP

poiri3r 2026. 7. 6. 15:53

이번엔 17번째 시나리오입니다.

NSP를 이용한 Network 경계 보안입니다.

이번에는 따로 명령어로 시작하는게 아니고 Guide를 참고하라고 되어있습니다.

 

https://madhuakula.com/kubernetes-goat/docs/scenarios/scenario-20/secure-kubernetes-using-network-security-policy/welcome

 

⎈ Secure Network Boundaries using NSP | Kubernetes Goat

Learn how to apply Network Security Policies (NSP) for building secure network boundaries - Kubernetes Goat Scenario 🚀

madhuakula.com

 

가이드는 해당 링크를 참고하면 됩니다.

 

NSP는 Network Security Policy를 말합니다.

Pod 간 네트워크 통신 제한 정책인데, 내부 Pod끼리의 통신을 제한하는 정책입니다.

보안의 중요한 요소인 접근 제어를 구현하는 부분입니다.

 

frontend-pod과 backend-pod, database pod이 있을때 frontend는 db pod에 접근을 못하게하고, backend-pod만 접근하게끔 하는게 중요합니다.

 

Kind: NetworkPolicy 부분을 보면

app: website라벨을 가진 Pod을 대상으로 Ingress:[]로 들어오는 트래픽을 전부 차단함으로써 보호하는 역할을 합니다.

appwebsite -> 외부 Pod으로 나가는 트래픽을 막진 않습니다.

 

실습을 위해서 nginx pod을 하나 먼저 생성해주겠습니다.

웹사이트가 제대로 동작함을 확인했고요

 

이제 차단 정책을 담은 yaml파일을 만들어줬습니다.

 

yaml파일을 적용해줬고 이제 정책 확인을 위해 임시 쉘을 띄워보겠습니다.

kubectl run -it --image=alpine temp -- sh

그리고 쉘 안에서 확인을 해봤는데 차단이 안됐더라고요

한번 정책을 점검해보겠습니다.

 

정책은 제대로 존재합니다.

찾아보니까 kind 기본 CNI인 kindnet만 있으면 NetworkPolicy 차단이 안 될 수 있다고 하긴 합니다.

calico, calium이 잇어야한다고 하네요.

 

이걸 설치하려면 클러스터 자체를 새로 만들어야해서 조금 애매합니다

원래는 이렇게 타임아웃이 나와야 되고요 

 

아까 get pods -n kube-system 결과로 kindnet이 있었는데, 이 kindnet은 Kubernetes In Docker에서 사용하는 CNI로 매우 간단한 기본 방식입니다.

NSP정책을 적용하려면 API Server에 NetworkPolicy 리소스를 저장하고, CNI에서 그 정책을 읽고 iptables같은 차단 규칙을 만들어야 하는데, kindnet은 NetworkPolicy enforcement 기능이 없어서 정책이 적용이 안되는 거네요.

 

일단 원인과 해결책은 알았으니, 여기까지 해서 일단 포스팅을 마치겠습니다. kind 클러스터를 아예 없애고 만드는건 소요가 너무 크네요

 

*Kubernetes는 여러 서버를 노드로 묶어서 만드는데 kind는 WSL안의 docker를 이용해서 Docker 컨테이너 하나를 k8s Node처럼 실행합니다. 나중에 docker말고 여러개의 서버를 묶어서 만드는것도 한번 해보겠습니다