본문 바로가기

개발하자

노드와 포드 사이의 트래픽을 암호화하도록 Kubernetes를 구성하는 방법은 무엇입니까?

반응형

노드와 포드 사이의 트래픽을 암호화하도록 Kubernetes를 구성하는 방법은 무엇입니까?

HIPAA 규정 준수에 대비하여, 우리는 Kubernetes 클러스터를 (모든 포드 사이에서) 함대 전체에서 보안 엔드포인트를 사용하도록 전환하고 있습니다. 클러스터는 현재 HTTP 연결을 사용하는 약 8-10개의 서비스로 구성되어 있기 때문에 쿠버네티스가 이를 처리하는 것이 매우 유용할 것이다.

이를 통해 해결하고자 하는 특정 공격 벡터는 노드(물리적 서버) 간의 패킷 스니핑입니다.

이 질문은 두 부분으로 나뉩니다:

  • Kubernetes는 기본적으로 포드와 노드 사이의 트래픽을 암호화합니까?
  • 그렇지 않다면 그렇게 구성할 수 있는 방법이 있습니까?

감사합니다!




아니요, kubernetes는 기본적으로 트래픽을 암호화하지 않습니다

나는 개인적으로 시도해보지 않았지만, 에 대한 설명은 당신이 설명하고 있는 것을 지향하는 것처럼 보이며, 이미 존재한다는 추가적인 이점이 있다

나는 Calico가 네이티브 암호화를 한다고 생각했지만, 그것을 근거로 그들은 IPSEC와 같은 솔루션을 사용하여 기존 호스트와 마찬가지로 암호화할 것을 권장하는 것 같다




Kubernetes는 기본적으로 포드와 노드 사이의 트래픽을 암호화합니까?

Kubernetes는 어떤 트래픽도 암호화하지 않습니다.

http 서비스 간에 https 통신을 쉽게 도입할 수 있는 서비스가 있습니다.

각 노드에서 서비스 메시의 인스턴스를 실행하면 모든 서비스가 서비스 메시와 통신합니다. 서비스 메시 내부의 통신은 암호화됩니다.

예:

service -http -> localhost to service mesh 노드 - https -> remoteNode -http -> localhost to remote service -http -> localhost to remote service.

서비스와 동일한 포드에서 서비스 메시 노드를 실행하면 로컬 호스트 통신이 다른 포드가 액세스할 수 없는 개인 가상 네트워크 디바이스에서 실행됩니다.




사실 정답은 "그것은 의존한다"이다. 클러스터를 두 개의 개별 네트워크로 분할합니다.

  1. 제어부 네트워크

    이 네트워크는 물리적 네트워크 또는 언더레이 네트워크의 네트워크입니다.

    k8s 제어부-평면 요소 - kube-apiserver, kube-controller-manager, kube-contra, kubelet - 다양한 방식으로 서로 대화합니다. 일부 엔드포인트(예: 메트릭)를 제외하고 모든 엔드포인트에서 암호화를 구성할 수 있습니다.

    만약 당신도 테스트를 하고 있다면, 그것도 켜야 한다. 그렇지 않으면 암호화는 큐브에 대한 무단 액세스를 차단하지 않습니다. 이 엔드포인트(포트 10250)는 쉽게 납치될 수 있습니다.

  2. 클러스터 네트워크

    클러스터 네트워크는 오버레이 네트워크라고도 하는 포드에서 사용하는 네트워크입니다. 암호화는 타사 오버레이 플러그인이 구현하도록 남겨두지만, 앱이 구현해야 하는 오류가 발생합니다.

    위브 오버레이입니다. @lukas-eichler가 제안한 서비스 메시 링커드도 이를 달성할 수 있지만 다른 네트워킹 계층에서 수행할 수 있습니다.




여기에 있는 답변들은 구식인 것 같다. 2021-04-28 시점에서 적어도 다음과 같은 구성 요소가 쿠버네티스에 암호화된 네트워킹 계층을 제공할 수 있는 것으로 보인다:

  • 이스티오
  • 위브
  • 링커드
  • 섬모충
  • Calico(와이어가드 경유)

(위의 목록은 각 프로젝트 홈페이지의 협의를 통해 얻은 것입니다.)


반응형