Beschränkung des eingehenden Datenverkehrs auf Anwendungen und Funktionen durch kontextbasierte Beschränkungen

Sie können IBM Cloud® kontextbasierte Einschränkungen (CBR) verwenden, um den eingehenden Netzwerkverkehr zu Ihren IBM Cloud® Code Engine Anwendungen und Funktionen zu kontrollieren. Mit CBR können Sie den Zugriff über private Endpunkte, öffentliche Endpunkte oder beides einschränken und so flexible Sicherheit auf Netzwerkebene für Ihre Workloads bieten. Anstatt den Zugriff auf der Grundlage der Identität zuzuweisen, wird bei kontextbasierten Beschränkungen überprüft, ob eine Zugriffsanfrage aus einem zulässigen, von Ihnen konfigurierten Kontext stammt. Sie können den eingehenden Datenverkehr zu Ihren Anwendungen und Funktionen innerhalb Ihrer Code Engine Projekte begrenzen, um Ihre Projekte vor unerwünschtem eingehenden Datenverkehr zu schützen. Diese kontextbezogenen Einschränkungen gelten entweder auf Konto-, Projekt-, Ressourcengruppen- oder Standortebene (Region) und gelten für alle Anwendungen und Funktionen innerhalb des Geltungsbereichs der Einschränkung.

Die kontextbezogenen Einschränkungen für Code Engine Anwendungen und Funktionen unterstützen die folgenden Anwendungsfälle:

  • Blockieren Sie öffentliche Eingänge vollständig: Schränken Sie Ihre Anwendungen und Funktionen so ein, dass sie nur über ihren privaten Endpunkt via CBR zugänglich sind. Bei diesem Ansatz müssen keine Einstellungen für die Sichtbarkeit von Anwendungsendpunkten konfiguriert werden, da der öffentliche Zugang auf Netzwerkebene blockiert wird. Ihre Workloads bleiben von privaten Netzwerken (z. B. VPCs) und von anderen Code Engine Komponenten innerhalb desselben Projekts aus zugänglich.

  • Sperren des öffentlichen und Einschränken des privaten Datenverkehrs nach IP: Erzielen Sie maximale Kontrolle über den eingehenden Datenverkehr, indem Sie den gesamten öffentlichen Internetzugang sperren und den Zugriff privater Endgeräte auf bestimmte IP-Adressen oder Netzwerkzonen beschränken. Dies kombiniert die Möglichkeit von IP-basierten Beschränkungen für private Endpunkte mit der Möglichkeit, öffentliche Endpunkte auf Netzwerkebene vollständig zu blockieren.

  • Isolieren Sie Workloads vollständig: Blockieren Sie sowohl private als auch öffentliche Endpunkte, um Ihre Anwendungen und Funktionen auf der Netzwerkebene vollständig zu isolieren. Dieser Anwendungsfall ist ideal für Szenarien wie Stapelverarbeitungs-Workloads, die nur ausgehende Verbindungen herstellen müssen, interne Microservices, die ausschließlich über Nachrichtenwarteschlangen oder Ereignisabonnements kommunizieren, oder Workloads, die einer Wartung unterzogen werden und bei denen Sie vorübergehend jeglichen eingehenden Datenverkehr verhindern möchten, während die Anwendung weiterhin bereitgestellt wird.

Kontextbasierte Einschränkungen gelten nur für Anwendungen und Funktionen, da diese Arbeitslasten Netzwerkendpunkte darstellen. Kontextbasierte Einschränkungen gelten nicht für Jobs und Flotten, da sie keine Netzwerkendpunkte offenlegen.

Wenn Sie Code Engine Ressourcen mit kontextbasierten Einschränkungen sichern, können Sie nicht nur den eingehenden Datenverkehr, der eine Verbindung zu Ihren Anwendungen oder Funktionen herstellt, mit kontextbasierten Regeln einschränken, sondern auch die Kontexte(Netzwerkpfade), von denen aus Ihre Code Engine Ressourcen verwaltet werden können, wie z. B. die Bereitstellung oder Aktualisierung von Anwendungen und Geheimnissen.

