현재 Zero Trust 보안 모델을 채택하고 있으며, Kubernetes 환경에서 서비스 간 통신을 철저히 제어하고자 합니다. 이를 위해 Istio를 도입했으며, AuthorizationPolicy 리소스를 통해 서비스 간 통신을 제어하려고 하는데, 실제로 적용하다 보니 다음과 같은 고민이 생깁니다:
기본적으로 모든 트래픽을 차단하고, 필요한 통신만 허용하는 방식을 구성하려면 어떤 접근이 가장 효율적일까요?
서비스 간 인증 정보를 기반으로 정책을 적용할 수 있는 예제가 필요합니다. 예> 특정 ServiceAccount만 요청 가능하도록 제한
정책 적용 후 예기치 않은 차단이 발생했을 때 디버깅 방법은 어떻게 해야 할까요?
실제로 Istio 기반 Zero Trust 환경을 운영해본 분들이 있다면, AuthorizationPolicy의 최적 활용법과 디버깅 팁을 공유해주시면 감사하겠습니다.
이 정책은 frontend 네임스페이스의 frontend-sa라는 서비스 계정만 backend 서비스에 접근할 수 있도록 하는 것입니다.
디버깅 전략
Istio의 istio-proxy 컨테이너의 로그를 확인하고, 정책 위반 시 명확한 거부 메시지가 기록됩니다.
istioctl x authz 명령을 사용해 현재 적용된 정책을 시각적으로 확인하고, 효과를 검증할 수 있습니다.
네트워크 정책과 AuthorizationPolicy가 함께 적용되는 경우, 어느 쪽이 차단했는지 분리 분석이 필요합니다.
요약: 제로 트러스트를 위해선 “Deny by default → Allow by policy” 패턴을 강제하는 것이 핵심입니다. Istio의 AuthorizationPolicy는 이 패턴을 완성도 높게 지원하며, ServiceAccount 기반으로 접근을 제한하면 보안성이 대폭 향상됩니다.