Erhöhen Sie die Cloudsicherheit, indem Sie kontextbasierte Einschränkungen anwenden

Für dieses Lernprogramm können Kosten anfallen. Mit dem Kostenschätzer können Sie eine Kostenschätzung für Ihre voraussichtliche Nutzung generieren.

Dieses Lernprogramm führt Sie durch den Prozess der Implementierung von kontextbasierten Einschränkungen (CBRs) in Ihrem IBM Cloud-Konto. CBRs helfen Ihnen, die Cloudumgebung weiter zu schützen und zu einem Zero-Trust-Sicherheitsmodellzu gelangen.

Im Lernprogramm wird erläutert, wie Netzzonen und Kontextregeln erstellt werden und wie überprüft wird, ob sie funktionieren. Im Lernprogramm erfahren Sie, wie Sie die CBR-Objekte in der Browserkonsole und als Infrastruktur als Code mit Terraform erstellen. Außerdem erfahren Sie mehr über Kriterien zum Definieren der Zugriffsstrategie für Ihre Cloudressourcen.

Ziele

  • Erfahren Sie mehr über kontextbasierte Einschränkungen zum Schutz Ihrer Cloudressourcen
  • Definieren Sie Netzzonen, um Datenverkehrsquellen für zulässigen und verweigerten Zugriff zu identifizieren
  • Regeln erstellen, die Kontext für den Zugriff auf Ihre Cloudressourcen definieren
  • Wissen zum Testen und Überwachen von Kontextregeln

Das folgende Diagramm zeigt die Lösungsarchitektur, die im Lernprogramm End-to-End-Sicherheit auf eine Cloudanwendung anwenden verwendet wird. Die zusätzlichen Kästchen mit gestrichelten blauen Linien um den Kubernetes Service-Cluster, Container Registry, Key Protectund Object Storage bezeichnen kontextbasierte Einschränkungen, die als Kontextregeln implementiert sind. Beachten Sie, dass Secrets Manager ebenfalls geschützt sein könnte, aber nur ein optionaler Service ist und in diesem Lernprogramm nicht verwendet wird.

Architektur
Lösungsarchitektur

Vorbereitende Schritte

Für dieses Lernprogramm ist Folgendes erforderlich:

  • IBM Cloud CLI,
  • docker-Client für Push-und Pull-Operationen für Container-Images.

Anweisungen zum Herunterladen und Installieren dieser Tools für Ihre Betriebsumgebung finden Sie im Leitfaden "Erste Schritte mit Lösungs-Tutorials ".

Um die Installation dieser Tools zu vermeiden, können Sie Cloud Shell über die IBM Cloud-Konsole verwenden.

Einrichtung

In einem späteren Schritt, Mit Terraform kontextbasierte Einschränkungen konfigurieren, werden Sie CBR-Objekte als zusätzliche Sicherheitsebene auf den Ressourcen bereitstellen, die im Lernprogramm End-to-End-Sicherheit auf eine Cloudanwendung anwenden verwendet werden.

  1. Bereitstellung von Ressourcen mithilfe von Terraform, das von Schematics verwaltet wird, wie im zugehörigen GitHub-Repository beschrieben.

  2. Der IBM Cloud Activity Tracker Event Routing muss so konfiguriert sein, dass er Auditing-Ereignisse an eine IBM Cloud Logs Zielinstanz weiterleitet. Leiten Sie Audit-Ereignisse weiter, wie in der Konfiguration eines IBM Logs-Ziels beschrieben, falls dies noch nicht in Ihrem Konto konfiguriert ist.

Übersicht: Kontextbasierte Einschränkungen

Kontextbasierte Einschränkungen(CBRs) bieten die Möglichkeit, Zugriffsbeschränkungen für IBM Cloud-Ressourcen basierend auf der Netzposition und dem Typ der Zugriffsanforderungen zu definieren und durchzusetzen. Da sowohl IAM-Richtlinien als auch kontextbasierte Einschränkungen den Zugriff erzwingen, bieten kontextbasierte Einschränkungen selbst bei kompromittierten oder schlecht verwalteten Anmeldedaten Schutz.