Kontextbasierte Einschränkungen für Code Engine können auf ein einzelnes Projekt, eine ganze Ressourcengruppe oder einen Standort (Region) beschränkt werden. Weitere Informationen zu kontextbasierten Einschränkungen in „ IBM Cloud “ finden Sie unter „ Mehrschichtige Sicherheit mit kontextbasierten Einschränkungen “.

Wenn eine kontextbasierte Einschränkungsregel eine Ressourcengruppe oder einen Standort (Region) abdeckt, gelten die Einschränkungen für bestehende Projekte. Wenn Sie ein neues Projekt am selben Ort oder in derselben Ressourcengruppe erstellen, werden die Einschränkungen automatisch auf das neue Projekt angewendet. Es kann einige Minuten dauern, bis das neue Projekt mit den Einschränkungen verknüpft ist. Um zu sehen, ob die CBR-Regeln angewendet werden, überprüfen Sie den Abschnitt zum Projektstatus der Konnektivität in der Benutzeroberfläche, der Befehlszeilenschnittstelle oder der API.

Erstellen einer kontextbezogenen Einschränkung für Ihre Code Engine Ressourcen

Sie können kontextbasierte Einschränkungen für Ihre Code Engine Ressourcen erstellen, indem Sie die IBM Cloud Konsole, CLI, API, SDKs oder Terraform verwenden. Weitere Informationen zum Erstellen kontextbezogener Einschränkungen finden Sie unter Erstellen kontextbezogener Einschränkungen. Die folgenden Abschnitte enthalten spezifische Anleitungen zur Erstellung von Einschränkungen für Code Engine Anwendungen und Funktionen.

IPv6 Einschränkungen werden für Code Engine nicht unterstützt.

Hinzufügen einer kontextbezogenen Einschränkung über die Konsole

