다음을 통해 공유


WireGuard를 사용한 전송 중 암호화(공개 미리 보기)

조직이 AKS(Azure Kubernetes Service)에 점점 더 의존하여 컨테이너화된 워크로드를 실행함에 따라, 특히 규제되거나 보안에 민감한 환경에서 애플리케이션과 서비스 간의 네트워크 트래픽 보안이 필수적입니다. WireGuard를 사용한 전송 중 암호화는 Pod와 노드 간에 이동할 때 데이터를 보호하여 가로채기 또는 변조의 위험을 완화합니다. WireGuard는 단순성과 강력한 암호화로 유명하며 AKS 클러스터 내에서 통신을 보호하기 위한 강력한 솔루션을 제공합니다.

AKS용 WireGuard 암호화는 ACNS(Advanced Container Networking Services) 기능 집합의 일부이며 해당 구현은 Cilium을 기반으로 합니다.

중요합니다

AKS 미리 보기 기능은 셀프 서비스에서 사용할 수 있습니다(옵트인 방식). 미리 보기는 "있는 그대로" 및 "사용 가능한 상태로" 제공되며 서비스 수준 계약 및 제한적 보증에서 제외됩니다. AKS 미리 보기의 일부는 고객 지원팀에서 최선을 다해 지원합니다. 따라서 이러한 기능은 프로덕션 용도로 사용할 수 없습니다. 자세한 내용은 다음 지원 문서를 참조하세요.

WireGuard 암호화 범위

AKS의 WireGuard 전송 중 암호화는 Kubernetes 클러스터 내의 특정 트래픽 흐름을 보호하도록 설계되었습니다. 이 섹션에서는 암호화되는 트래픽 유형과 ACNS(Advanced Container Networking Services)를 통해 현재 지원되지 않는 트래픽 유형을 간략하게 설명합니다.

지원/암호화된 트래픽 흐름:

  • 노드 간 Pod 트래픽: 한 노드에서 Pod를 떠나 다른 노드의 Pod로 향하는 트래픽입니다.

지원되지 않는/암호화되지 않은 트래픽 흐름

  • 동일 노드 내의 Pod 트래픽: 동일 노드의 Pod 간 트래픽
  • 노드 네트워크 트래픽: 다른 노드로 향하는 노드 자체에서 생성된 트래픽

아키텍처 개요

WireGuard 암호화는 분산 시스템 내에서 노드 간 통신을 보호하기 위해 cilium에서 제공하는 Azure CNI 를 사용합니다. 아키텍처는 키 관리, 인터페이스 구성 및 동적 피어 업데이트를 오케스트레이션하는 전용 WireGuard 에이전트를 사용합니다. 이 섹션에서는 자세한 설명을 제공하려고 시도합니다.

WireGuard 디자인 다이어그램

WireGuard 에이전트

시작 시 Cilium 에이전트는 구성을 평가하여 암호화를 사용할 수 있는지 확인합니다. WireGuard가 암호화 모드로 선택되면 에이전트는 전용 WireGuard 하위 시스템을 초기화합니다. wireguard 에이전트는 WireGuard 암호화를 적용하는 데 필요한 구성 요소를 구성하고 초기화하는 역할을 담당합니다.

키 생성

통신을 보호하기 위한 기본 요구 사항은 암호화 키 쌍의 생성입니다. Kubernetes 클러스터의 각 노드는 초기화 단계에서 고유한 WireGuard 키 쌍을 자동으로 생성하고 Kubernetes CiliumNode 사용자 지정 리소스 개체의 "network.cilium.io/wg-pub-key" 주석을 통해 공개 키를 배포합니다. 키 쌍은 메모리에 저장되고 120초마다 회전됩니다. 프라이빗 키는 노드의 기밀 ID 역할을 합니다. 공개 키는 클러스터의 피어 노드와 공유되어 해당 노드에서 실행되는 Cilium 관리형 엔드포인트 간에 트래픽의 암호를 해독하고 암호화합니다. 이러한 키는 고객이 아닌 Azure에서 전적으로 관리되므로 수동 개입 없이 안전하고 자동화된 처리를 보장합니다. 이 메커니즘은 유효성이 검사된 자격 증명을 가진 노드만 암호화된 네트워크에 참여할 수 있도록 합니다.

인터페이스 만들기

키 생성 프로세스가 완료되면 WireGuard 에이전트는 전용 네트워크 인터페이스(cilium_wg0)를 구성합니다. 이 프로세스에는 이전에 생성된 프라이빗 키를 사용한 인터페이스 만들기 및 구성이 포함됩니다.

가상 네트워크 암호화와 비교

