title: "Zero Trust Architecture via Istio"
description: "사내 보안 전문가 과정 중 작성한 발표 자료의 일부로서, Zero Trust Architecture(ZTA) 및 Kubernetes 환경에서의 ZTA 관점에서 바라본 Istio에 관한 정리이다. 참고로 NIST SP 800-207은 미국 국립표준기술연구소가 작성한 Zero Trust Architecture의 공식 표준 문서로서, 이를 가장 많이 참조하였다."
cleanUrl: /sw-engineer/zta-via-istio
ogImage: ""
floatFirstTOC: right
graph LR
subgraph NIST["NIST SP 800-207 ZTA"]
  direction LR
  PE["Policy Engine"]
  PA["Policy Administrator"]
  PEP_N["PEP"]
  PKI_N["PKI / ID Management"]
  Logs_N["Activity Logs"]
end

subgraph Istio["Istio" / OPA]
  direction LR
  OPA["OPA"]
  Istiod["Istio: istiod"]
  Envoy["Istio: istio-proxy / Waypoint"]
  SPIFFE["Istio: istiod<br/>(SPIFFE, Citadel)"]
  Logs_I["Istio: Access Log"]
end

PE -.-> OPA
PA -.-> Istiod
PEP_N -.-> Envoy
PKI_N -.-> SPIFFE
Logs_N -.-> Logs_I

style NIST fill:#1e293b,stroke:#94a3b8,color:#ffffff
style Istio fill:#1e293b,stroke:#60a5fa,color:#ffffff
style PE fill:#0f172a,stroke:#94a3b8,color:#ffffff
style PA fill:#0f172a,stroke:#94a3b8,color:#ffffff
style PEP_N fill:#0f172a,stroke:#94a3b8,color:#ffffff
style PKI_N fill:#0f172a,stroke:#94a3b8,color:#ffffff
style Logs_N fill:#0f172a,stroke:#94a3b8,color:#ffffff

style OPA fill:#1e293b,stroke:#fbbf24,color:#fbbf24
style Istiod fill:#1e293b,stroke:#60a5fa,color:#60a5fa
style Envoy fill:#1e293b,stroke:#34d399,color:#34d399
style SPIFFE fill:#1e293b,stroke:#f472b6,color:#f472b6
style Logs_I fill:#1e293b,stroke:#a78bfa,color:#a78bfa

Introduction

사내 보안 전문가 과정 중 작성한 발표 자료의 일부로서, Zero Trust Architecture(ZTA) 및 Kubernetes 환경에서의 ZTA 관점에서 바라본 Istio에 관한 정리이다. 참고로 NIST SP 800-207은 미국 국립표준기술연구소가 작성한 Zero Trust Architecture의 공식 표준 문서로서, 이를 가장 많이 참조하였다. Istio overview: Security 에서 역시 ZTA를 언급함과 동시에 여기서 논하는 Istio 보안 features 상세를 다뤘다.

Zero Trust Architecture란

ZTA는 “절대 신뢰하지 않고, 항상 검증한다(Never trust, always verify)”는 원칙에 기반한 새로운 보안 패러다임이다. 방화벽, IDS/IPS, WAF를 필두로 하는 기존의 경계 기반(Perimeter based) 보안 모델이 내부 네트워크를 신뢰하는 것과 달리, ZTA는 위치에 관계없이 모든 사용자, 장치, 그리고 서비스와 트래픽을 잠재적 위협으로 간주하고, 매 순간 인증 및 권한 확인 절차를 거치도록 요구한다. 경계 보안 모델이 침입을 막는 것'에 집중했다면, ZTA는 침입을 가정하고 확산을 막는 것'에 집중한다. 아래는 간단한 경계 기반 보안 모델과 ZTA 간 비교이다.

구분 경계 기반 보안 모델 ZTA
신뢰 기준 내부 네트워크 위치 사용자, 디바이스, 서비스 각각의 신원 검증
보안 범위 네트워크 경계 중심 데이터, 서비스, 워크로드 등 개별 리소스 중심
접근 제어 경계 지점에서의 일회성 인증 내/외부 무관, 매 요청마다 검증 및 최소 권한 부여
위협 대응 외부 침입 차단에 집중 내부 침투 가정, 측면 이동 차단

<aside> 💡

ZTA 부각과 현황 2009년 Operation Aurora 해킹, 2015년 OPM(미국 인사관리처) 해킹, 2020년 SolarWinds 공급망 공격 등은 기존 경계 기반 모델의 한계를 보여줌과 동시에 ZTA의 요구를 부각시킨 사례로, 이들 모두 공통적으로 경계 기반 모델이 다룰 수 없는 측면 이동(lateral movement; 내부 침투 후 정상 계정·연결을 이용해 다른 시스템으로 확산하는 공격 기법**)**을 사용했다.

이후 미국에서는 연방정부 차원의 행정명령을 통해 ZTA는 필수가 되었고, NIST SP 800-207 “Zero Trust Architecture” 표준 문서를 발표하였으며, CISA는 Zero Trust Maturity Model 2.0을 제정하였다. 우리나라의 경우 과학기술정보통신부와 한국인터넷진흥원(KISA)가 "제로 트러스트 가이드라인 2.0"을 발표했으나, 미국처럼 정부 차원에서의 의무화 등은 현재 없어 보인다.

</aside>

또한, 경계 기반 보안 모델 뿐 아니라 Kubernetes 역시 측면 이동 위협에 취약한 것은 마찬가지이다.

Zero Trust Architecture의 원칙과 구조

아래는 NIST SP 800-207 중 ZTA의 핵심을 다루는 Tenets of Zero Trust, Logical Components of Zero Trust Architecture에 대한, Kubernetes / 마이크로서비스 환경을 주로 고려한 요약이다.

Tenets of Zero Trust (원칙)

  1. 모든 데이터 소스와 컴퓨팅 서비스는 리소스: 마이크로서비스 환경에서는 모든 서비스 인스턴스와 데이터베이스가 각각으로 독립적인 보호 대상으로 관리되어야 함을 나타낸다.
  2. 네트워크 위치와 무관하게 모든 통신 보호: 통신 발생의 내/외부 네트워크 위치는 중요하지 않으며, Kubernetes 내부의 파드 간 통신도 외부 통신과 동일한 수준의 보안 검증을 나타낸다.
  3. 리소스에 대한 접근은 세션별로 부여: 각 요청/세션마다 독립적으로 인증·인가가 이루어져야 하며, 세션 종료 후 재접근 시 다시 검증해야 함을 나타낸다.
  4. 리소스 접근은 동적 정책에 의해 결정되며, 클라이언트 신원, 애플리케이션, 요청 자산의 상태, 기타 행동 및 환경 속성을 포함: 단순히 누가(Who) 접근하는가 뿐 아니라, 언제(When), 어디서(Where), 무엇을(What), 어떻게(How) 접근하는지를 종합적으로 평가함을 나타낸다.