Eine Regel regelt den Zugriff auf eine Ressource, die durch ihren Servicenamen und -typ sowie durch zusätzliche Attribute angegeben wird. Sie können die Region, die Ressourcengruppe und andere servicespezifische Eigenschaften enthalten. Die Attribute in einer Regel sind im Wesentlichen optional, sodass Sie z. B. alle Key Protect-Instanzen gemeinsam regulieren oder nur einen bestimmten Schlüsselring in einer angegebenen Key Protect-Instanz als Ziel angeben können.

Der Kontext für eine Einschränkung besteht aus Netzzonen und Serviceendpunkten. Möglicherweise möchten Sie Zonen auf der Basis bestimmter IP-Adressen oder Bereiche definieren oder indem Sie Datenverkehr konfigurieren, der von einer oder mehreren VPCs oder Cloud-Services stammt. Damit kann der Zugriff auf die Beispielinstanz Key Protect nur von einer bestimmten Object Storage-Instanz, einem bekannten Bereich von IP-Adressen und nur über den privaten Endpunkt zugelassen werden.

Netzzonen können für die Definition mehrerer Regeln verwendet werden. Regeln verfügen über einen Durchsetzungsmodus, der entweder inaktiviert, nur für Berichte oder aktiviert ist.

Derzeit unterstützen nicht alle Cloud-Services den reinen Berichtsmodus. Darüber hinaus generieren diese Services auch keine CBR-bezogenen Protokolleinträge, wenn sie aktiviert sind. Details finden Sie in der Dokumentation zu den einzelnen Services.

Kontextbasierte Einschränkungen
Ein Diagramm, das zeigt, wie kontextbasierte Einschränkungen funktionieren.

Zone und Regel erstellen

Zur Bewertung der Auswirkungen kontextbasierter Einschränkungen erstellen Sie eine Regel, die den Zugriff auf einen Namensbereich in Container Registryregelt. Zunächst erstellen Sie diesen Namensbereich und anschließend eine Netzzone, um eine VPC als Datenverkehrsquelle zu identifizieren.

  1. Gehen Sie zu den Container Registry Namensräumen und notieren Sie sich den Namen des zuvor konfigurierten Namensraums.
  2. Klicken Sie in der IBM Cloud-Konsole auf das Menü Verwalten und wählen Sie Kontextbasierte Einschränkungen aus. Klicken Sie auf der Übersichtsseite auf Netzzone erstellen.
  3. Geben Sie VPCzone als Namen ein. Wählen Sie unter Zulässige VPCs die VPCs mit Ihrem Kubernetes Service-Cluster aus. Klicken Sie auf Weiter, um die Zone zu überprüfen, und klicken Sie anschließend auf Erstellen.
  4. Erstellen Sie als Nächstes eine Regel mithilfe der Zone, indem Sie in der Navigation auf der linken Seite auf Regeln und anschließend auf Erstellen klicken.
  5. Wählen Sie Container Registry im Abschnitt Service aus und klicken Sie auf Weiter.
  6. Verlassen Sie den Abschnitt APIs mit Alle-Service-APIs klicken Sie auf Weiter.
  7. Wählen Sie anschließend unter Ressourcen die Option Bestimmte Ressourcen aus. Wählen Sie Ressourcentyp als Attribut aus und geben Sie namespace als Wert an. Fügen Sie eine weitere Bedingung hinzu und konfigurieren Sie Ressourcenname als NAMESPACE (derselbe Wert wie in Schritt 1). Klicken Sie auf "Überprüfen " und dann auf "Weiter ".
  8. Wählen Sie die zuvor erstellte VPCzone aus der Liste aus. Verwenden Sie anschließend Hinzufügen und Weiter, um zum letzten Schritt des Dialogs zu gelangen. Markieren Sie Enforcement als Report-only. Danach erstellen Sie die Regel.

Beachten Sie, dass CBR-Zonen und -Regeln asynchron implementiert werden. Es kann bis zu wenigen Minuten dauern, bis sie aktiv werden (letztendlich konsistent).

