Umstellung von einer privaten Dienst-Endpunkt-Zulassungsliste auf kontextbasierte Beschränkungen (CBR)

Zulässigkeitslisten für private Dienstendpunkte werden nicht mehr unterstützt; stattdessen sollten kontextbasierte Einschränkungen (CBR) verwendet werden. Wenn für Ihre Cluster derzeit Zulassungslisten für private Master-Service-Endpunkte aktiviert sind, können Sie diese Zulassungsliste nicht ändern – Sie können sie lediglich deaktivieren. Führen Sie die folgenden Schritte aus, um zur Verwendung kontextbasierter Beschränkungen (CBR) überzugehen.

Die folgenden Anweisungen behandeln den Schutz des privaten Service-Endpunkts Ihres Clusters durch die Verwendung von CBR-Regeln. Wenn Ihr Cluster sowohl einen öffentlichen als auch einen privaten Service-Endpunkt (PSE) hat, können Sie auch den öffentlichen Service-Endpunkt Ihres Clusters mit CBR schützen.

Einige Vorteile von CBR sind:

  • Sie können mehrere Cluster in einem Konto gleichzeitig anvisieren und müssen die Liste nicht für jeden einzelnen einstellen.
  • Erlauben Sie den Zugriff von bestimmten VPCs, nicht nur von IPs oder Subnetzen.
  • Legen Sie höhere Grenzwerte von bis zu 200 privaten und 500 öffentlichen IPs oder Subnetzen fest, anstatt einer maximalen Gesamtzahl von 75 mit PSE.
  • Erstellen und verwalten Sie CBR-Regeln über die Konsole, API oder CLI.
  • Beschränkung des öffentlichen Zugangs über CBR. Die Zulassen-Liste für private Dienst-Endpunkte schränkt nur den Verkehr der privaten Dienst-Endpunkte ein.

Vorbereitende Schritte

Wenn Sie bereits CBR-Regeln zum Schutz Ihrer Cluster verwenden, passen diese Anweisungen möglicherweise nicht zu Ihrem Anwendungsfall. Verwenden Sie stattdessen die CBR-Dokumentation, um zu verstehen, wie Sie Ihre bestehenden CBR-Regeln so ändern können, dass sie die Subnetze der allowlist für private Dienstendpunkte einschließen. Weitere Informationen zu CBR finden Sie unter Schutz von Clusterressourcen mit kontextbasierten Einschränkungen und den Beispielszenarien für kontextbasierte Einschränkungen.

Bevor Sie mit der Erstellung von CBR-Zonen und -Regeln beginnen, sollten Sie überprüfen, ob die Liste der zulässigen Endpunkte Ihres privaten Dienstes wie erwartet funktioniert. Nachdem Sie CBR eingerichtet haben, können Sie diese Tests erneut durchführen, um das gleiche Verhalten zu bestätigen.

1 Melden Sie sich bei Ihrem Konto an. If applicable, target the appropriate resource group. Legen Sie den Kontext für Ihren Cluster fest.. Richten Sie den Endpunkt des privaten Dienstes von einem Client-System aus, das eine private IP verwendet, die sich in einem der benutzerdefinierten Teilnetze auf Ihrer Zulassungsliste befindet.

  1. Führen Sie den folgenden Befehl aus, um zu überprüfen, ob zulässige IPs eine Verbindung zur PSE herstellen können.

    kubectl get nodes
    

1 Melden Sie sich bei Ihrem Konto an. If applicable, target the appropriate resource group. Legen Sie den Kontext für Ihren Cluster fest.. Rufen Sie den privaten Service-Endpunkt von einer zugelassenen IP-Adresse aus auf, um zu überprüfen, ob eine Verbindung hergestellt werden kann.

1 Melden Sie sich bei Ihrem Konto an. If applicable, target the appropriate resource group. Legen Sie den Kontext für Ihren Cluster fest.. Zielen Sie auf den Endpunkt des privaten Dienstes von einem Client-System aus, das eine private IP verwendet, die in Ihrer Zulassen-Liste nicht erlaubt ist.

  1. Führen Sie den vorherigen Befehl erneut aus, um zu überprüfen, ob IPs, die nicht in der Zulassen-Liste stehen, keine Verbindung zum PSE herstellen können.

