네트워크 격리 및 보안

적용 대상: Windows Server 2022, Windows Server 2019, Windows Server 2016

네트워크 네임스페이스를 사용하여 격리

각 컨테이너 엔드포인트는 자체 네트워크 네임스페이스에 배치됩니다. 관리 호스트 가상 네트워크 어댑터 및 호스트 네트워크 스택은 기본 네트워크 네임스페이스에 있습니다. 동일한 호스트의 컨테이너 간에 네트워크 격리를 적용하기 위해 각 Windows Server 컨테이너에 대해 네트워크 네임스페이스가 만들어지고 컨테이너에 대한 네트워크 어댑터가 설치된 Hyper-V 격리에서 실행되는 컨테이너가 생성됩니다. Windows 서버 컨테이너는 호스트 가상 네트워크 어댑터를 사용하여 가상 스위치에 연결합니다. Hyper-V 격리는 가상 VM 네트워크 어댑터(유틸리티 VM에 노출되지 않음)를 사용하여 가상 스위치에 연결합니다.

Hyper-V isolation with a synthetic VM network adapter

다음 Powershell cmdlet을 실행하여 프로토콜 스택의 모든 네트워크 구획을 가져옵니다.

Get-NetCompartment

네트워크 보안

사용되는 컨테이너 및 네트워크 드라이버에 따라 포트 ACL은 Windows 방화벽과 Azure VFP(가상 필터링 플랫폼)의 조합에 의해 적용됩니다.

Windows Server 컨테이너

다음 값은 Windows 호스트의 방화벽(네트워크 네임스페이스 사용)과 VFP를 사용합니다.

  • 기본 아웃바운드: 모두 허용
  • 기본 인바운드: ALLOW ALL(TCP, UDP, ICMP, IGMP) 원치 않는 네트워크 트래픽
    • 이러한 프로토콜이 아닌 다른 모든 네트워크 트래픽 거부

참고

Windows Server 버전 1709 및 Windows 10 Fall Creators Update 이전에는 기본 인바운드 규칙이 모두 DENY였습니다. 이러한 이전 릴리스를 실행하는 사용자는 (포트 전달)을 사용하여 docker run -p 인바운드 ALLOW 규칙을 만들 수 있습니다.

Hyper-V 격리

Hyper-V 격리에서 실행되는 컨테이너에는 자체 격리된 커널이 있으므로 다음 구성으로 Windows 방화벽의 자체 인스턴스를 실행합니다.

  • Windows 방화벽(유틸리티 VM에서 실행) 및 VFP 모두에서 기본 ALLOW ALL입니다.

Hyper-V isolation with firewall

Kubernetes Pod

Kubernetes Pod에서 엔드포인트가 연결된 인프라 컨테이너가 먼저 만들어집니다. 인프라 및 작업자 컨테이너를 포함하여 동일한 Pod에 속하는 컨테이너는 공통 네트워크 네임스페이스(예: 동일한 IP 및 포트 공간)를 공유합니다.

Kubernetes pods networking

기본 포트 ACL 사용자 지정

기본 포트 ACL을 수정하려면 포트를 변경하기 전에 호스트 네트워킹 서비스 항목을 검토합니다. 다음 구성 요소 내에서 정책을 업데이트해야 합니다.

참고

투명 및 NAT 모드에서 Hyper-V 격리의 경우 현재 아래 표의 "X"에 의해 반영되는 기본 포트 ACL을 다시 구성할 수 없습니다.

네트워크 드라이버 Windows Server 컨테이너 Hyper-V 격리
투명 Windows 방화벽 X
NAT Windows 방화벽 X
L2Bridge 모두 VFP
L2Tunnel 모두 VFP
오버레이 모두 VFP