Antrea Kubernetes 클러스터의 포드 간 트래픽을 보호하기 위해 NSX에서 분산 방화벽 정책(보안 정책)을 생성하고 하나 이상의 Antrea Kubernetes 클러스터에 적용할 수 있습니다.

참고: 이 설명서에서는 "Antrea Kubernetes 클러스터"라는 용어를 사용하여 Antrea CNI가 있는 Kubernetes 클러스터를 나타냅니다. "Kubernetes 클러스터"라는 용어는 Antrea CNI가 있는 TKG( Tanzu Kubernetes Grid) 클러스터, Antrea CNI가 있는 OpenShift 클러스터 또는 Antrea CNI가 있는 DIY(Do It Yourself) Kubernetes 클러스터를 나타내는 일반 용어입니다.

UI는 일부 UI 필드 또는 레이블에 "Antrea 컨테이너 클러스터"라는 용어를 사용합니다. 이 설명서의 "절차" 섹션에서 해당 UI 필드 또는 레이블에 "Antrea 컨테이너 클러스터"라는 용어가 유지됩니다. 모든 자유 형식 텍스트의 경우 "Antrea Kubernetes 클러스터"라는 용어가 사용됩니다.

사전 요구 사항

  • Antrea Kubernetes 클러스터는 NSX에 등록됩니다.
  • 시스템에 분산 방화벽 보안 정책을 구성할 수 있는 권한을 부여하는 적절한 보안 라이센스를 NSX 배포에 적용합니다.