Azure는 가상 네트워크 수준 암호화 및 WireGuard 기반 암호화를 포함하여 AKS에서 전송 중인 트래픽을 보호하기 위한 여러 옵션을 제공합니다. 두 방법 모두 네트워크 트래픽의 기밀성과 무결성을 향상하지만 범위, 유연성 및 배포 요구 사항이 다릅니다. 이 섹션은 각 솔루션을 사용하는 시기를 이해하는 데 도움이 됩니다.

가상 네트워크 암호화 사용

  • 가상 네트워크 내의 모든 트래픽에 대해 전체 네트워크 계층 암호화가 필요합니다 . 가상 네트워크 암호화를 사용하면 워크로드 또는 오케스트레이션 계층에 관계없이 모든 트래픽이 Azure Virtual Network를 트래버스할 때 자동으로 암호화됩니다.

  • 최소한의 성능 오버헤드가 필요합니다 . 가상 네트워크 암호화는 지원되는 VM SKU에서 하드웨어 가속을 사용하여 OS에서 기본 하드웨어로 암호화를 오프로드합니다. 이 디자인은 낮은 CPU 사용량으로 높은 처리량을 제공합니다.

  • 모든 가상 머신은 가상 네트워크 암호화를 지원 합니다. 가상 네트워크 암호화는 필요한 하드웨어 가속을 지원하는 VM SKU에 따라 달라집니다. 인프라가 전적으로 지원되는 SKU로 구성된 경우 가상 네트워크 암호화를 원활하게 사용하도록 설정할 수 있습니다.

  • AKS 네트워크 구성은 가상 네트워크 암호화를 지원합니다. 가상 네트워크 암호화에는 aks Pod 네트워킹과 관련하여 몇 가지 제한 사항이 있습니다. 자세한 내용은 가상 네트워크 암호화 지원 시나리오를 참조하세요.

WireGuard 암호화를 사용할 때

  • 애플리케이션 트래픽이 모든 노드에서 암호화되도록 하려면 가상 네트워크 암호화는 동일한 물리적 호스트의 노드 간 트래픽을 암호화하지 않는다는 점에 유의해야 합니다.

  • 다중 클라우드 또는 하이브리드 환경에서 암호화를 통합하려고 합니다. WireGuard는 클라우드에 구애받지 않은 솔루션을 제공하여 여러 클라우드 공급자 또는 온-프레미스에서 실행되는 클러스터 간에 일관된 암호화를 가능하게 합니다.

  • 가상 네트워크 내의 모든 트래픽을 암호화할 필요가 없거나 암호화할 필요가 없습니다 . WireGuard를 사용하면 모든 트래픽을 암호화하는 오버헤드를 발생시키지 않고도 중요한 워크로드를 보호하는 데 더 적합한 대상 암호화 전략을 사용할 수 있습니다.

  • 일부 VM SKU는 가상 네트워크 암호화를 지원하지 않습니다 . WireGuard는 소프트웨어에서 구현되며 VM 하드웨어 지원에 관계없이 작동하므로 다른 유형의 환경에 실용적인 옵션이 됩니다.

고려 사항 & 제한 사항

• WireGuard는 FIPS 를 준수하지 않습니다. • WireGuard 암호화는 개별 ID가 있는 대신 호스트 ID를 사용하기 때문에 호스트 네트워킹(spec.hostNetwork: true)을 사용하는 Pod에는 적용되지 않습니다.

중요합니다

WireGuard 암호화는 소프트웨어 수준에서 작동하므로 대기 시간과 처리량 성능에 영향을 미칠 수 있습니다. 이 영향의 범위는 VM 크기(노드 SKU), 네트워크 구성 및 애플리케이션 트래픽 패턴을 비롯한 다양한 요인에 따라 달라집니다. 벤치마킹은 처리량이 MTU가 1500인 1.5Gbps로 제한됨을 나타냅니다. 그러나 결과는 워크로드 특성 및 클러스터 구성에 따라 달라질 수 있습니다. MTU 3900을 지원하는 SKU를 사용하면 처리량이 약 2.5배 더 높습니다. WireGuard 암호화는 네트워크 정책과 함께 사용할 수 있지만, 이렇게 하면 처리량이 감소하고 대기 시간이 늘어나면서 성능이 더 저하될 수 있습니다. 대기 시간 또는 처리량에 민감한 애플리케이션의 경우 먼저 비프로덕션 환경에서 WireGuard를 평가하는 것이 좋습니다. 언제나 그처럼 결과는 워크로드 특성 및 클러스터 구성에 따라 달라질 수 있습니다.

Pricing

중요합니다

고급 컨테이너 네트워킹 서비스는 유료 제품입니다. 가격 책정에 대한 자세한 내용은 고급 컨테이너 네트워킹 서비스 - 가격 책정을 참조하세요.

다음 단계