Beispiele für kontextbasierte Einschränkungsszenarios

Mit kontextbasierten Einschränkungen können Kontobesitzer und Administratoren Zugriffsbeschränkungen für IBM Cloud® Ressourcen definieren und durchsetzen, die auf dem Kontext der Zugriffsanfragen basieren. Der Zugriff auf die Ressourcen von IBM Cloud Kubernetes Service kann mit kontextbezogenen Einschränkungen und Richtlinien für das Identitäts- und Zugriffsmanagement gesteuert werden. Weitere Informationen finden Sie unter Schutz von IBM Cloud Kubernetes Service Ressourcen mit kontextbasierten Einschränkungen.

Anwendungen, die auf IBM Cloud Kubernetes Service Clustern laufen, z. B. Webserver, die von einem Kubernetes LoadBalancer, bereitgestellt werden, sind nicht durch CBR-Regeln eingeschränkt.

Szenario verstehen

In diesem Beispielszenario verwenden Sie kontextbasierte Einschränkungen, um den Datenverkehr zu Ihrem Cluster zu beschränken, indem Sie zulassen, dass nur eine einzelne IP-Adresse eine Verbindung zu den cluster-APIs über das öffentliche Netz herstellt, während der gesamte private Datenverkehr zugelassen wird.

In den folgenden Schritten beginnen Sie mit der Erstellung einer Netzzone oder Zulassungsliste, die eine einzelne IP-Adresse enthält. Anschließend erstellen Sie eine kontextbasierte Einschränkungsregel für Ihren Cluster, die allen privaten Netzzugriff und Zulassungslisten auf die Netzzone mit der einzelnen IP-Adresse ermöglicht. Wenn Sie die Regel erstellen, ordnen Sie sie der Netzzone zu, die die einzelne IP-Adresse enthält.

Voraussetzungen

Vergewissern Sie sich vor Beginn dieses Tutorials, dass Sie die folgenden Ressourcen und Tools erstellt oder installiert haben.

Netzzone erstellen

Melden Sie sich an Ihrem Konto an. If applicable, target the appropriate resource group. Legen Sie den Kontext für den Cluster fest.

  1. Führen Sie den folgenden Beispielbefehl aus, um ein Netz zu erstellen, das nur eine Client-IP enthält, die verwendet werden soll.

    ibmcloud cbr zone-create --addresses 129.XX.XX.XX --description "Allow only client IP" --name allow-client-ip
    
  2. Überprüfen Sie, ob die Netzzone erstellt wurde.

    ibmcloud cbr zones
    

CBR-Regel erstellen

  1. Nachdem Sie Ihre Netzzone (Zulassungsliste) erstellt haben, erstellen Sie eine CBR-Regel und fügen Sie die im vorherigen Schritt erstellte Netzzone hinzu. Das folgende Beispiel erstellt eine Regel, die den API-Typ cluster verwendet. Ersetzen Sie NETWORK-ZONE-ID durch die ID der in Schritt 1 erstellten allow-client-ip-Netzzone.

    ibmcloud cbr rule-create --api-types crn:v1:bluemix:public:containers-kubernetes::::api-type:cluster --description "privateAccess=allowAll, publicAccess=oneIP" --service-name containers-kubernetes --service-instance CLUSTER-ID --context-attributes endpointType=private --context-attributes endpointType=public,networkZoneId=NETWORK-ZONE-ID
    

    Informationen zu den Befehlsoptionen.

    --api-types crn:v1:bluemix:public:containers-kubernetes::::api-type:cluster
    Legen Sie die crn:v1:bluemix:public:containers-kubernetes::::api-type:cluster-API so fest, dass nur Ressourcen in der Netzzone, die Sie zuvor erstellt haben, nur auf die cluster-APIs zugreifen können, die die APIs für verschiedene kubectl-Befehle enthalten.
    --service-instance CLUSTER-ID
    Geben Sie als Geltungsbereich für die Regel einen einzelnen Cluster an, sodass nur Ressourcen in der zuvor erstellten Netzzone auf die CLUSTER-ID zugreifen können.
    --context-attributes endpointType=private
    Legen Sie das Kontextattribut endpointType=private fest, ohne dass eine Netzzone den gesamten privaten Datenverkehr zum Cluster zulässt.
    --context-attributes endpointType=public,networkZoneId=all-client-ip
    Legen Sie das Kontextattribut endpointType=public fest und ordnen Sie die zuvor erstellte networkZoneId=allow-client-ip zu, damit nur die Ressourcen in der Zone allow-client-ip über das öffentliche Netz auf den Cluster zugreifen können.
  2. Überprüfen Sie, ob die Regel erstellt wurde.

    ibmcloud cbr rules
    

Kontextbasierte Einschränkungen testen

Zum Testen Ihrer kontextbasierten Einschränkungskonfiguration können Sie versuchen, die Cluster-APIs für Ihren Cluster aufzurufen, z. B. durch Auflisten von Pods über das öffentliche Netz von einer anderen IP-Adresse als der einzelnen IP-Adresse, die Sie in Ihrer Netzzone aufgeführt haben. Bei dieser Konfiguration ist die gesamte private Konnektivität zulässig, während nur die einzelne IP-Adresse in Ihrer Netzzone eine Verbindung zu den Cluster-APIs über das öffentliche Netz herstellen kann.

Zusätzliche Szenarios

Nachdem Sie nun eine einfache CBR-Netzzone und -Regel erstellt haben, sehen Sie sich die folgenden erweiterten Beispiele an, um den Zugriff auf Ihre IBM Cloud Kubernetes Service-Ressourcen weiter zu steuern.

Unterschiedlichen IPs den Zugriff auf öffentliche und private Serviceendpunkte ermöglichen