프로시저

  1. 브라우저의 https://nsx-manager-ip-address에서 NSX Manager에 로그인합니다.
  2. 보안 탭을 클릭한 다음, 정책 관리에서 분산 방화벽을 클릭합니다.
    범주별 규칙 페이지가 표시됩니다.
    참고: 브라우저에서 NSX Manager 애플리케이션을 시작할 때 NSX Manager UI가 등록된 Antrea Kubernetes 클러스터에 대한 정보를 가져옵니다. 애플리케이션 UI가 이미 열려 있으면 Antrea Kubernetes 클러스터 등록 정보를 자동으로 가져오지 않습니다. 이 동작은 현재 UI 디자인에 따라 예상되는 동작입니다. NSX Manager 애플리케이션을 연 후 첫 번째 Antrea Kubernetes 클러스터를 등록한 경우 범주별 규칙 페이지로 이동한 후 브라우저를 새로 고쳐야 합니다. 수동 새로 고침을 수행하면 이 절차의 4단계에 도달할 때 Antrea 특정 UI 요소가 UI에 표시됩니다.

    이 수동 브라우저 새로 고침은 한 번만 필요하며 새 Antrea Kubernetes 클러스터가 NSX에 등록될 때마다 매번 필요하지는 않습니다.

  3. 보안 정책을 생성할 범주를 선택합니다.
    MAC 주소를 기준으로 하는 계층 2(이더넷) 방화벽 규칙은 현재 Antrea Kubernetes 클러스터에 대해 지원되지 않습니다. NSX의 범주는 Antrea의 계층에 해당합니다. 보안 정책은 다음과 같은 내림차순으로 Antrea Kubernetes 클러스터에 적용됩니다.
    • 긴급 범주(우선순위가 가장 높음)
    • 인프라 범주
    • 환경 범주
    • 애플리케이션 범주(우선순위가 가장 낮음)

    범주 내에서 방화벽 규칙은 규칙이 설정된 순서대로 하향식으로 처리됩니다. 범주는 규칙을 구성하는 수단을 제공합니다. 예를 들어 여러 사용자 역할(개인 설정)은 서로의 정책을 재정의하거나 충돌하지 않고 보안 정책을 생성할 수 있습니다. 예를 들어 보안 관리자는 긴급 범주에서 특정 격리 또는 허용 규칙에 대한 정책을 생성할 수 있습니다. 애플리케이션 개발자는 애플리케이션 범주에서 정책을 생성하여 애플리케이션의 특정 포드 간 트래픽을 보호할 수 있습니다. 네트워크 관리자는 인프라 범주에서 정책을 생성하여 DHCP, DNS, Active Directory 등과 같은 공유 서비스에 대한 액세스 규칙을 정의할 수 있습니다.

  4. 정책 추가를 클릭하고 정책 구성 설정을 지정합니다.
    1. 정책의 고유한 이름을 입력합니다.
    2. 기본적으로 정책은 분산 방화벽에 적용됩니다. 적용 대상 옆에 있는 편집 아이콘을 클릭합니다.
      적용 대상 설정 페이지가 열립니다.
    3. Antrea 컨테이너 클러스터 옵션을 선택합니다.
    4. (필수 사항) 하나 이상의 클러스터를 선택하여 보안 정책의 적용 범위 또는 범위를 결정합니다.
      정책의 범위는 단일 Antrea Kubernetes 클러스터이거나 여러 Antrea Kubernetes 클러스터일 수 있습니다.
    5. (선택 사항) Antrea 그룹을 선택하여 정책의 범위를 제한합니다.
      정책의 적용 대상에서 Antrea 그룹을 선택하면 이 구성이 정책의 모든 규칙에 사용됩니다. 정책의 각 규칙에 대해 다른 Antrea 그룹 집합을 지정하려면 이 단계를 건너뛰고 정책에 규칙을 추가하는 동안 적용 대상을 지정합니다.
      참고: NSX는 IP 주소에서 유효한 포드 멤버를 계산할 수 없으므로 IP 주소가 있는 Antrea 그룹을 정책의 적용 대상에서 사용하면 안 됩니다.
    6. (선택 사항) 맨 오른쪽 모서리에 있는 톱니바퀴 아이콘을 클릭하여 정책의 고급 구성 설정을 지정합니다.
      Antrea Kubernetes 클러스터에 적용되는 보안 정책의 경우 TCP Strict상태 저장 설정이 흐리게 표시됩니다. 이러한 설정은 현재 지원되지 않습니다.

      잠금주석 설정만 지원됩니다. 기본적으로 정책은 잠겨 있지 않습니다. 여러 사용자가 정책을 변경하지 못하게 하려면 잠김 옵션을 켭니다.

    7. 게시를 클릭합니다.
      여러 정책을 추가한 다음, 모두 함께 게시할 수 있습니다.

      처음에는 정책 상태가 [진행 중]으로 변경되고 Antrea Kubernetes 클러스터에서 성공적으로 인식되면 상태가 [성공]으로 변경됩니다. 어떤 이유로든 정책 인식이 실패하면 실패 상태를 클릭하여 팝업 창에서 오류를 확인합니다.

  5. 정책 이름 옆의 확인란을 선택하고 규칙 추가를 클릭합니다. 규칙 이름을 입력합니다.
    기본적으로 규칙의 소스, 대상, 서비스적용 대상 열에는 임의가 표시됩니다.
    참고: 컨텍스트 프로파일은 현재 Antrea Kubernetes 클러스터에 적용되는 규칙에 대해 지원되지 않습니다.
  6. 규칙 설정을 지정합니다.
    1. 소스 또는 대상 열에서 편집 아이콘을 클릭하고 하나 이상의 Antrea 그룹을 선택합니다.
      규칙 소스 및 대상을 지정할 때는 다음 제약 조건이 적용됩니다.
      • Antrea 그룹만 선택할 수 있습니다. NSX 멤버가 있는 그룹은 규칙에서 사용할 수 없습니다. 즉, 규칙에는 Antrea 그룹과 일반, IP 주소만 유형의 그룹이 함께 포함될 수 없습니다.
      • 소스 열에서 그룹을 선택하면 대상 열은 적용되지 않습니다. 규칙의 적용 대상에서 대상을 추가할 수 있습니다.
      • 대상 열에서 그룹을 선택하면 소스 열은 적용되지 않습니다. 규칙의 적용 대상 소스를 추가할 수 있습니다.

      규칙에서 소스적용 대상을 설정하면 소스에서 적용 대상으로의 트래픽이 필터링됩니다. 규칙에서 대상적용 대상을 설정하면 적용 대상에서 대상으로의 트래픽이 필터링됩니다. Antrea 데이터 경로는 적용 대상 그룹 멤버에 대한 필터링을 수행합니다.

    2. (선택 사항) 서비스 열에서 편집 아이콘을 클릭하고 서비스를 선택합니다.
      서비스를 선택하지 않으면 임의가 사용됩니다.

      다음 제약 조건은 서비스 지정에 적용됩니다.

      • TCP 및 UDP 서비스만 지원됩니다. 다른 모든 서비스는 지원되지 않습니다.
      • 원시 포트 및 프로토콜 조합은 TCP 및 UDP 서비스 유형만 지원합니다.
      • 대상 포트만 지원됩니다. 소스 포트는 지원되지 않습니다.
    3. 적용 대상 열에서 편집 아이콘을 클릭하고 규칙을 적용할 Antrea 그룹을 선택합니다.

      그룹을 선택하지 않으면 임의가 사용됩니다.

      참고:
      • NSX는 IP 주소에서 유효한 포드 멤버를 계산할 수 없으므로 IP 주소가 있는 Antrea 그룹을 규칙의 적용 대상에서 사용하면 안 됩니다.
      • 정책 및 규칙의 적용 대상Antrea 그룹을 지정하는 경우 정책의 적용 대상에 있는 그룹이 규칙의 적용 대상에 있는 그룹보다 우선합니다.
    4. 작업 드롭다운 메뉴에서 다음 옵션 중 하나를 선택합니다.
      옵션 설명
      허용

      지정된 소스, 대상 및 프로토콜을 가진 모든 L3 트래픽이 현재 방화벽 컨텍스트를 통과하도록 허용합니다. 규칙과 일치하고 허용되는 패킷은 방화벽이 존재하지 않을 때와 동일하게 Kubernetes 클러스터를 통과합니다.

      삭제

      지정된 소스, 대상 및 프로토콜을 가진 패킷을 삭제합니다. 패킷 삭제는 소스 또는 대상에 알림을 보내지 않는 작업입니다. 패킷을 삭제하면 재시도 임계값에 도달할 때까지 연결이 재시도됩니다.

      거절

      지정된 소스, 대상 및 프로토콜을 가진 패킷을 거절합니다. 패킷 거절은 보낸 사람에게 대상에 접속할 수 없다는 메시지를 보내는 패킷 거부 방식입니다. 프로토콜이 TCP인 경우 TCP RST 메시지가 전송됩니다. UDP, ICMP 및 기타 IP 연결에 대해 관리 목적으로 금지된 코드가 포함된 ICMP 메시지가 전송됩니다. [거절] 작업의 이점 중 하나는 단 한 차례의 시도에서 연결이 설정되지 않으면 전송 애플리케이션에 알림이 보내진다는 점입니다.

    5. 전환 버튼을 클릭하여 규칙을 켜거나 끕니다.
      기본적으로 규칙은 켜져 있습니다.
    6. (선택 사항) 톱니바퀴 아이콘을 클릭하여 다른 규칙 설정을 구성합니다.
      규칙 설정 설명
      로깅 기본적으로 로깅은 꺼져 있습니다. 방화벽 로그는 Antrea 에이전트 로그에 포함됩니다. Antrea Kubernetes 클러스터에 대한 지원 번들 요청을 생성하고 클러스터에서 노드를 선택하면 지원 번들에 해당 노드에 대한 Antrea 에이전트 로그가 포함됩니다.
      방향

      대상 포드의 관점에서 트래픽 방향을 나타냅니다.

      규칙 방향은 다음과 같은 경우에 읽기 전용이며 편집할 수 없습니다.
      • 소스가 규칙에 지정된 경우 방향은 내부입니다.
      • 규칙에 대상이 지정된 경우 방향은 송신입니다.

      소스 및 대상이 임의로 설정된 경우 규칙 방향을 편집할 수 있습니다. 이 경우 기본 방향은 수신-송신입니다. 그러나 방향을 [수신] 또는 [송신]으로 변경할 수 있습니다.

      주석

      필요한 경우 규칙에 대한 참고 사항을 입력합니다.

      이러한 주석은 Antrea Kubernetes 클러스터에 전파되지 않습니다. 따라서 규칙 주석은 Antrea 클러스터 네트워크 정책 규격에 주석으로 표시되지 않습니다.

  7. 게시를 클릭하여 규칙을 Antrea Kubernetes 클러스터로 푸시합니다.
    여러 규칙을 추가한 다음, 함께 게시할 수 있습니다.
    참고: Antrea Kubernetes 클러스터에서 보안 정책이 인식되면 정책의 적용 대상을 편집할 수 없습니다. 즉, NSX에서는 보안 정책의 범위를 Antrea 컨테이너 클러스터에서 DFW 또는 그룹으로 변경할 수 없습니다.