Um eine kontextbezogene Einschränkung zu erstellen, siehe Erstellen kontextbezogener Einschränkungen. Die folgenden Schritte beziehen sich auf die Erstellung eines solchen Dokuments für Code Engine.

  1. Rufen Sie die Seite Regeln für kontextbezogene Einschränkungen auf.

  2. Klicken Sie auf Erstellen, um eine neue Regel für die kontextbasierte Einschränkung zu erstellen, beginnend mit dem Dienst.

  3. Wählen Sie Code Engine für Dienste und klicken Sie auf Weiter, um die zu schützenden Dienst-APIs auszuwählen.

  4. Schränken Sie den Zugriff ein, um Ihre Code Engine Anwendungs- oder Funktions-Workloads zu schützen, indem Sie die Option Data plane für Service-APIs auswählen.

    Sie definieren Workload-Einschränkungen auf der Ebene der Datenebene, wählen Sie also zumindest den Datenebenendienst aus. Sie können auch andere Dienst- oder Plattform-APIs auswählen.

    Klicken Sie auf Weiter, um die Beschränkung für Ihre Ressourcen zu erweitern.

  5. Wenden Sie die Einschränkung auf ein einzelnes Projekt, die gesamte Ressourcengruppe oder einen Standort (Region) an, an dem Sie mehrere Projekte haben. Wenden Sie diesen Bereich im Abschnitt Ressourcen an und klicken Sie auf Überprüfen, um fortzufahren.

  6. Klicken Sie auf Weiter, um Ihrer Regel Kontext hinzuzufügen.

  7. Konfigurieren Sie Kontexte, um festzulegen, welche Endpunkte eingeschränkt sind. Wählen Sie je nach Ihren Sicherheitsanforderungen eines der folgenden Szenarien:

    • Anwendungsfall A: Vollständige Sperrung öffentlicher Eingänge

      Nutzen Sie diesen Anwendungsfall, um Ihre Anwendungen und Funktionen nur über ihren privaten Endpunkt zugänglich zu machen und den öffentlichen Internetzugang auf Netzwerkebene zu eliminieren.

      1. Setzen Sie Endpunkte auf ein.
      2. Wählen Sie Privat (Datenverkehr zulassen).
      3. Lassen Sie Öffentlich abgewählt (Verkehr blockieren).
      4. Lassen Sie die Netzwerkzonen leer. Stellen Sie sicher, dass in diesem Abschnitt keine Netzwerkzonen aktiviert sind, damit alle privaten Endpunkte zugänglich bleiben.
      5. Klicken Sie auf „Hinzufügen“, um einen neuen Kontext zu erstellen.
    • Anwendungsfall B: Sperrung der Öffentlichkeit und Einschränkung der Privatsphäre nach IP

      Verwenden Sie diesen Anwendungsfall, um maximale Kontrolle zu erreichen, indem Sie den gesamten öffentlichen Internetzugang blockieren und den Zugriff privater Endgeräte auf bestimmte IP-Adressen oder Netzwerkzonen beschränken.

      1. Setzen Sie Endpunkte auf ein.
      2. Wählen Sie Privat (Datenverkehr zulassen).
      3. Lassen Sie Öffentlich abgewählt (Verkehr blockieren).
      4. Wählen Sie die Netzwerkzonen aus, die Sie für den privaten Zugriff zulassen möchten (z. B. bestimmte VPCs oder IP-Bereiche).
      5. Klicken Sie auf „Hinzufügen“, um einen neuen Kontext zu erstellen.
    • Anwendungsfall C: Vollständige Isolierung von Workloads

      Verwenden Sie diesen Anwendungsfall, um Ihre Anwendungen und Funktionen auf Netzwerkebene vollständig zu isolieren, indem Sie sowohl private als auch öffentliche Endpunkte blockieren. Dies ist nützlich für Stapelverarbeitungs-Workloads, die nur ausgehende Verbindungen herstellen, interne Microservices, die ausschließlich über Nachrichtenwarteschlangen oder Ereignisse kommunizieren, oder Workloads, die gewartet werden.

      1. Setzen Sie Endpunkte auf ein.
      2. Lassen Sie Privat abgewählt (Verkehr blockieren).
      3. Lassen Sie Öffentlich abgewählt (Verkehr blockieren).
      4. Lassen Sie die Netzwerkzonen leer. Ein leerer öffentlicher Kontext ohne Netzzonen blockiert jeden öffentlichen Zugang.
      5. Klicken Sie auf „Hinzufügen“, um einen neuen Kontext zu erstellen.
  8. Klicken Sie auf Weiter, um Details zur Regel anzugeben.

  9. Geben Sie eine Beschreibung für Ihre Regel ein.

  10. Wählen Sie Aktiviert für Durchsetzung.

  11. Überprüfen Sie die Zusammenfassung und klicken Sie auf „ Erstellen “.

Hinzufügen einer kontextbezogenen Einschränkung über die CLI

