Sollte ein Administrator HTTPS innerhalb des Kubernetes-Netzwerks erzwingen oder nur für externen Datenverkehr (über Ingress)?

Sollte ein Administrator HTTPS innerhalb des Kubernetes-Netzwerks erzwingen oder nur für externen Datenverkehr (über Ingress)?

In einem Microservices-Szenario sollte sich jeder Web-API-Container selbst über HTTPS bedienen, oder ist es ok, intern über HTTP zu arbeiten und alle Eingänge mit Zertifikaten zu konfigurieren und auf Port 80 der Container umzuleiten?

Ich denke, der einfachste Ansatz besteht darin, nur den externen Datenverkehr zu schützen, denn um eine Asp.Net Core WebAPI so zu konfigurieren, dass sie sich selbst (Kestrel) über HTTPS bedient (zum Beispiel), müssen Sie das Zertifikat in einem Volume mounten und das Zertifikatskennwort angeben. Das ist ein bisschen kompliziert.

Was ist die beste Vorgehensweise?

Antwort1

Dies hängt von den Anforderungen und Ressourcen ab, ob Sie On-Prem oder Baremetal usw. haben.

Keine Anforderungen zur Sicherung des Datenverkehrs

Wenn keine Anforderungen hinsichtlich der Sicherung des Client-Datenverkehrs innerhalb des Clusters bestehen, können Sie die Client- SSLVerbindung beenden ingress-controllerund HTTPzwischen den Pods verwenden.

Sichere Anforderungen

Wenn der Client-Verkehr zum Ziel-Pod gesichert werden muss, kann dies auf zwei Arten erreicht werden.

  • L3 LoadBalancermitKnotenPort, konfiguriert mitSSL-PassthroughAn Ingress.
  • Wenn der Verkehr die Verwendung erfordert SSL, aber nicht SSLdirekt an den angegebenen Empfänger geliefert werden muss Pod, wäre es einfacher, dies durch die Konfiguration von zu implementierenIstioMesh mit mTLS. Mit dieser Option können Sie den Datenverkehr über HTTP-Header weiterleiten und müssen die Zertifikate nicht manuell verwalten. Bitte überprüfen SieDasfür mehr Informationen.

Da Best Practices immer darauf abzielen, so sicher wie möglich zu sein, wird immer empfohlen, eine sichere Verbindung zu verwenden. Trotzdem ist dies in einigen Szenarien einfach nicht erforderlich.

Antwort2

Wenn Ihr Cluster in der Cloud läuft und einenexterner Cloud Balancer, Ihr Ingress und Ihre Pods könnten sich auf unterschiedlichen Maschinen oder in unterschiedlichen Rechenzentren befinden. In diesem Fall sollten Sie TLS tatsächlich vom Ingress bis zu den Pods erzwingen.

In jedem Fall sollten sich der Load Balancer und Ihr Cluster im selben (hoffentlich eingeschränkten) VPC befinden.

Antwort3

Es hängt auch von den Angriffsvektoren ab, vor denen Sie sich schützen.

Wenn Sie befürchten, dass jemand den Datenverkehr zwischen Ihren Kubernetes-Knoten abhören könnte, können Sie die Verwendung eines Netzwerk-Plugins (CNI) in Betracht ziehen, das Verschlüsselung unterstützt, wie z. B. WeaveNet, oder Sie können alle Ihre Knoten mit Wireguard oder OpenVPN in einem VPN-Netzwerk platzieren.

Wenn Sie die Dienste im Cluster voreinander schützen möchten, sollten Sie etwas wie Istio in Betracht ziehen, das den Datenverkehr zwischen den Pods verschlüsselt.

verwandte Informationen