결과

Antrea Kubernetes 클러스터에서는 다음 결과가 발생합니다.
  • Antrea 네트워크 플러그인은 Antrea Kubernetes 클러스터에 적용되는 각 분산 방화벽 정책에 해당하는 클러스터 네트워크 정책을 생성합니다.
  • 규칙에 소스가 포함된 경우 해당 수신 규칙이 Antrea 클러스터 네트워크 정책에 생성됩니다.
  • 규칙에 대상이 포함된 경우 해당 송신 규칙이 Antrea 클러스터 네트워크 정책에 생성됩니다.
  • 규칙에 임의-임의 구성이 포함된 경우 클러스터의 Antrea 컨트롤러는 임의-임의 규칙을 임의-임의의 수신 규칙과 임의-임의의 송신 규칙으로 분할합니다.
참고: Antrea 네트워크 플러그인은 kubectl 명령줄에서 Antrea 클러스터 네트워크 정책을 업데이트하거나 삭제하는 것을 방지하지 않습니다. 하지만 이 작업은 수행하지 않아야 합니다. 그 이유는 보안 정책이 NSX에서 관리되기 때문입니다. 따라서 Antrea Kubernetes 클러스터의 중앙 제어부 어댑터kubectl 명령줄에서 수행한 정책 변경 내용을 즉시 덮어씁니다. 즉, NSX는 정책의 소스입니다. kubectl 명령줄을 통해 이러한 클러스터 네트워크 정책에 대해 변경한 사항은 NSX Manager에 표시되지 않습니다.