Sie können die IBM Cloud CLI verwenden, um kontextbasierte Einschränkungen für Ihre Code Engine Ressourcen zu erstellen. Bevor Sie beginnen, vergewissern Sie sich, dass Sie das IBM Cloud CLI installiert und das Plug-in für kontextbezogene Einschränkungen installiert haben, indem Sie ibmcloud plugin install cbr ausführen.

  • Anwendungsfall A: Vollständige Sperrung öffentlicher Eingänge

    Nutzen Sie diesen Anwendungsfall, um Ihre Anwendungen und Funktionen nur über ihren privaten Endpunkt zugänglich zu machen und den öffentlichen Internetzugang auf Netzwerkebene zu eliminieren.

    Erstellen Sie eine Regel, die den privaten Zugang erlaubt und den öffentlichen Zugang blockiert:

    ibmcloud cbr rule-create --description "Block public inbound entirely" \
    --service-name codeengine \
    --api-types crn:v1:bluemix:public:context-based-restrictions::::api-type:data-plane \
    --context-attributes endpointType=private
    
  • Anwendungsfall B: Sperrung der Öffentlichkeit und Einschränkung der Privatsphäre nach IP

    Verwenden Sie diesen Anwendungsfall, um maximale Kontrolle zu erreichen, indem Sie den gesamten öffentlichen Internetzugang blockieren und den Zugriff privater Endgeräte auf bestimmte IP-Adressen oder Netzwerkzonen beschränken. Um verfügbare Zonen-IDs zu finden, führen Sie ibmcloud cbr zones aus.

    Erstellen Sie eine Regel, die den privaten Zugang zu bestimmten Zonen einschränkt und den öffentlichen Zugang sperrt:

    ibmcloud cbr rule-create --description "Block public and restrict private by IP" \
    --service-name codeengine \
    --api-types crn:v1:bluemix:public:context-based-restrictions::::api-type:data-plane \
    --context-attributes endpointType=private \
    --zone-id <zone-id>
    
  • Anwendungsfall C: Vollständige Isolierung von Workloads

    Verwenden Sie diesen Anwendungsfall, um Ihre Anwendungen und Funktionen auf Netzwerkebene vollständig zu isolieren, indem Sie sowohl private als auch öffentliche Endpunkte blockieren. Dies ist nützlich für Stapelverarbeitungs-Workloads, die nur ausgehende Verbindungen herstellen, interne Microservices, die ausschließlich über Nachrichtenwarteschlangen oder Ereignisse kommunizieren, oder Workloads, die gewartet werden.

    Um den gesamten eingehenden Datenverkehr zu blockieren, erstellen Sie eine Regel ohne Kontexte (eine leere Regel blockiert den gesamten Zugriff):

    ibmcloud cbr rule-create --description "Isolate workloads entirely" \
    --service-name codeengine \
    --api-types crn:v1:bluemix:public:context-based-restrictions::::api-type:data-plane
    

Die kontextbasierten Beschränkungsregeln gelten für das gesamte Konto, das Projekt, die Ressourcengruppe oder den Standort (Region). Verwenden Sie --resource-attributes, um die Ebene anzugeben, auf der die Regel gilt, z. B. --resource-attributes "projectId=<your-project-id>" für die Anwendung auf Projektebene.

Testen Ihrer kontextbasierten Beschränkungsregel für eingehende Verbindungen

Nachdem Sie die kontextbasierte Einschränkungsregel erstellt haben, können Sie sie mit Ihrer Anwendung oder Funktion testen:

  • Wenn Sie öffentliche Endpunkte blockiert haben: Der Versuch, über die öffentlichen URL auf Ihre Anwendung oder Funktion zuzugreifen, führt zu einer RBAC Access Denied Fehlermeldung. Ihr Workload bleibt über private Endpunkte zugänglich (von VPCs oder anderen Code Engine Komponenten im selben Projekt).

  • Wenn Sie private Endpunkte nach IP eingeschränkt haben: Der Zugriff über private Endpunkte wird nur für Netzwerkzonen oder IP-Adressen gewährt, die auf der Liste der zulässigen Endpunkte stehen. Wenn eine Anfrage von einer Quelle kommt, die nicht in der Liste aufgeführt ist, wird eine Fehlermeldung RBAC Access Denied angezeigt. Wenn Sie zum Beispiel nur 9.9.9.9/32 zulassen, ist Ihre Anwendung oder Funktion nur von diesem IP-Bereich aus über den privaten Endpunkt zugänglich. Alles, was außerhalb dieses Bereichs liegt, führt zu einer Fehlermeldung.

Wenn Sie eine Netzwerkzone ausgewählt haben, die auf eine VPC (Virtual Private Cloud) verweist, müssen Sie auch ein VPE-Gateway (Virtual Private Endpoint) erstellen, damit die VPC auf private Workloads zugreifen kann. Nach der Erstellung des Gateways kann es zu einer vorübergehenden Verzögerung aufgrund der PDNS-Auflösung kommen. Anfangs können Sie unter RBAC Access Denied Fehlermeldungen sehen, aber nach einiger Zeit wird Ihnen der Zugang gewährt.