Nachdem Sie sich vergewissert haben, dass Ihre Zertifikatsliste wie erwartet funktioniert, können Sie mit der Migration fortfahren.

Schritt 1: Überprüfen Sie die Details Ihrer Zulassungsliste

  1. Holen Sie sich die Details Ihrer PSE-Zulassungsliste.

    Wenn eine PSE-Zulassungsliste in Ihrem Cluster nicht aktiviert ist, schlägt der Befehl fehl und die Fehlermeldung zeigt an, dass diese Funktion deaktiviert ist. In diesem Fall sind für Ihren Cluster keine weiteren Maßnahmen erforderlich.

    ibmcloud ks cluster master private-service-endpoint allowlist get -c CLUSTER
    

    Beispielausgabe

    Subnet             Type     Status
    10.138.53.64/26    System   Active
    10.30.50.0/24      Custom   Active
    10.249.94.103/32   Custom   Active
    OK
    laptop
    
  2. Überprüfen Sie die Ausgabe und notieren Sie sich die benutzerdefinierten Teilnetze. Diese Subnetze werden später verwendet.

    • Die Systemeinträge werden automatisch migriert und können ignoriert werden. Diese Einträge stellen sicher, dass die Cluster-Arbeiter eine Verbindung zum Cluster-Apiserver herstellen können.
    • Bei den benutzerdefinierten Einträgen handelt es sich um die von Ihnen hinzugefügten Teilnetze, die eine Verbindung zum privaten Dienstendpunkt dieses Clusters herstellen dürfen. Die Subnetze " 10.30.50.0/24 und " 10.249.94.103/32 im Beispiel werden im nächsten Schritt einer CBR-Netzzone hinzugefügt.

Schritt 2: Erstellen einer Netzwerkzone

Erstellen Sie eine CBR-Netzwerkzone, die dieselben Subnetze enthält wie Ihre vorhandene benutzerdefinierte Endpunkt-Zulassungsliste für private Dienste.

Erstellen einer Netzwerkzone in der Konsole

  1. Navigieren Sie zur CBR-Konsole.

  2. Klicken Sie auf Erstellen.

  3. Geben Sie die Details für Ihre Netzwerkzone an.

    • Name: Geben Sie Ihrer Netzwerkzone einen Namen.
    • Erlaubte IP-Adressen: Geben Sie die Subnetze ein, die Sie im vorherigen Schritt gefunden haben.
  4. Klicken Sie auf Weiter, um die Details Ihrer Netzwerkzone zu überprüfen.

  5. Klicken Sie auf Erstellen, um die Erstellung Ihrer Netzwerkzone abzuschließen.

Erstellen einer Netzwerkzone mithilfe der CLI

  1. Erstellen Sie eine Netzwerkzone über die Befehlszeilenschnittstelle, indem Sie einen Befehl ähnlich einem der folgenden Beispiele ausführen.

    Die Syntax des Befehls " cbr zone-create.

    ibmcloud cbr zone-create [--name NAME] [--description DESCRIPTION] [--addresses ADDRESSES] [--excluded EXCLUDED] [--vpc VPC] [--service-ref SERVICE-REF] [--file FILE]
    

    Der Parameter " --addresses muss eine durch Kommata getrennte Liste von Subnetzen sein, die Sie im obigen Schritt in der allowlist Ihres privaten Dienst-Endpunkts gefunden haben.

    Beispielbefehl zum Erstellen einer Netzwerkzone für einen einzelnen Cluster.

    ibmcloud cbr zone-create --name private-subnets-for-cluster-XXXXXX --description "Private subnets that are allowed to access the apisever of cluster XXXXXX" --addresses 10.30.50.0/24,10.249.94.103/32
    
    CBR-Zone erstellen Beispiel 1
    Parameter Beschreibung
    --name Geben Sie Ihrer Netzwerkzone einen Namen.
    --description Geben Sie eine optionale Beschreibung der Zone an.
    --addresses Geben Sie die Subnetze ein, die Sie im vorherigen Schritt in der Zulässigkeitsliste Ihres Masterdienst-Endpunkts gefunden haben.

    Beispielbefehl zum Erstellen einer Netzwerkzone für alle Cluster in Ihrem Konto.

    ibmcloud cbr zone-create --name private-subnets-for-all-clusters --description "Private subnets that are allowed to access my clusters" --addresses 10.30.50.0/24,10.249.94.103/32
    
    CBR-Zone erstellen Beispiel 1
    Parameter Beschreibung
    --name Geben Sie Ihrer Netzwerkzone einen Namen.
    --description Geben Sie eine optionale Beschreibung der Zone an.
    --addresses Geben Sie die Subnetze ein, die Sie im vorherigen Schritt in der Zulässigkeitsliste Ihres Masterdienst-Endpunkts gefunden haben.
  2. Erstellen Sie eine CBR-Regel zum Schutz Ihres Clusters mit CBR. Diese Regel bezieht sich auf Ihren Cluster oder alle Cluster in diesem Konto und verweist auch auf die von Ihnen erstellte Netzwerkzone.