Regel und ihre Durchsetzungsmodi testen

  1. Öffnen Sie in einer neuen Browser-Registerkarte den DienstIBM Cloud Logs, wählen Sie die Registerkarte Cloud Logs und klicken Sie auf den Namen der Instanz, die die Auditing-Ereignisse empfängt.

  2. Eine neue Sitzung von IBM Cloud Shell auf einer anderen Browserregisterkarte starten.

  3. Führen Sie in der Shell die folgenden Befehle aus: Setzen Sie eine Umgebungsvariable auf die Cloudregion, die Sie für Container Registryverwenden möchten, z. B. us oder de.

    export REGION=us
    

    Setzen Sie eine weitere Variable für den Namensraum Container Registry:

    export NAMESPACE=<YOUR_NAMESPACE>
    

    Melden Sie sich jetzt bei Container Registryan.

    ibmcloud cr login
    

    Extrahieren Sie als Nächstes ein Container-Image in die Shellumgebung.

    docker pull docker.io/library/hello-world:latest
    

    Kennzeichnen Sie das Image erneut, um es in Ihren Registry-Namensbereich hochzuladen.

    docker tag docker.io/library/hello-world $REGION.icr.io/$NAMESPACE/hello-world
    

    Schieben Sie zum Schluss das Behälterbild in das Register.

    docker push $REGION.icr.io/$NAMESPACE/hello-world
    
  4. Wechseln Sie zu der Browser-Registerkarte mit dem IBM Cloud Logs, die die Audit-Protokolle anzeigt. Im Berichtsmodus werden Protokolleinträge in IBM Cloud Activity Tracker Event Routing geschrieben, wenn eine Regel zutrifft, unabhängig vom Ergebnis der Entscheidung. Der Protokollsatz enthält Details zur Anforderung. In der folgenden Abbildung wurde die Regel, die den Zugriff auf einen Container Registry erlaubt, im Berichtsmodus angewendet.

    Regeln im Berichtsmodus prüfen
    Eine Kontexteinschränkung, die im Berichtsmodus übereinstimmt

    Wie im Berichtsmodus erläutert, generieren alle übereinstimmenden Anforderungen einen Protokolleintrag. In den Ereignisdetails sehen Sie ein Attribut decision mit dem Wert Permit oder Deny. Im Screenshot oben ist dies Verweigern.

  5. Listen Sie auf der Browserregisterkarte mit der Shell die Container-Images im Namensbereich auf.

    ibmcloud cr images --restrict $NAMESPACE
    
  6. Navigieren Sie auf einer dritten Browserregisterkarte zu den CBR-Regeln. Klicken Sie neben der Registry-bezogenen Regel, die Sie zuvor erstellt haben, auf das Punktmenü und wählen Sie Bearbeiten aus. Rufen Sie Regel beschreiben (Schritt 3) auf und wechseln Sie von Nur Bericht zu Aktiviert. Aktivieren Sie die Änderung, indem Sie auf die Schaltfläche Anwenden klicken.

  7. Wechseln Sie mit IBM Cloud Shellzurück zur Browserregisterkarte. Geben Sie denselben Befehl wie zuvor aus, um die Images aufzulisten:

    ibmcloud cr images --restrict $NAMESPACE
    

    Dieses Mal sollte dies zu einer Fehlernachricht führen, dass Sie nicht berechtigt sind.

  8. Auf der Browserregisterkarte mit den Protokollen sollten Sie einen neuen Datensatz ähnlich dem folgenden finden:

    Regeln im erzwungenen Modus prüfen
    Eine Kontexteinschränkung hat eine Verweigerung wiedergegeben

    Die Regel wurde durchgesetzt und, abhängig davon, wie Sie versucht haben, auf die Registry zuzugreifen, wurde der Zugriff verweigert. Dies liegt daran, dass die Regel den Zugriff nur über eine bestimmte VPC zulässt. Die Cloud Shell Umgebung und ihre IP-Adresse, wie sie in den Protokollen in den requestData->environment Feldern dokumentiert sind, unterscheiden sich. Daher wird die Anforderung verweigert.

