8.2. roxctl netpol 연결 맵 명령을 사용한 연결 매핑
연결 매핑은 워크로드 간 연결을 허용하는 것을 보여줍니다. 관리 네트워크 정책(ANP) 및 BANP(Baseline Admin Network Policy)를 포함하여 Kubernetes 매니페스트에 정의된 네트워크 정책을 사용합니다. 이러한 결합된 네트워크 정책을 기반으로 Kubernetes 워크로드가 통신하는 방법을 시각화하고 이해할 수 있습니다.
연결 매핑 정보를 검색하려면 roxctl netpol 연결 맵 명령에 디렉터리 경로가 필요합니다. 이 디렉터리에는 Kubernetes 네트워크 정책, ANP 및 BANP 매니페스트가 포함되어야 합니다. 명령의 출력은 분석된 Kubernetes 리소스 내의 연결을 자세히 설명합니다.
8.2.1. Kubernetes 매니페스트 디렉터리에서 연결 매핑 정보 검색 링크 복사링크가 클립보드에 복사되었습니다!
roxctl netpol connectivity map 명령을 사용하여 Kubernetes 매니페스트 디렉터리에서 연결 매핑 정보를 검색합니다.
프로세스
연결 매핑 정보를 검색하려면 다음 명령을 실행합니다.
roxctl netpol connectivity map <folder_path> [flags]1 - 1
- 폴더의 경로를 지정합니다. 이 폴더에는 분석을 위한 YAML 리소스 및 네트워크 정책을 포함하는 하위 폴더(예:
netpol-analysis-example-minimal/)를 포함할 수 있습니다. 명령은 전체 하위 폴더 트리를 검사합니다. 선택적으로 매개변수를 지정하여 명령의 동작을 수정할 수도 있습니다.
Expand 표 8.2. 출력 예 src dst Conn 0.0.0.0-255.255.255.255
default/frontend[Deployment]
TCP 8080
default/frontend[Deployment]
0.0.0.0-255.255.255.255
UDP 53
default/frontend[Deployment]
default/backend[Deployment]
TCP 9090
출력에는 허용된 연결 행이 나열된 테이블이 표시됩니다. 각 행은 다음 요소로 구성됩니다.
-
src:: 소스 끝점을 나타냅니다. -
대상 끝점
을나타냅니다.Represents the destination endpoint. -
Conn:: 허용되는 연결 특성을 나타냅니다.
끝점은 namespace/name[Kind] 형식을 따릅니다. 예: default/backend[Deployment].
Opional: 특정 연결을 허용하거나 거부하는 정책 및 규칙을 확인하려면 roxctl netpol 연결 맵 명령과 함께 --explain 옵션을 사용할 수 있습니다. 출력을 사용하여 네트워크 정책 구성을 디버깅할 수 있습니다. 설명 출력을 이해하는 방법에 대한 자세한 내용은 "설명 제거"를 참조하십시오.
8.2.2. 설명 검색 링크 복사링크가 클립보드에 복사되었습니다!
설명을 검색하여 Kubernetes 네트워크 정책 규칙에 따라 연결이 허용되거나 거부되는 이유를 이해할 수 있습니다.
프로세스
설명으로 연결 보고서를 생성하려면 다음 명령을 실행합니다.
$ roxctl netpol connectivity map --explain <folder_path>1 - 1
- 폴더 경로를 지정합니다. 여기에는 YAML 리소스 및 분석을 위한 네트워크 정책이 포함된 하위 폴더가 포함될 수 있습니다.
--explain 플래그를 사용하는 경우 연결 보고서에는 허용되거나 차단된 각 연결과 관련된 특정 정책 및 규칙을 자세히 설명하는 설명 섹션 이 포함되어 있습니다.
8.2.2.1. 연결 설명 이해 링크 복사링크가 클립보드에 복사되었습니다!
연결을 허용하거나 거부하는 Kubernetes 네트워크 정책 YAML 파일의 일부를 정확하게 이해하려면 설명 모드를 포함하는 roxctl netpol 연결 맵 명령을 사용할 수 있습니다. 표준 연결 보고서 이외의 추가 세부 정보를 제공하는 설명 모드를 사용하여 네트워크 정책을 디버깅하고 구체화할 수 있습니다.
개발자 또는 DevOps 전문가로서 열려 있는 연결이 거부되거나 연결을 허용하는 특정 규칙을 확인해야 하는 상황이 발생할 수 있습니다.
다음은 몇 가지 일반적인 문제의 예입니다.
- 연결의 한 쪽에서 트래픽을 허용하지만 다른 하나는 이를 거부하는 불일치된 수신 및 송신 규칙입니다.
- 정책이 의도한 것과 다른 포트 또는 프로토콜을 열도록 하는 오타 오류입니다.
설명 가능 모드는 연결 각 측면이 정책 규칙의 영향을 받는 방법에 대한 통찰력을 제공합니다. 설명 모드를 사용하여 구성 오류를 신속하게 식별할 수 있습니다.
8.2.2.1.1. 허용된 연결 예 링크 복사링크가 클립보드에 복사되었습니다!
다음 구성 요소가 있는 Kubernetes 클러스터가 있다고 가정합니다.
-
다양한 애플리케이션에서 데이터를 수집하는
monitoring- service라는 모니터링 서비스입니다. -
핵심 내부 애플리케이션: 모니터링 끝점을 적극적으로 노출하고 모니터링이 필요한
internal-app-a입니다. -
monitor
-service에서에서 네임스페이스로 연결을internal-app-a로의 연결을 명시적으로 허용하는 라벨security: internal및 특정 네트워크 정책(NP)을 사용하여 모니터링전달하는네트워크 정책 구성(ANP)입니다.
이 예제의 YAML 매니페스트는 netpol-analyzer/tests/anp_banp_explain_demo/ 에서 확인할 수 있습니다.
네트워크 정책을 분석하고 각 연결에 대한 설명을 제공하려면 이 설정에서 roxctl netpol 연결 맵 --explain 명령을 실행할 수 있습니다.
이러한 구성에 대한 monitoring-service 배포에서 허용된 연결에 대한 설명 출력은 다음과 같습니다.
Connections between monitoring/monitoring-service[Pod] => internal-apps/internal-app-a[Pod]:
Allowed connections:
Allowed TCP, UDP, SCTP due to the following policies and rules:
Egress (Allowed) due to the system default (Allow all)
Ingress (Allowed)
AdminNetworkPolicy 'pass-monitoring' passes connections by Ingress rule pass-ingress-from-monitoring
NetworkPolicy 'internal-apps/allow-monitoring' allows connections by Ingress rule #1
이 예에서 monitoring/monitoring-service 에서 internal-apps/internal-app-a 로 부터의 연결은 ANP pass-monitoring 의 조합으로 허용되며, 이는 라벨 security: internal 및 internal-app -monitoring 를 사용하여 모든 네임스페이스에 광범위하게 적용됩니다. internal-app-a. 출력에서 여러 정책이 연결을 허용하는 데 기여할 수 있음을 보여줍니다.
8.2.2.1.2. 차단된 연결 예 링크 복사링크가 클립보드에 복사되었습니다!
보안상의 이유로 기본적으로 모든 외부 액세스를 거부하는 격리된 데이터 서비스 isolated-data-service 를 고려하십시오.
이 예제의 YAML 매니페스트는 netpol-analyzer/tests/anp_banp_explain_demo_2/ 에서 확인할 수 있습니다.
네트워크 정책을 분석하고 각 연결에 대한 설명을 제공하려면 이 설정에서 roxctl netpol 연결 맵 --explain 명령을 실행할 수 있습니다.
monitoring-service 배포에서 이 워크로드에 대한 차단된 연결에 대한 설명 출력은 다음과 같습니다.
Connections between monitoring/monitoring-service[Pod] => isolated-apps/isolated-data-service[Pod]:
Denied connections:
Denied TCP, UDP, SCTP due to the following policies and rules:
Egress (Allowed) due to the system default (Allow all)
Ingress (Denied)
AdminNetworkPolicy 'pass-monitoring' passes connections by Ingress rule pass-ingress-from-monitoring
BaselineAdminNetworkPolicy 'default' denies connections by Ingress rule deny-ingress-from-monitoring
이 예에서 data/isolated-data-service 에 대한 연결은 ANP with Pass action과 함께 차단되고, 기본적으로 모니터링 에서 모든 연결을 거부하는 BANP의 연결이 차단됩니다.
8.2.3. 연결 맵 출력 형식 및 시각화 링크 복사링크가 클립보드에 복사되었습니다!
txt,md,csv,json 및 dot 을 포함한 다양한 출력 형식을 사용할 수 있습니다. dot 형식은 출력을 연결 그래프로 시각화하는 데 이상적입니다. Graphviz 툴과 같은 그래프 시각화 소프트웨어 및 VSCode 확장을 사용하여 볼 수 있습니다. 로컬 또는 온라인 뷰어를 통해 Graphviz를 사용하여 svg,jpeg 또는 png 과 같은 형식으로 도트 출력을 변환할 수 있습니다.
8.2.4. Graphviz를 사용하여 dot 출력에서 svg 그래프 생성 링크 복사링크가 클립보드에 복사되었습니다!
다음 단계에 따라 dot 출력에서 svg 형식으로 그래프를 생성합니다.
사전 요구 사항
- Graphviz 가 로컬 시스템에 설치되어 있습니다.
프로세스
다음 명령을 실행하여
svg형식으로 그래프를 생성합니다.$ dot -Tsvg connlist_output.dot > connlist_output_graph.svg다음은 Graphviz에서 생성된 점 출력 및 결과 그래프의 예입니다.