Schritt 3: Erstellen einer CBR-Regel

Erstellen Sie eine CBR-Regel, die auf die von Ihnen erstellte Netzwerkzone verweist. Sie können CBR-Regeln über die Konsole, CLI oder API erstellen.

Erstellen einer CBR-Regel in der Konsole

  1. Navigieren Sie in der CBR-Konsole zu Ihren Netzwerkzonen.

  2. Klicken Sie auf die Liste der Aktionen auf Ihrem und dann auf Bearbeiten.

  3. Fügen Sie Subnetze, VPCs oder Services zu Ihrer Netzwerkzone hinzu oder entfernen Sie sie, um zu steuern, welche Ressourcen auf einen oder mehrere Ihrer Cluster zugreifen können.

Erstellen einer CBR-Regel mithilfe der CLI

In den folgenden Anweisungen wird beschrieben, wie Sie mithilfe der Befehlszeilenschnittstelle eine Netzwerkzone erstellen.

  1. Listen Sie Ihre Netzwerkzonen auf und notieren Sie die ID der Netzwerkzone, die Sie im vorherigen Schritt erstellt haben.

    ibmcloud cbr zones
    
  2. Erstellen Sie eine CBR-Regel. Sie können eine Regel zum Schutz eines einzelnen Clusters oder aller Cluster in Ihrem Konto erstellen.

    Die Syntax des Befehls " cbr rule-create.

    ibmcloud cbr rule-create [--description DESCRIPTION] [--context-attributes CONTEXT-ATTRIBUTES] [--resource-attributes RESOURCE-ATTRIBUTES] [--region REGION] [--resource RESOURCE] [--resource-group-id RESOURCE-GROUP-ID] [--resource-type RESOURCE-TYPE] [--service-instance SERVICE-INSTANCE-GUID] [--service-name SERVICE-NAME] [--zone-id ZONE-ID] [--tags TAGS] [--enforcement-mode ENFORCEMENT-MODE] [--file FILE]
    

    Wenn Ihr Cluster über einen Endpunkt für öffentliche Dienste verfügt, müssen Sie den Parameter " --context-attributes endpointType=public angeben, damit der Datenverkehr zum Endpunkt für öffentliche Dienste zugelassen wird. Wenn Sie diese Option nicht aktivieren, wird der gesamte öffentliche Verkehr blockiert.

    Beispielbefehl, der den " CLUSTER-ID des Clusters und den " NETWORK-ZONE-ID der Netzwerkzone aus dem vorherigen Schritt verwendet, um eine CBR-Regel zum Schutz nur dieses Clusters zu erstellen.

    ibmcloud cbr rule-create --api-types crn:v1:bluemix:public:containers-kubernetes::::api-type:cluster --description "Protect private endpoint for cluster CLUSTER" --service-name containers-kubernetes --service-instance CLUSTER-ID --context-attributes endpointType=private,networkZoneId=NETWORK-ZONE-ID --context-attributes endpointType=public
    
    CBR-Regel erstellen Beispiel 1
    Parameter Beschreibung
    --api-types Der Wert " crn:v1:bluemix:public:containers-kubernetes::::api-type:cluster gibt die Master-APIs der Clusterebene an. Weitere Informationen zu den API-Typen für IBM Cloud Kubernetes Service finden Sie unter Schutz bestimmter APIs.
    --description Eine optionale Beschreibung der Regel.
    --service-name containers-kubernetes Der Wert " containers-kubernetes gibt IBM Cloud Kubernetes Service als Zieldienst für die Regel an.
    --service-instance CLUSTER-ID Geben Sie den ' CLUSTER-ID des Clusters an, den Sie schützen möchten.
    --context-attributes endpointType=private,networkZoneId=NETWORK-ZONE-ID Die Option erlaubt nur Ressourcen in der Zone " NETWORK-ZONE-ID den Zugriff auf den privaten Endpunkt des Clusters.
    --context-attributes endpointType=public Diese Option ermöglicht allen Ressourcen den Zugriff auf den öffentlichen Endpunkt des Clusters.
    networkZoneId Geben Sie den ' NETWORK-ZONE-ID der Zone an, die Sie zuvor erstellt haben.

    Beispielbefehl, der den " NETWORK-ZONE-ID der Netzwerkzone aus dem vorherigen Schritt verwendet, um eine CBR-Regel zu erstellen, die alle Cluster in diesem Konto schützt.

    ibmcloud cbr rule-create --api-types crn:v1:bluemix:public:containers-kubernetes::::api-type:cluster --description "Protect private endpoint for all clusters" --service-name containers-kubernetes --context-attributes endpointType=private,networkZoneId=NETWORK-ZONE-ID --context-attributes endpointType=public
    
    CBR-Regel erstellen Beispiel 2
    Parameter Beschreibung
    --api-types Der Wert " crn:v1:bluemix:public:containers-kubernetes::::api-type:cluster gibt die Master-APIs der Clusterebene an. Weitere Informationen zu den API-Typen für IBM Cloud Kubernetes Service finden Sie unter Schutz bestimmter APIs.
    --description Eine optionale Beschreibung der Regel.
    --service-name Der Wert " containers-kubernetes gibt IBM Cloud Kubernetes Service als Zieldienst für die Regel an.
    --context-attributes endpointType=private,networkZoneId=NETWORK-ZONE-ID Die Option erlaubt nur Ressourcen in der Zone " NETWORK-ZONE-ID den Zugriff auf den privaten Endpunkt des Clusters.
    --context-attributes endpointType=public Diese Option ermöglicht allen Ressourcen den Zugriff auf den öffentlichen Endpunkt des Clusters.
    networkZoneId Geben Sie den ' NETWORK-ZONE-ID der Zone an, die Sie zuvor erstellt haben.