Wenn Sie mit den IBM Cloud Logs arbeiten, können Sie Abfragezeichenfolgen wie die folgenden verwenden, um die relevanten Protokolleinträge leicht zu finden:

  • Im Berichtsmodus gibt "context restriction" permit OR deny die Protokollzeilen mit Zugriff zurück, die eine Zulassung oder Verweigern ausgegeben haben.
  • Im Berichtsmodus können Sie "context restriction" permit verwenden, um nur den Zugriff anzuzeigen, der zulässig wäre. Verwenden Sie in ähnlicher Weise "context restriction" deny für verweigerten Zugriff.
  • Verwenden Sie im Modus enforced eine Abfragezeichenfolge wie context restriction rendered für Protokollzeilen, die sich auf den verweigerten Zugriff beziehen.

Die Überwachung einer neuen Regel wird 30 Tage lang empfohlen, bevor sie durchgesetzt wird. Weitere Informationen zu Monitoring-kontextbasierten Einschränkungen sowohl im reinen Berichtsmodus als auch im aktivierten Modus finden Sie in der CBR-Dokumentation.

Um die Bereitstellung von CBR-Objekten mit Terraform in einem Abschnitt weiter unten vorzubereiten, wechseln Sie zur Browserregisterkarte mit den CBR-Regeln. Löschen Sie dort die zuvor erstellte Regel, indem Sie auf das zugehörige Punktmenü klicken und Entfernen auswählen. Bestätigen Sie anschließend mit Löschen. Klicken Sie anschließend auf Netzzonen und löschen Sie die zuvor erstellte Zone.

Definition der Zugriffsstrategie für Ihre Cloudressourcen

Um die richtigen Regeln für kontextbasierte Einschränkungen (CBRs) einzurichten, sollten Sie die Zugriffsstrategie für Ihre Cloudressourcen definiert haben. Alle Ressourcen sollten durch Identity and Access Management (IAM) geschützt werden. Es bedeutet, dass Authentifizierungs-und Berechtigungsprüfungen durchgeführt werden sollten, bevor ein Benutzer oder eine Service-ID auf eine Ressource zugreift. CBRs erhöhen den Schutz, indem sie den Netzzugriff basierend auf Ursprungskriterien und anderen Regeln abschneiden, aber sie ersetzen nicht die ordnungsgemäße IAM-Konfiguration. Darüber hinaus unterstützen viele Services die Begrenzung des Netzverkehrs auf private Endpunkte, wodurch die Zugriffsoptionen bereits reduziert werden.

Möglicherweise stellen Sie fest, dass einige Regeln den Komfort der Verwaltung von Ressourcen beeinflussen, z. B. über die Browserkonsole. Außerdem müssen Sie sicherstellen, dass Sie sich nicht den Zugriff auf Ressourcen, Management-Dashboards und APIs verweigern. Daher müssen Sie Bastionshosts, Unternehmensnetze, Gateways und möglicherweise sogar Cloud Shellberücksichtigen. Außerdem unterstützen einige Services eine differenzierte Unterscheidung zwischen Datenebene und Steuerstellenzugriff für die CBR-Konfiguration, z. B. Cluster-und Management-APIs fürKubernetes Service.

Zusammenfassend sollten folgende Fragen gestellt werden:

  • Sind alle Ressourcen durch IAM und ähnliches geschützt?
  • Wie wird auf die Ressourcen zugegriffen, sind sie nach Möglichkeit bereits auf private Endpunkte beschränkt?
  • Ist es möglich, den Zugriff auf die Datenebene und die Steuerebene zu trennen?
  • Was ist Datenverkehr im Zusammenhang mit der Nutzung, die zur administrativen Arbeit? Wie werden Notfälle gehandhabt?
  • Woher stammt der obige Datenverkehr?

Verwenden Sie den Berichtsmodus, um Aktivitäten zu berücksichtigen, die den kontextbasierten Einschränkungen entsprechen. Stellen die regelbasierten Entscheidungen eine Genehmigung oder Ablehnung dar? Entspricht das Ihren Erwartungen? Um mehr über Aktivitäten zu erfahren und sie korrekt mit CBR-Regeln zu verarbeiten, wird eine Testphase im Berichtsmodus von mindestens einem Monat empfohlen. Dies ermöglicht einen iterativen Ansatz für die gewünschte Gruppe von Netzzonen und Kontextregeln.