In diesem Szenario ermöglichen Sie verschiedenen IP-Adressen oder CIDRs den Zugriff auf die öffentlichen und privaten Serviceendpunkte Ihrer IBM Cloud Kubernetes Service-Cluster, indem Sie separate Netzzonen für jede IP-Adresse erstellen. Anschließend erstellen Sie eine Regel, die jeder Netzzone den Zugriff auf die öffentlichen oder privaten Serviceendpunkte ermöglicht.

  1. Erstellen Sie eine Netzzone für eine öffentliche IP-Adresse oder CIDR und eine andere für eine private IP-Adresse oder CIDR, die Sie für den Zugriff auf Ihre IBM Cloud Kubernetes Service-Cluster zulassen möchten.

    Beispielbefehle zum Erstellen separater Netzzonen mit den Namen public-IP-zone und private-IP-zone. In diesem Beispiel enthält jede Zone mehrere durch Kommas getrennte IP-Adressen oder CIDRs, die Sie für den Zugriff auf Ihre Cluster zulassen möchten.

    ibmcloud cbr zone-create --addresses 1.2.3.4,12.12.12.0/24 --description "Allowed Public IP Addresses Zone" --name "public-ip-zone"
    
    ibmcloud cbr zone-create --addresses 10.20.20.20,10.10.10.0/24 --description "Allowed Private IP Addresses Zone" --name "private-ip-zone"
    
  2. Rufen Sie die IDs der im vorherigen Schritt erstellten Zonen private-ip-zone und public-ip-zone ab.

    ibmcloud cbr zones
    
  3. Erstellen Sie eine Regel, die es private-ip-zone ermöglicht, eine Verbindung zum privaten Serviceendpunkt Ihres Clusters herzustellen, und die es dem public-ip-zone ermöglicht, nur eine Verbindung zum öffentlichen Serviceendpunkt Ihres Clusters herzustellen. Diese Regel gilt für den mit der Option --service-instance angegebenen Cluster. Wenn Sie die Regel auf alle Cluster in Ihrem Konto anwenden wollen, geben Sie keinen Cluster an.

    ibmcloud cbr rule-create --context-attributes "endpointType=public,networkZoneId=PUBLIC-IP-ZONE-ID" --context-attributes "endpointType=private,networkZoneId=PRIVATE-IP-ZONE-ID" --description "Separate private and public IPs for cluster and management rule" --service-name containers-kubernetes --service-instance CLUSTER-ID
    

Unterschiedlichen IPs den Zugriff auf unterschiedliche API-Typen über öffentliche und private Serviceendpunkte ermöglichen

Ähnlich wie im vorherigen Szenario erlauben Sie in diesem Szenario verschiedenen IP-Adressen den Zugriff auf den öffentlichen oder privaten Service-Endpunkt für IBM Cloud Kubernetes Service-Cluster. In diesem Szenario wird der Zugriff jedoch weiter durch bestimmte API-Typen für die APIs cluster und management eingeschränkt. Weitere Informationen zu den API-Typen finden Sie unter Bestimmte APIs schützen.

  1. Erstellen Sie vier Netzzonen, eine für jede IP-Adresse, die Sie für den Zugriff auf die öffentlichen oder privaten cluster-APIs oder auf die öffentlichen oder privaten management-APIs zulassen möchten. Beachten Sie, dass Sie mehrere durch Kommas getrennte IP-Adressen oder CIDRs angeben können, die Sie für den Zugriff auf Ihre Cluster zulassen wollen.

    ibmcloud cbr zone-create --addresses 1.2.3.4,12.12.12.0/24 --description "Allowed Public IP Addresses for IKS and ROKS APIs" --name "public-mgmt-zone"
    
    ibmcloud cbr zone-create --addresses 10.20.20.20,10.10.10.0/24 --description "Allowed Private IP Addresses IKS and ROKS APIs" --name "private-mgmt-zone"
    
    ibmcloud cbr zone-create --addresses 11.11.11.0/24 --description "Allowed Public IP Addresses for cluster apiserver" --name "public-cluster-zone"
    
    ibmcloud cbr zone-create --addresses 10.30.30.30 --description "Allowed Private IP Addresses for cluster apiserver" --name "private-cluster-zone"
    
  2. Rufen Sie die IDs der Zonen ab, die Sie im vorherigen Schritt erstellt haben.

    ibmcloud cbr zones
    

    Beispielausgabe

    OK
    id                                 name                   address_count   
    c14c0839c13d8aa0afa8383e2be2e124   public-mgmt-zone       2   
    f9676ca6ef37685315fa254b89d73159   public-cluster-zone    1   
    c14c0839c13d8aa0afa8383e2be2e843   private-cluster-zone   1   
    b53353de929de39ac2381f9b4cde8507   private-mgmt-zone      2
    
  3. Erstellen Sie eine Regel, die den Zugriff auf die öffentlichen und privaten cluster-und management-APIs schützt, indem Sie die zuvor erstellten Zonen verwenden.

    ibmcloud cbr rule-create --api-types crn:v1:bluemix:public:containers-kubernetes::::api-type:management --context-attributes "endpointType=public,networkZoneId=PUBLIC-MGMT-ZONE-ID" --context-attributes "endpointType=private,networkZoneId=PRIVATE-MGMT-ZONE-ID" --description "Separate private and public IPs for the management APIs" --service-name containers-kubernetes
    
    ibmcloud cbr rule-create --api-types crn:v1:bluemix:public:containers-kubernetes::::api-type:cluster --context-attributes "endpointType=public,networkZoneId=PUBLIC-CLUSTER-ZONE-ID" --context-attributes "endpointType=private,networkZoneId=PRIVATE-CLUSTER-ZONE-ID" --description "Separate private and public IPs for cluster APIs" --service-name containers-kubernetes