Wenn Sie beim Erstellen einer Regel die Fehlermeldung " A rule with the same resource attributes already exists sehen, haben Sie bereits eine CBR-Regel zum Schutz Ihres Clusters. In diesem Fall müssen Sie Ihre bestehende Regel aktualisieren, um Ihre Netzwerkzone hinzuzufügen. Weitere Informationen finden Sie in der Dokumentation zur CBR-Regelaktualisierung.

Schritt 4: Deaktivieren des privaten Dienstes Endpunkt allowlist

Da der private Dienst-Endpunkt Ihres Clusters nun durch eine CBR-Regel geschützt ist, können Sie die Zulässigkeitsliste des privaten Dienst-Endpunkts deaktivieren.

Führen Sie den folgenden Befehl aus.

ibmcloud ks cluster master private-service-endpoint allowlist disable -c CLUSTER

Schritt 5: Testen der CBR-Regel

Überprüfen Sie nun, ob die CBR-Regel den Endpunkt des privaten Dienstes Ihres Clusters wie erwartet funktioniert. Führen Sie die gleichen Tests durch, die Sie zuvor durchgeführt haben.

  1. [{Ziel_beide}].

  2. Führen Sie den folgenden Befehl für diesen Cluster aus und verwenden Sie einen " kubeconfig, der auf den Endpunkt des privaten Dienstes abzielt.

    kubectl get nodes
    
  3. Testen Sie diesen Befehl sowohl von einem Client-System aus, das eine private IP verwendet, die sich in einem der Subnetze in der von Ihnen erstellten Netzwerkzone befindet (um zu überprüfen, ob er funktioniert), als auch von einem Client-System aus, das eine private IP verwendet, die sich in keinem der Subnetze in der Netzwerkzone befindet (um zu überprüfen, ob er fehlschlägt und eine Zeitüberschreitung verursacht).