다음에 수행할 작업

Antrea Kubernetes 클러스터에서 보안 정책이 성공적으로 인식되면 다음과 같은 선택적 작업을 수행할 수 있습니다.

  • Antrea 클러스터 네트워크 정책이 Kubernetes 클러스터에 표시되는지 확인합니다. 각 Antrea Kubernetes 클러스터에서 다음 kubectl 명령을 실행합니다.
    $ kubectl get acnp
    참고: Antrea 클러스터 네트워크 정책의 priority 매개 변수에 부동 값이 표시됩니다. 이 결과는 예상된 것입니다. NSX Manager UI에는 분산 방화벽 정책의 우선순위가 표시되지 않습니다. NSX는 내부적으로 각 정책의 우선순위에 정수 값을 할당합니다. 이 정수 값은 큰 범위 중에서 할당됩니다. 하지만 Antrea 네트워크 플러그인은 Antrea 클러스터 네트워크 정책의 우선순위에 더 작은 부동 소수점 값(절대값)을 할당합니다. 따라서 NSX 우선순위 값은 내부적으로 더 작은 부동 소수점 수로 표준화됩니다. 그러나 분산 방화벽 범주에 정책을 추가하는 순서는 Antrea 클러스터 네트워크 정책에 대해 유지됩니다.

    NSX 인벤토리에서 Antrea 클러스터 네트워크 정책의 세부 정보를 볼 수도 있습니다. NSX Manager에서 인벤토리 > 컨테이너 > 클러스터로 이동합니다. 클러스터 이름을 확장하고 클러스터 네트워크 정책 옆에 있는 숫자를 클릭하여 YAML 규격을 포함한 정책의 세부 정보를 봅니다.

  • NSX API를 사용하여 정책 통계를 봅니다.
    GET https://{nsx-mgr-ip}/api/v1/infra/domains{domain-id}/security-policies/{security-policy-name}/statistics?container_cluster_path=/infra/sites/{site-id}/enforcement-points/{enforcement-point-id}/cluster-control-planes/{cluster-name}
  • 다음과 같이 UI에서 런타임 규칙 통계를 봅니다.
    1. NSX Manager에서 보안 > 분산 방화벽으로 이동합니다.
    2. 정책 이름을 확장한 다음, 각 규칙의 오른쪽 맨 끝에 있는 그래프 아이콘을 클릭합니다.
    3. 드롭다운 메뉴에서 Kubernetes 클러스터를 선택하여 각 Kubernetes 클러스터에 대한 규칙 통계를 봅니다.

      규칙의 통계는 규칙이 적용되는 각 Kubernetes 클러스터에 대해 개별적으로 계산됩니다. 모든 Kubernetes 클러스터에 대한 통계가 집계되지 않고 UI에 표시됩니다. 규칙 통계는 1분마다 계산됩니다.