Für dieses Lernprogramm werden die folgenden Netzzonen definiert:

  • Eine Zone für den Kubernetes Service-Cluster
  • eine Zone für Object Storage
  • für einen IP-Bereich mit den Adressen eines Heimnetzwerks (Unternehmen oder Bastion), das als homezone dienen soll

Danach werden die Kontextregeln wie folgt definiert:

Alle oben genannten Zonen und Regeln können im reinen Berichtsmodus oder im erzwungenen Modus mit einem einzelnen Terraform-Befehl bereitgestellt werden. Beachten Sie, dass die Regeln nicht für den Produktionseinsatz bestimmt sind, sondern als Beispiel für die Untersuchung der Nutzung und des Datenverkehrs im reinen Berichtsmodus dienen.

Die Dokumentation enthält eine Liste der Ressourcen, die als Servicereferenzen unterstützt werden. Sie können die Liste auch mit dem CLI-Befehl service-ref-targets oder der zugehörigen API-Funktion List available service reference targets abrufen.

Terraform zum Konfigurieren von kontextbasierten Einschränkungen verwenden

Anstatt die Netzzonen und Kontextregeln für ein Projekt manuell zu erstellen, wird empfohlen, die Implementierung zu automatisieren. Kontextbasierte Einschränkungen können mithilfe von Infrastructure as Code (IaC) bereitgestellt werden, nämlich Terraform-Code. Sie können zuerst die Zonen und Regeln mit Regeln im reinen Berichtsmodus zu Testzwecken bereitstellen. Wechseln Sie anschließend nach gründlichen Tests in den erzwungenen Modus, indem Sie die implementierte Konfiguration aktualisieren.

Terraform-Ressourcen für Zonen und Regeln

Im Folgenden stellen Sie den Terraform-Code bereit, um eine grundlegende Gruppe von Netzzonen und Kontextregeln zu erstellen. Der Code für Zonen verwendet die Ressource ibm_cbr_zone. Im Folgenden sehen Sie eine Zonenspezifikation, die den Kubernetes angibt. Ein solcher Cluster ist eine der unterstützten Servicereferenzen.

resource "ibm_cbr_zone" "cbr_zone_k8s" {
  account_id = data.ibm_iam_account_settings.team_iam_account_settings.account_id
  addresses {
    type = "serviceRef"
    ref {
      account_id       = data.ibm_iam_account_settings.team_iam_account_settings.account_id
      service_instance = data.ibm_container_vpc_cluster.cluster.id
      service_name     = "containers-kubernetes"
    }
  }
  description = "Zone with the Kubernetes cluster"
  name        = "cbr_zone_k8s"
}

Der Code für Regeln verwendet die Ressource ibm_cbr_rule. Die Terraform-Konfiguration für eine typische Regel wird unten angezeigt. Ähnlich wie die Browserbenutzerschnittstelle enthält sie die folgenden Elemente:

  • Kontexte zur Angabe der Zonen
  • Durchsetzungsmodus
  • Ressourcen, für die sie gilt, angegeben durch Attribute
resource "ibm_cbr_rule" "cbr_rule_cos_k8s" {
  contexts {
    attributes {
      name  = "networkZoneId"
      value = ibm_cbr_zone.cbr_zone_k8s.id
    }
  }
  contexts {
    attributes {
      name  = "networkZoneId"
      value = ibm_cbr_zone.cbr_zone_homezone.id
    }
  }

  description      = "restrict COS access, limit to cluster"
  enforcement_mode = var.cbr_enforcement_mode
  resources {
    attributes {
      name  = "accountId"
      value = data.ibm_iam_account_settings.team_iam_account_settings.account_id
    }
    attributes {
      name     = "serviceInstance"
      operator = "stringEquals"
      value    = var.cos.guid
    }
    attributes {
      name     = "serviceName"
      operator = "stringEquals"
      value    = "cloud-object-storage"
    }
  }
}

Terraform-Ressourcen bereitstellen

