Verwalten des Schutzes ausgehenden Datenverkehrs in VPC-Clustern
Virtual Private Cloud4.15 und höher
Überprüfen Sie die folgenden Optionen zum Verwalten des Schutzes ausgehenden Datenverkehrs in Red Hat OpenShift on IBM Cloud-Clustern. Sie können den gesamten ausgehenden Zugriff zulassen oder selektiv ausgehenden Datenverkehr zu den Komponenten zulassen, die Ihre Apps benötigen.
In vielen der folgenden Szenarien haben Sie die Möglichkeit, Ihrer Sicherheitsgruppe kube-<clusterID> benutzerdefinierte Regeln hinzuzufügen, um ausgehenden Datenverkehr zu bestimmten Ressourcen zuzulassen. Beachten Sie, dass
Regeln, die Sie zur Sicherheitsgruppe kube-<clusterID> hinzufügen, entfernt werden, wenn Sie später ibmcloud oc security-group reset ausführen. Durch das Zurücksetzen Ihrer Sicherheitsgruppen werden die Standardregeln
wiederhergestellt und alle von Ihnen hinzugefügten Regeln entfernt.
Deaktivieren des Schutzes für ausgehenden Datenverkehr
Virtual Private Cloud4.15 und höher
Überprüfen Sie die folgenden Optionen zum Deaktivieren des Schutzes ausgehenden Datenverkehrs für neue Cluster.
Sie können den Schutz für ausgehenden Datenverkehr mit den Befehlen outbound traffic protection enable und disable ein- und ausschalten. Möglicherweise möchten Sie zwischen den beiden Konfigurationen wechseln, wenn
Sie nicht mehr den gesamten ausgehenden Datenverkehr zulassen möchten.
Option 1: Deaktivieren des Schutzes für ausgehenden Datenverkehr beim Erstellen eines Clusters
Diese Option erlaubt alle ausgehenden Netzwerkverbindungen.
- Wählen Sie in der Konsole die Option Ausgehenden Datenverkehr zulassen aus.
- Wenn Sie in der CLI einen Cluster mit dem Befehl
cluster create vpc-gen2erstellen, geben Sie die Option--disable-outbound-traffic-protectionan. - Geben Sie in Terraform die Option
disable_outbound_traffic_protection = true. - Geben Sie in der API die Option
disableOutboundTrafficProtection=true.
Option 2: Ausgehenden Datenverkehr über eine benutzerdefinierte Sicherheitsgruppe zulassen
Erstellen Sie vor dem Erstellen Ihres Clusters eine benutzerdefinierte Sicherheitsgruppe in Ihrem VPC, die den Zugriff auf die externe Site oder den externen Dienst ermöglicht, auf den Ihr Cluster zugreifen muss. Fügen Sie diese Sicherheitsgruppe dann während der Clustererstellung Ihrem Cluster hinzu.
- Geben Sie in der Konsole Ihre benutzerdefinierte Sicherheitsgruppe an.
- Wenn Sie in der CLI einen Cluster mit dem Befehl
cluster create vpc-gen2erstellen, geben Sie die Option--cluster-security-group <security-group-ID>an und schließen Sie Ihre benutzerdefinierte Sicherheitsgruppen-ID ein. - Geben Sie in Terraform die Option
security_groupsan und schließen Sie Ihre benutzerdefinierte Gruppe ein.
Deaktivieren des Schutzes ausgehenden Datenverkehrs für vorhandene Cluster
Virtual Private Cloud4.15 und höher
Überprüfen Sie Ihre Optionen zum Deaktivieren des Schutzes ausgehenden Datenverkehrs, nachdem Sie einen Cluster bereitgestellt haben.
Option 1: Deaktivieren des Schutzes für ausgehenden Datenverkehr über die CLI
Diese Option erlaubt alle externen Netzwerkverbindungen.
ibmcloud oc vpc outbound-traffic-protection disable --cluster CLUSTER
Option 2: Hinzufügen einer Sicherheitsgruppenregel zur Standardsicherheitsgruppe der Cluster-Worker
Sie können der Cluster-Worker-Sicherheitsgruppe ( kube-<clusterID> ) eine Sicherheitsgruppenregel hinzufügen, die den Zugriff auf die bestimmte externe Site ermöglicht. Wiederholen Sie diesen Schritt für jede Site oder jedes
Subnetz, auf das Ihr Cluster zugreifen muss. Weitere Informationen finden Sie in Beispielszenarien für die selektive Zulassung ausgehenden Datenverkehrs.
ibmcloud is sg-rulec kube-CLUSTERID outbound icmp_tcp_udp --remote IP-ADDRESS-OR-SUBNET
Aktivieren des Schutzes ausgehenden Datenverkehrs für vorhandene Cluster
Virtual Private Cloud4.15 und höher
Um den Ausgangsschutz für Ihre vorhandenen 4.15 Cluster zu aktivieren, führen Sie den folgenden Befehl aus. Beachten Sie, dass durch die Aktivierung des Schutzes für ausgehenden Datenverkehr der gesamte ausgehende Datenverkehr blockiert wird.
ibmcloud oc vpc outbound-traffic-protection enable --cluster CLUSTER
Beispielszenarien für die selektive Zulassung ausgehenden Datenverkehrs
In den folgenden Abschnitten finden Sie Anweisungen zum Zulassen von ausgehendem Datenverkehr zu allgemeinen Ressourcen und Komponenten, etwa externen Container-Registrierungen wie quay.io, dem Red Hat Marketplace und OperatorHub.
Beachten Sie, dass Ihre Änderungen entfernt werden, wenn Sie durch die Erstellung benutzerdefinierter Sicherheitsgruppenregeln ausgehenden Datenverkehr selektiv zulassen und Sie Ihre Sicherheitsgruppe durch Ausführen des Befehls ibmcloud oc security-group reset auf die Standardeinstellungen zurücksetzen.
Zugriff auf Images aus externen Container-Registries wie DockerHub oder quay.io
Um auf Images aus Registern wie DockerHub oder quay.io oder registry.redhat.com zuzugreifen, wählen Sie eine der folgenden Optionen.
- Deaktivieren Sie den Schutz für ausgehenden Datenverkehr.
ibmcloud oc vpc outbound-traffic-protection disable --cluster CLUSTER - Spiegeln Sie die Bilder, die Ihre App benötigt, auf
icr.io. Ziehen, taggen und pushen Sie diese Bilder nach IBM Cloud Container Registry. Weitere Informationen finden Sie unter Übertragen von Bildern in IBM Cloud Container Registry.
Ausgehenden Datenverkehr zu Red Hat Marketplace und OperatorHub zulassen
Die folgenden Schritte aktivieren den gesamten ausgehenden Datenverkehr. Wenn Sie diese Funktion nicht aktivieren möchten, können Sie Spiegeln Sie die Bilder unter Red Hat Marketplace und OperatorHub, die Ihre App benötigt auf Ihre eigene Adresse icr.io umleiten.
-
Deaktivieren Sie den Schutz für ausgehenden Datenverkehr.
ibmcloud oc vpc outbound-traffic-protection disable --cluster CLUSTER -
Patchen Sie OperatorHub auf Ihrem Cluster, um den Start der Pods zu ermöglichen.
oc patch OperatorHub cluster --type json -p '[{"op": "remove", "path": "/spec/disableAllDefaultSources"}]'
Um diese Änderungen später rückgängig zu machen und OperatorHub, führen Sie die folgenden Schritte aus.
-
Aktivieren Sie den Schutz für ausgehenden Datenverkehr.
ibmcloud oc vpc outbound-traffic-protection enable --cluster CLUSTER -
Patchen Sie OperatorHub auf Ihrem Cluster, um die Pods zu deaktivieren
oc patch OperatorHub cluster --type json -p '[{"op": "add", "path": "/spec/disableAllDefaultSources", "value": true}]'
Ausgehenden Datenverkehr zu Image Streams zulassen
Um auf Bild-Streams aus Ihrem Cluster zuzugreifen, wählen Sie aus den folgenden Optionen.
-
Spiegeln Sie die benötigten Bilder in das Register
icr.io. Weitere Informationen finden Sie unter Übertragen von Bildern in IBM Cloud Container Registry. -
Deaktivieren Sie den Schutz für ausgehenden Datenverkehr.
ibmcloud oc vpc outbound-traffic-protection disable --cluster CLUSTER -
Fügen Sie der Sicherheitsgruppe
kube-<clusterID>eine Sicherheitsgruppenregel für die IP-Adressen des Bilddatenstroms hinzu, den Sie verwenden möchten. Beachten Sie, dass sich die IP-Adressen für Bildstreams ändern können.ibmcloud is sg-rulec kube-vpegw-<clusterID> inbound tcp --port-min PORT --port-max PORT --remote IP-OR-CIDR
Ausgehenden Datenverkehr für die Remote-Integritätsüberwachung mit Telemetrie zulassen
Um eine Remote-Integritätsüberwachung zu ermöglichen, müssen Sie den Schutz für ausgehenden Datenverkehr durch Ausführen des folgenden Befehls deaktivieren.
ibmcloud oc vpc outbound-traffic-protection disable --cluster CLUSTER
Zugriff auf 4.15 Cluster und die Webkonsole über die VPE
Sie können Kubernetes so konfigurieren, dass der Clusterzugriff über das private VPE-Gateway möglich ist. Diese Option ist sowohl für rein private als auch für öffentliche und private VPC-Cluster verfügbar. Da der Zugriff über den privaten Endpunkt erfolgt, muss der Kunde für den Zugriff auf den Cluster ein VPN vom Client zu seinem VPC einrichten.
Ab 4.15 Clustern ist eine zusätzliche Sicherheitsgruppenregel erforderlich, damit der VPE-Zugriff funktioniert. Die zusätzliche Sicherheitsgruppenregel wird sowohl für rein private Cluster als auch für Cluster mit öffentlichen und privaten Endpunkten benötigt.
-
Listen Sie Ihre VPN-Server auf.
ibmcloud is vpn-servers -
Holen Sie sich die Details Ihres VPN-Servers.
ibmcloud is vpn-server SERVER -
Holen Sie sich den Client-IP-Pool Ihres VPN-Servers.
ibmcloud is vpn-server | grep "Client IP pool" -
Holen Sie sich die Details Ihres Clusters und notieren Sie sich den VPE-Port.
ibmcloud ks cluster get --cluster CLUSTERID -
Starten Sie Ihr VPN auf dem Client.
-
Greifen Sie über VPE auf Ihren Cluster zu.
ibmcloud ks cluster config --admin --cluster CLUSTERID --endpoint vpe -
Pods auflisten. Beachten Sie, dass dieser Befehl fehlschlägt, da der Client nicht über das VPN über das VPE-Gateway auf den Cluster zugreifen kann.
kubectl get pods -A -
Fügen Sie dem
kube-vpegw-<clusterID>für Ihr VPN eine Sicherheitsgruppenregel hinzu. Der Remotezugriff erfolgt in diesem Fall über die CIDR der VPN-Client-IP.ibmcloud is sg-rulec kube-vpegw-<clusterID> inbound tcp --port-min PORT --port-max PORT --remote IP-OR-CIDRBeispielbefehl.
ibmcloud is sg-rulec kube-vpegw-<clusterID> inbound tcp --port-min 30829 --port-max 30829 --remote 192.168.192.0/22 -
Pods auflisten.
kubectl get pods -A
Ausgehenden Datenverkehr für Webhooks zulassen
Wenn Sie Webhooks verwenden, die einen URL oder einen Dienst außerhalb des Clusters kontaktieren, müssen Sie Sicherheitsgruppenregeln hinzufügen, die den ausgehenden Datenverkehr von Ihren Cluster-Arbeitern zum URL oder externen Dienst zulassen. Alternativ können Sie den Schutz für ausgehenden Datenverkehr vollständig deaktivieren.
Normalerweise erfordern Zulassungs-Webhooks, die Cluster-Dienstreferenzen verwenden, keine Änderungen.
Im folgenden Beispiel erfordert ein Zulassungs-Webhook, der eine Verbindung zu einem Clusterdienst herstellt, normalerweise keine Änderungen, da der Master über die standardmäßig zulässige Konnectivity-Verbindung eine Verbindung zum Dienst herstellt. Eine Ausnahme wäre, wenn die Pods, die diesen Clusterdienst implementieren, eine Verbindung zu einem URL oder einem externen Dienst herstellen müssen. Wenn ja, dann erlauben Sie diesen Pods den Zugriff auf den URL oder den externen Dienst, wie in diesem Beispiel gezeigt.
apiVersion: admissionregistration.k8s.io/v1
kind: ValidatingWebhookConfiguration
metadata:
name: my-cluster-service.webhook.io
webhooks:
- admissionReviewVersions:
- v1
clientConfig:
caBundle: ABCDEFG...
service:
name: my-admission-webhook
namespace: default
path: /validate
port: 443
...
Wenn Ihre Zulassungs-Webhooks jedoch eine URL verwenden, sind zusätzliche Sicherheitsgruppenregeln erforderlich.
Beispiel für einen Webhook, der sich mit einer URL verbindet.
apiVersion: admissionregistration.k8s.io/v1
kind: ValidatingWebhookConfiguration
metadata:
name: my-url.webhook.io
webhooks:
- admissionReviewVersions:
- v1
clientConfig:
caBundle: ABCDEFG...
url: https://webhook.ibm.com:20001/validate
...
Um den Zugriff auf den externen URL oder Dienst für Ihren Webhook zu ermöglichen, können Sie eine der folgenden Optionen wählen
-
Deaktivieren Sie den Schutz für ausgehenden Datenverkehr, indem Sie den folgenden Befehl ausführen.
ibmcloud oc vpc outbound-traffic-protection disable --cluster CLUSTER -
Fügen Sie der Sicherheitsgruppe
kube-<clusterID>ausgehende Sicherheitsgruppenregeln hinzu, um den Cluster-Workern die Verbindung zu ermöglichen. Im vorherigen Beispiel wird der Dienstwebhook.ibm.comauf Port20001verwendet.- Suchen Sie die IPs für den Zugriff auf URL mit Hilfe von
dig.
dig +short URL ``` Beispielbefehl. ```sh {: pre} dig +short webhook.ibm.com ``` Beispielausgabe ```sh {: screen} 1.2.3.4 4.5.6.7 ``` 1. Erstellen Sie für jede zurückgegebene IP-Adresse eine Regel. ```sh {: pre} ibmcloud is sg-rulec kube-<clusterID> outbound icmp_tcp_udp --remote <IP-address-or-subnet> ``` Beispielbefehle. ```sh {: pre} ibmcloud is sg-rulec kube-CLUSTERID outbound tcp --port-min 20001 --port-max 20001 --remote 1.2.3.4 ibmcloud is sg-rulec kube-CLUSTERID outbound tcp --port-min 20001 --port-max 20001 --remote 4.5.6.7 ``` - Suchen Sie die IPs für den Zugriff auf URL mit Hilfe von
Weitere Informationen finden Sie unter „Dynamische Zugangssteuerung“
Zulassen von ausgehendem Datenverkehr zu einem öffentlichen Dienst
Wenn der oder die externen Dienste, die von Ihrer Anwendung aufgerufen werden, über eine kleine Anzahl von IPs/CIDRs verfügen, die zum Hosten dieses Dienstes verwendet werden und sich nicht sehr oft ändern, können Sie in Ihrer Sicherheitsgruppe
kube-clusterID selektiv ausgehenden Zugriff auf diese IPs oder CIDRs zulassen.
Das folgende Beispiel verwendet die APIs github.com bei api.github.com.
-
Suchen Sie die IPs programmgesteuert mit
curl.curl -sS -H "Accept: application/vnd.github+json" https://api.github.com/meta | jq '.api' -
Fügen Sie jeden der CIDRs, die Sie im vorherigen Schritt gefunden haben, als Ziel einer ausgehenden Sicherheitsgruppenregel für die Sicherheitsgruppe
kube-clusterIDhinzu. Alternativ können Sie eine benutzerdefinierte Sicherheitsgruppe erstellen, die Sie Ihren Cluster-Workern beim Erstellen des Clusters hinzufügen.ibmcloud is sg-rulec kube-<clusterID> outbound icmp_tcp_udp --remote <IP-address-or-subnet>
Weitere Informationen finden Sie unter Informationen zu den IP-Adressen GitHub's.
Überlegungen zu Hub-and-Spoke-VPCs mit Schutz für ausgehenden Datenverkehr
In einem Hub-and-Spoke-Modell wird nur der Hub-VPC-Cluster zur DNS-Auflösung verwendet. Die Spoke-Cluster greifen über den Hub auf DNS zu. Hub-and-Spoke-Cluster befinden sich meistens in verschiedenen VPCs, die über Transit Gateway verbunden sind.
In Clustern der Version 4.15 und höher funktioniert das Hub-and-Spoke-Modell nicht ohne Anpassungen der jeweiligen Sicherheitsgruppen. Diese Anpassungen ermöglichen Datenverkehr zwischen den Hub- und Spoke-VPCs.
-
Aktualisieren Sie die Cluster im Spoke-VPC, sodass sie auf das Hub-VPC zugreifen können, indem Sie der Sicherheitsgruppe
kube-<clusterID>für jeden Spoke-Cluster Regeln hinzufügen. Stellen Sie sicher, dass Sie jedem VPC-Subnetz-CIDR, in dem die Hub-Cluster-Worker bereitgestellt werden, eine Ausgangsregel hinzufügen. Wenn beispielsweise ein Spoke mit einem einzelnen Hub verbunden ist und dieser Hub über Worker in drei Zonen verfügt, müssen der Sicherheitsgruppekube-<clusterID>des Spokes drei Regeln hinzugefügt werden, eine für jedes Subnetz.ibmcloud is sg-rulec kube-<spoke-clusterID> outbound icmp_tcp_udp --remote <hub-subnet-CIDR> -
Aktualisieren Sie die Hub-Cluster, um Datenverkehr von den Spokes zuzulassen, indem Sie Regeln zur gemeinsam genutzten VPE-Gateway-Sicherheitsgruppe des Hubs (
kube-vpegw-vpcID) hinzufügen. Wenn Sie alternativ Ihre eigenen benutzerdefinierten Sicherheitsgruppen für die gemeinsam genutzten VPE-Gateways verwenden, fügen Sie stattdessen Regeln zu diesen benutzerdefinierten Sicherheitsgruppen hinzu. -
Führen Sie den folgenden Befehl aus, um die VPE-Gateways zu finden, und sehen Sie sich dann die Details des Gateways an, um die zugehörige Sicherheitsgruppe zu finden. Notieren Sie sich die Sicherheitsgruppen-ID, um ihr im nächsten Schritt Regeln hinzuzufügen.
ibmcloud is egs -
Fügen Sie eine eingehende Regel von jedem VPC-Subnetz hinzu, in dem die Spoke-Worker bereitgestellt werden. Wenn beispielsweise Spokes in drei verschiedenen Zonen, aber in jeder dieser Zonen in einem einzigen Subnetz bereitgestellt werden, werden den gemeinsam genutzten VPE Gateway-Sicherheitsgruppen des Hubs drei Regeln hinzugefügt.
ibmcloud is sg-rulec kube-vpegw-<hub-vpcID> inbound icmp_tcp_udp --remote <spoke-subnet-CIDR>
Temporären Datenverkehr zum Cluster-API-Server über das öffentliche Netzwerk zulassen
VPC-Cluster-Worker verwenden das private Netzwerk, um mit dem Cluster-Master zu kommunizieren. Bisher konnten die Cluster-Worker bei VPC-Clustern, bei denen der öffentliche Service-Endpunkt aktiviert war, auf das öffentliche Netzwerk zurückgreifen, um mit dem Cluster-Master zu kommunizieren, wenn das private Netzwerk blockiert oder nicht verfügbar war.
In Clustern ab Version 4.15 ist ein Fallback auf das öffentliche Netzwerk keine Option, da der öffentliche ausgehende Datenverkehr der Cluster-Worker blockiert ist. Möglicherweise möchten Sie den Schutz für ausgehenden Datenverkehr deaktivieren,
um diese öffentliche Netzwerksicherungsoption zu ermöglichen. Es gibt jedoch eine bessere Alternative. Wenn stattdessen ein vorübergehendes Problem mit der Worker-zu-Master-Verbindung über das private Netzwerk besteht, können Sie zu diesem
Zeitpunkt eine temporäre Sicherheitsgruppenregel zur Sicherheitsgruppe kube-clusterID hinzufügen, um ausgehenden Datenverkehr zum Cluster-Master-Port apiserver zuzulassen. Später, wenn das Problem behoben ist, können
Sie die temporäre Regel entfernen.
Sie können eine der folgenden Optionen wählen, um den Datenverkehr über das öffentliche Netz zuzulassen, wenn das private Netz ausgefallen ist.
-
Fügen Sie der Sicherheitsgruppe
kube-clusterIDeine Sicherheitsgruppenregel hinzu, um Datenverkehr zum API-Server zuzulassen.- Holen Sie sich Ihre Clusterdetails und notieren Sie sich den API-Server-Port.
ic ks cluster get --cluster <clusterID> ``` Beispielausgabe, bei der der API-Server-Port `30685` ist. ```sh {: screen} Name: prestg-sbd-vpc-4.15 ID: coekl4a107ovqfndhh60 ... Public Service Endpoint URL: https://c100-e.containers.cloud.ibm.com:30685 Private Service Endpoint URL: https://c100.private.containers.cloud.ibm.com:30685 ... ``` 1. Fügen Sie eine ausgehende Sicherheitsgruppenregel von Ihrem `kube-<clusterID>` zu `0.0.0.0/0` hinzu, um den gesamten öffentlichen Netzwerkzugriff zuzulassen. ```sh {: pre} ibmcloud is sg-rulec kube-<clusterID> outbound tcp --port-min <API port> --port-max <API port> --remote 0.0.0.0/0 ``` Beispielbefehl mit einem API-Server-Port von `30685`. ```sh {: pre} ibmcloud is sg-rulec kube-<clusterID> outbound tcp --port-min 30685 --port-max 30685 --remote 0.0.0.0/0 ``` -
Deaktivieren Sie den Schutz für ausgehenden Datenverkehr.
ibmcloud oc vpc outbound-traffic-protection disable --cluster CLUSTER
Überprüfung der Sysdig-Integration auf rein privaten RHCOS-Clustern
Wenn sich sysdig-agent Pods in CrashLoopBackOff auf einem privaten Cluster befinden, der RHCOS-Worker verwendet, können Sie entweder den Schutz des ausgehenden Datenverkehrs deaktivieren oder den Sysdig-Agenten aktualisieren,
um den Treiber eBPF zu verwenden. Weitere Informationen finden Sie unter Warum sind sysdig-agent pods in CrashLoopBackOff auf einem privaten RHCOS-Cluster?