Wenn Sie feststellen, dass das Verhalten nicht Ihren Erwartungen entspricht, prüfen Sie, ob es andere CBR-Regeln für den Dienst " containers-kubernetes gibt, die für Ihren Cluster gelten, da diese möglicherweise auch den Clusterzugriff beeinflussen.

Schritt 6: Hinzufügen oder Entfernen von Subnetzen, die auf den Cluster zugreifen können

Da Sie nun eine CBR-Regel zum Schutz Ihres Clusters verwenden, können Sie die Netzwerkzone ändern, um festzulegen, welche Subnetze auf Ihren Cluster zugreifen können.

Ändern der Netzwerkzone über die Konsole

  1. Navigieren Sie in der CBR-Konsole zu Ihrer Netzwerkzone.

  2. Wählen Sie Ihre Zone aus, klicken Sie auf die Liste der Aktionen und dann auf Bearbeiten.

  3. Fügen Sie Subnetze, VPCs oder Dienste zu Ihrer Netzwerkzone hinzu oder entfernen Sie sie, um zu steuern, welche Ressourcen auf die ausgewählten Cluster zugreifen können.

Ändern Sie Ihre Netzwerkzone über die CLI

Um Subnetze hinzuzufügen, die auf Ihren Cluster zugreifen können, können Sie den Befehl ' cbr zone-update verwenden.

ibmcloud cbr zone-update <NETWORK-ZONE-ID> --name <NETWORK-ZONE-NAME> --addresses <EXISTING-SUBNETS>,<NEW-SUBNETS>

Betrachten wir das Beispiel für die Netzwerkzone, die zuvor für alle Cluster im Konto mit den beiden Teilnetzen " 10.30.50.0/24 und " 10.249.94.103/32 erstellt wurde. Ein Beispielbefehl zum Hinzufügen eines dritten Subnetzes, " 10.10.10.0/24, würde wie folgt lauten.

ibmcloud cbr zone-update <NETWORK-ZONE-ID> --name private-subnets-for-all-clusters --description "Private subnets that are allowed to access my clusters" --addresses 10.30.50.0/24,10.249.94.103/32,10.10.10.0/24

Sie müssen alle vorhandenen Einträge in dieser Netzwerkzone sowie die Einträge, die Sie hinzufügen möchten, einbeziehen. Der Wert, den Sie für " --addresses angeben, ersetzt die aktuelle Adresse oder Subnetzliste in dieser Netzwerkzone.

Um Subnetze aus der Zone zu entfernen, können Sie denselben Befehl verwenden und die Subnetze, die Sie entfernen möchten, im Wert " --addresses weglassen. In diesem Fall sollten Sie nur die Subnetze einbeziehen, die Sie weiterhin für den Zugriff auf Ihre Cluster zulassen möchten.

Aufhebung der kontextbasierten Beschränkungen des privaten Dienstendpunkts

Eine Regel aus der Konsole löschen

  1. Navigieren Sie zu Ihren Regeln in der CBR-Konsole.

  2. Wählen Sie Ihre Regel aus, klicken Sie auf die Liste der Aktionen und dann auf Entfernen.

  3. Fügen Sie Subnetze, VPCs oder Services zu Ihrer Netzwerkzone hinzu oder entfernen Sie sie, um zu steuern, welche Ressourcen auf die ausgewählten Cluster zugreifen können.

Löschen einer Regel aus der CLI

Sie können CBR-Regeln mit dem Befehl ' ibmcloud cbr rule-delete <RULE-ID> oder ' ibmcloud cbr rule-update <RULE-ID> löschen.

Um den CBR-Schutz vollständig von einem Cluster oder allen Clustern zu entfernen, müssen Sie alle CBR-Regeln, die Ihren Cluster betreffen, entweder löschen oder deaktivieren.

Wenn Sie den Befehl " ibmcloud cbr rule-update verwenden, um eine bestehende Regel zu deaktivieren oder zu aktivieren, müssen Sie zusätzlich zum Parameter " --enforcement-mode disabled alle Attribute der aktuellen Regel angeben, da sonst die weggelassenen Attribute aus der Regel entfernt werden.

Nächste Schritte

Weitere Informationen zu CBR finden Sie unter den folgenden Links.