Mit dem Verständnis der CBR-bezogenen Terraform-Ressourcen ist es an der Zeit, sie auf den vorhandenen Ressourcen bereitzustellen, um Zonen und Regeln zu erstellen.

  1. Navigieren Sie im Browser zu den IBM Cloud Schematics-Arbeitsbereichen. Wählen Sie den Arbeitsbereich mit den vorhandenen Ressourcen aus der früheren Konfiguration aus.
  2. Klicken Sie auf "Einstellungen ". Suchen Sie in der Liste der Variablen nach der Zeile mit deploy_cbr. Der Standardwert ist false.
  3. Wählen Sie im Punktmenü für die Variable Bearbeiten aus. Inaktivieren Sie anschließend im Popup-Formular die Option Standardeinstellung verwenden, um den Wert ändern zu können. Geben Sie true in das Feld für Wert der Variablen: deploy_cbr ein. Beenden Sie anschließend die Aktualisierung, indem Sie auf Speichern klicken.
  4. Nachdem die Einstellungsseite aktualisiert wurde, fahren Sie mit Plan generieren oben fort. Die Planausgabe sollte angeben, dass CBR-Zonen und -Regeln erstellt werden.
  5. Erstellen Sie die CBR-Objekte mithilfe der Schaltfläche Plan anwenden.

Standardmäßig ist der Durchsetzungsmodus mit report-only konfiguriert. Sie können die Variable cbr_enforcement_mode in den Wert enabled ändern, um die Einschränkungen durchzusetzen.

Kontextregeln testen

Wenn die Gruppe der kontextbasierten Einschränkungen implementiert ist, ist es wieder Zeit, sie zu überprüfen und zu testen. Rufen Sie zum Überprüfen der CBR-Objekte die Übersicht über kontextbasierte Einschränkungen auf. Überprüfen Sie anschließend die neuen Zonen und Regeln.

Die Tests sollten auf Container Registry, Object Storage und Key Protect durchgeführt und durch Überwachung der zuvor ausgeführten Protokolle validiert werden. Da die Zonen und Regeln eine Zugriffsbeschränkung für Container Registryenthalten, können Sie die im Abschnitt Regel und ihre Durchsetzungsmodi testen ausgeführten Tests wiederholen.

Gehen Sie wie folgt vor, um die neue Regel für den Zugriff auf Object Storagezu testen:

  1. Rufen Sie auf einer Browserregisterkarte die Liste der Object Storage-Instanzen auf. Klicken Sie auf den Servicenamen für das Lernprogramm, z. B. secure-file-storage-cos.
  2. Besuchen Sie in einer zweiten Browser-Registerkarte das bereits verwendete IBM Cloud Logs Dashboard mit den Audit-Protokollen.
  3. Klicken Sie zurück auf der Registerkarte mit der Übersicht Object Storage in der Liste Buckets auf das Speicherbucket.
  4. Verwenden Sie Hochladen, um eine Datei in das Bucket zu importieren. Übernehmen Sie die Einstellung Standardübertragung und wählen Sie im Bereich Dateien (Objekte) hochladen eine Datei aus. Klicken Sie abschließend auf "Hochladen ".
  5. Zurück in der Browser-Registerkarte mit den Überwachungsprotokollen sollte es CBR-bezogene Protokolleinträge mit dem Titel Context restriction matched while in report mode geben. Dies liegt daran, dass die Regeln im Modus report implementiert wurden. Erweitern Sie einige Datensätze, um die gemeldeten Daten decision und isEnforced zu überprüfen. Abhängig vom konfigurierten IP-Bereich für die Ausgangszone kann decision Permit oder Deny lauten. Der Wert für isEnforced sollte aufgrund des Berichtsmodus false sein.

Für weitere Tests können Sie den IP-Bereich der Homepagezone ändern. Dies ist die Variable homezone_iprange in den Schematics-Einstellungen.

Ressourcen entfernen

Um die Ressource zu entfernen, verwenden Sie den Browser und navigieren Sie zur Übersicht über die Arbeitsbereiche vonIBM Cloud Schematics. Wählen Sie den Arbeitsbereich aus und wählen Sie anschließend im Menü Aktionen zunächst Ressourcen löschen aus. Verwenden Sie anschließend Arbeitsbereich löschen.

Zugehörige Inhalte