Ansichten:
Profilanwendbarkeit: Stufe 2
Deaktivieren Sie den Zugriff auf die Kubernetes-API von außerhalb des Knotennetzwerks, wenn er nicht erforderlich ist.
In einem privaten Cluster hat der Masterknoten zwei Endpunkte, einen privaten und einen öffentlichen Endpunkt. Der private Endpunkt ist die interne IP-Adresse des Masters, hinter einem internen Load Balancer im VPC Network des Masters. Die Knoten kommunizieren mit dem Master über den privaten Endpunkt.
Der öffentliche Endpunkt ermöglicht den Zugriff auf die Kubernetes-API von außerhalb des VPC Networks des Masters. Obwohl die Kubernetes-API ein autorisiertes Token erfordert, um sensible Aktionen durchzuführen, könnte eine Sicherheitslücke potenziell die Kubernetes öffentlich mit uneingeschränktem Zugriff exponieren.
Zusätzlich kann ein Angreifer möglicherweise den aktuellen Cluster und die Kubernetes-API-Version identifizieren und feststellen, ob sie anfällig für einen Angriff ist. Sofern nicht erforderlich, wird das Deaktivieren des öffentlichen Endpunkts dazu beitragen, solche Bedrohungen zu verhindern und erfordert, dass sich der Angreifer im VPC Network des Masters befindet, um einen Angriff auf die Kubernetes-API durchzuführen.
Hinweis
Hinweis
Standardmäßig ist der private Endpunkt deaktiviert.

Auswirkung

Um einen privaten Endpunkt zu aktivieren, muss der Cluster auch mit privaten Knoten, einem privaten Master-IP-Bereich und aktivierter IP-Aliasierung konfiguriert werden. Wenn das Flag --enable-private-endpoint an die gcloud CLI übergeben wird oder die externe IP-Adresse während der Clustererstellung in der Google Cloud Console nicht definiert ist, wird jeglicher Zugriff von einer öffentlichen IP-Adresse untersagt.

Prüfung

Verwendung der Google Cloud Console:
  1. Gehen Sie zu Kubernetes Engine, indem Sie die Google Cloud Console Kubernetes Engine-Seite besuchen.
  2. Wählen Sie den erforderlichen Cluster aus und stellen Sie im Detailbereich sicher, dass der 'Endpunkt' keine öffentliche IP-Adresse hat.
Verwendung der Befehlszeile:
Um den Endpunktstatus für einen bestehenden Cluster zu überprüfen, definieren Sie zunächst 3 Variablen: Clustername, Standort und Projekt, und führen Sie dann den folgenden Befehl aus:
gcloud container clusters describe $CLUSTER_NAME --location $LOCATION --
project $PROJECT_ID --format json | jq '.privateClusterConfig.enablePrivateEndpoint'
Die Ausgabe des obigen Befehls gibt { "enablePrivateEndpoint": true } zurück, wenn ein privater Endpunkt aktiviert und der öffentliche Zugriff deaktiviert ist.
Für eine zusätzliche Überprüfung kann der Endpunkt-Parameter mit dem folgenden Befehl abgefragt werden:
gcloud container clusters describe <cluster_name> --format json | jq '.endpoint'
Die Ausgabe des obigen Befehls gibt eine private IP-Adresse zurück, wenn der private Endpunkt aktiviert und der öffentliche Zugriff deaktiviert ist.

Wiederherstellung

Sobald ein Cluster erstellt wird, ohne dass nur der private Endpunkt aktiviert ist, kann es nicht behoben werden. Stattdessen muss der Cluster neu erstellt werden.
Verwendung der Google Cloud Console:
  1. Gehen Sie zu Kubernetes Engine, indem Sie die Google Cloud Console Kubernetes Engine-Seite besuchen.
  2. Klicken Sie auf CLUSTER ERSTELLEN und wählen Sie KONFIGURIEREN für den Standardmodus-Cluster.
  3. Konfigurieren Sie den Cluster wie erforderlich und klicken Sie dann im Navigationsbereich unter CLUSTER auf Netzwerk.
  4. Klicken Sie unter IPv4-Netzwerkzugriff auf die Option für das private Cluster.
  5. Deaktivieren Sie das Kontrollkästchen für die Zugriffskontrollebene mit ihrer externen IP-Adresse.
  6. Geben Sie im Textfeld für den IP-Bereich der Steuerungsebene einen IP-Bereich für die Steuerungsebene an.
  7. Konfigurieren Sie die anderen Einstellungen nach Bedarf und klicken Sie auf ERSTELLEN.
Verwendung der Befehlszeile:
Erstellen Sie einen Cluster mit einem aktivierten privaten Endpunkt und deaktiviertem öffentlichem Zugriff, indem Sie das Flag --enable-private-endpoint im Cluster-Erstellungsbefehl einschließen:
gcloud container clusters create <cluster_name> --enable-private-endpoint
Das Setzen dieser Flagge erfordert auch das Setzen von --enable-private-nodes, --enable-ip-alias und --master-ipv4-cidr=<master_cidr_range>.