Anwendung in GKE bereitstellen und Sicherheitsinformationen ansehen
Hier erfahren Sie, wie Sie einen absichtlich anfälligen Container in einem GKE-Cluster bereitstellen und Sicherheitsinformationen zu der Sicherheitslücke im Dashboard für den Sicherheitsstatus erhalten. Im Dashboard für den GKE-Sicherheitsstatus werden Informationen zu bekannten Sicherheitslücken des Betriebssystems angezeigt. Wenn Sie auch Sprachscans auf Sicherheitslücken in Go- oder Java-Paketen vornehmen möchten, lesen Sie Anwendung erstellen und Sicherheitsinformationen ansehen.
Lernziele
- Containeranwendung mit Cloud Build erstellen und per Push in Artifact Registry übertragen.
- Erstellen Sie eine Bereitstellungspipeline in Cloud Deploy.
- Stellen Sie die Anwendung in einem Staging-GKE-Cluster bereit und stufen Sie sie in einen Produktionscluster hoch.
- Sehen Sie sich im Dashboard für den Sicherheitsstatus in der Google Cloud Console Statistiken zu Sicherheitslücken in der bereitgestellten Anwendung an.
Hinweise
- Melden Sie sich bei Ihrem Google Cloud-Konto an. Wenn Sie mit Google Cloud noch nicht vertraut sind, erstellen Sie ein Konto, um die Leistungsfähigkeit unserer Produkte in der Praxis sehen und bewerten zu können. Neukunden erhalten außerdem ein Guthaben von 300 $, um Arbeitslasten auszuführen, zu testen und bereitzustellen.
- Installieren Sie die Google Cloud CLI.
-
Führen Sie folgenden Befehl aus, um die gcloud CLI zu initialisieren:
gcloud init
-
Google Cloud-Projekt erstellen oder auswählen.
-
Erstellen Sie ein Google Cloud-Projekt:
gcloud projects create PROJECT_ID
Ersetzen Sie
PROJECT_ID
durch einen Namen für das Google Cloud-Projekt, das Sie erstellen. -
Wählen Sie das von Ihnen erstellte Google Cloud-Projekt aus:
gcloud config set project PROJECT_ID
Ersetzen Sie
PROJECT_ID
durch den Namen Ihres Google Cloud-Projekts.
-
-
Die Abrechnung für das Google Cloud-Projekt muss aktiviert sein.
-
Aktivieren Sie die Artifact Registry, Cloud Build, Cloud Deploy, Google Kubernetes Engine, Container Security, and Container Analysis APIs:
gcloud services enable artifactregistry.googleapis.com
cloudbuild.googleapis.com clouddeploy.googleapis.com container.googleapis.com containersecurity.googleapis.com containeranalysis.googleapis.com - Installieren Sie die Google Cloud CLI.
-
Führen Sie folgenden Befehl aus, um die gcloud CLI zu initialisieren:
gcloud init
-
Google Cloud-Projekt erstellen oder auswählen.
-
Erstellen Sie ein Google Cloud-Projekt:
gcloud projects create PROJECT_ID
Ersetzen Sie
PROJECT_ID
durch einen Namen für das Google Cloud-Projekt, das Sie erstellen. -
Wählen Sie das von Ihnen erstellte Google Cloud-Projekt aus:
gcloud config set project PROJECT_ID
Ersetzen Sie
PROJECT_ID
durch den Namen Ihres Google Cloud-Projekts.
-
-
Die Abrechnung für das Google Cloud-Projekt muss aktiviert sein.
-
Aktivieren Sie die Artifact Registry, Cloud Build, Cloud Deploy, Google Kubernetes Engine, Container Security, and Container Analysis APIs:
gcloud services enable artifactregistry.googleapis.com
cloudbuild.googleapis.com clouddeploy.googleapis.com container.googleapis.com containersecurity.googleapis.com containeranalysis.googleapis.com
Nach Abschluss der in diesem Dokument beschriebenen Aufgaben können Sie weitere Kosten vermeiden, indem Sie die erstellten Ressourcen löschen. Weitere Informationen finden Sie unter Bereinigen.
Umgebung vorbereiten
Legen Sie Ihre Projekt-ID als Umgebungsvariable fest:
export PROJECT_ID=$(gcloud config get project)
Legen Sie die Google Cloud-Standardregion für Cloud Deploy fest:
gcloud config set deploy/region us-central1
Klonen Sie das GitHub-Repository, das den Beispielcode für diese Aufgabe enthält:
git clone https://github.com/googlecloudplatform/software-delivery-shield-demo-java.git cd ~/software-delivery-shield-demo-java/backend
IAM-Dienstkonto für GKE erstellen
zu verwendende Cluster:
gcloud iam service-accounts create sds-runtime \ --display-name="SDS with GKE service account"
Gewähren Sie dem IAM-Dienstkonto Berechtigungen:
gcloud projects add-iam-policy-binding $PROJECT_ID \ --member=serviceAccount:sds-runtime@${PROJECT_ID}.iam.gserviceaccount.com \ --role="roles/container.nodeServiceAccount" gcloud projects add-iam-policy-binding $PROJECT_ID \ --member=serviceAccount:sds-runtime@${PROJECT_ID}.iam.gserviceaccount.com \ --role="roles/clouddeploy.jobRunner" gcloud projects add-iam-policy-binding $PROJECT_ID \ --member=serviceAccount:sds-runtime@${PROJECT_ID}.iam.gserviceaccount.com \ --role="roles/container.developer" gcloud projects add-iam-policy-binding $PROJECT_ID \ --member=serviceAccount:sds-runtime@${PROJECT_ID}.iam.gserviceaccount.com \ --role="roles/artifactregistry.reader"
Gewähren Sie dem Compute Engine-Standarddienstkonto Zugriff auf GKE-Cluster. Cloud Deploy verwendet diesen Zugriff, um Anwendungen in den Clustern Ihrer Bereitstellungspipeline bereitzustellen.
PROJECT_NUMBER="$(gcloud projects describe ${PROJECT_ID} --format='get(projectNumber)')" gcloud projects add-iam-policy-binding ${PROJECT_NUMBER} \ --member=serviceAccount:${PROJECT_NUMBER}-compute@developer.gserviceaccount.com \ --role=roles/container.developer
Artifact Registry-Repository für Ihr Image erstellen
Im Folgenden wird gezeigt, wie Sie das Repository anlegen.
gcloud artifacts repositories create containers \ --repository-format=docker \ --location=us-central1 \ --description="SDS with GKE repository"
Prüfen Sie, ob das Repository vorhanden ist:
gcloud artifacts repositories list \ --location=us-central1 \ --filter="REPOSITORY:containers"
Die Ausgabe zeigt das von Ihnen erstellte
containers
-Repository.
GKE-Cluster erstellen
Erstellen Sie zwei GKE-Cluster, einen Staging-Cluster namens dev-cluster
und einen Produktionscluster mit dem Namen prod-cluster
. In Autopilot ist das Scannen von Arbeitslasten auf Sicherheitslücken für neue Cluster mit Version 1.27 und höher automatisch aktiviert. Wenn Sie einen Standardcluster verwenden, geben Sie das Flag --workload-vulnerability-scanning=standard
an.
gcloud container clusters create-auto dev-cluster \
--region=us-central1 \
--release-channel=rapid \
--service-account=sds-runtime@${PROJECT_ID}.iam.gserviceaccount.com
gcloud container clusters create-auto prod-cluster \
--region=us-central1 \
--release-channel=rapid \
--service-account=sds-runtime@${PROJECT_ID}.iam.gserviceaccount.com
Die Clustererstellung kann bis zu fünf Minuten dauern. Sie können das Scannen von Arbeitslasten auf Sicherheitslücken auch aktivieren, indem Sie vorhandene GKE-Cluster aktualisieren.
Image erstellen
Erstellen Sie das Image mit Cloud Build und reichen Sie es ein:
gcloud builds submit --region us-central1 --config cloudbuild.yaml
Wenn der Build abgeschlossen ist, sieht die Ausgabe in etwa so aus:
DONE
-----------------------------------------------------------------------------
ID: 3e23094f-7f57-4449-bc68-51c37hn34d03
CREATE_TIME: 2022-09-19T15:41:07+00:00
DURATION: 54S
SOURCE: gs://my-project_cloudbuild/source/1663602066.777581-6ebe4b2d6fd741ffa18936d7f.tgz
IMAGES: us-central1-docker.pkg.dev/PROJECT_ID/containers/java-guestbook-backend:quickstart
STATUS: SUCCESS
Image mit Cloud Deploy in GKE bereitstellen
Aktualisieren Sie die Cloud Deploy-Konfigurationsdatei mit Ihrer Projekt-ID:
sed -i "s/PROJECT_ID/${PROJECT_ID}/g" clouddeploy.yaml
Registrieren Sie die Pipeline und Ziele:
gcloud deploy apply --file=clouddeploy.yaml
Rufen Sie in der Google Cloud Console die Seite Bereitstellungspipelines auf, um zu prüfen, ob die Pipeline vorhanden ist:
In der Liste der Pipelines wird Ihre neue Pipeline
guestbook-app-delivery
angezeigt.Klicken Sie auf den Namen der Pipeline, um den Fortschritt zu beobachten. Die Seite Details zur Bereitstellungspipeline wird geöffnet.
Erstellen Sie einen neuen Release in Cloud Deploy:
gcloud deploy releases create guestbook-release-001 \ --delivery-pipeline=guestbook-app-delivery \ --images=java-guestbook-backend=us-central1-docker.pkg.dev/${PROJECT_ID}/containers/java-guestbook-backend:quickstart
Der neue Release wird im Bereich Releases auf der Seite Details der Bereitstellungspipeline angezeigt.
Beobachten Sie auf der Seite Details zur Bereitstellungspipeline die Ansicht Pipelinevisualisierung, bis die Schaltfläche Hochstufen für
dev-cluster
angezeigt wird. Möglicherweise müssen Sie die Seite aktualisieren.Klicken Sie in der
dev-cluster
-Visualisierung auf Hochstufen.Klicken Sie im Bereich Release hochstufen auf Hochstufen, um die Hochstufung zu Ihrem Produktionscluster zu bestätigen.
Im Abschnitt Releases können Sie prüfen, ob Ihr Release erfolgreich war. In der Spalte Status des letzten Roll-outs wird
Successfully deployed to prod-cluster
angezeigt.
Sicherheitslücken ansehen
In diesem Abschnitt können Sie über das Dashboard für den Sicherheitsstatus Informationen zu Sicherheitslücken des Betriebssystems ansehen. Das Dashboard zeigt Informationen zu Sicherheitslücken in Ihren ausgeführten Arbeitslasten an, nachdem Sie sie in den Clustern bereitgestellt haben.
Rufen Sie in der Google Cloud Console die Seite GKE-Sicherheitsstatus auf.
Aktualisieren Sie die Seite, um die Scanergebnisse zu sehen. Der erste Scan kann bis zu 15 Minuten dauern.
Prüfen Sie auf der Seite GKE-Sicherheitsstatus den Abschnitt Sicherheitslücke des Arbeitslastbetriebssystems. In diesem Abschnitt werden die häufigsten CVEs aufgeführt, die sich auf Ihre bereitgestellte Arbeitslast auswirken.
Weitere Informationen finden Sie unter Alle Bedenken hinsichtlich Sicherheitslücken ansehen. Der Tab Bedenken wird geöffnet und ein Filter für den Problemtyp Sicherheitslücke wird angewendet. Die Tabelle bietet einen Überblick über die einzelnen Sicherheitslücken und ihre Auswirkungen.
Wenn Sie Details zu einer bestimmten Sicherheitslücke sehen möchten, klicken Sie in der Tabelle auf den Namen des betreffenden Problems. Der Bereich Sicherheitslücken wird geöffnet. In diesem Bereich haben Sie folgende Möglichkeiten:
- Lesen Sie eine detaillierte Beschreibung des CVE, einschließlich der betroffenen Versionen, Pakete und des CVSS-Werts.
- Sehen Sie sich empfohlene Maßnahmen an, um das Problem zu beheben, z. B. Dokumentation und Informationen zur Patchversion.
- Sehen Sie sich auf dem Tab Betroffene Arbeitslasten die Arbeitslasten an, die von der Sicherheitslücke betroffen sind.
Bereinigen
Löschen Sie das Google Cloud-Projekt mit den Ressourcen, damit Ihrem Google Cloud-Konto die auf dieser Seite verwendeten Ressourcen nicht in Rechnung gestellt werden.
Einzelne Ressourcen löschen
Löschen Sie die Cloud Deploy-Pipeline:
gcloud deploy delivery-pipelines delete guestbook-app-delivery --force
Löschen Sie die GKE-Cluster:
gcloud container clusters delete dev-cluster \ --region=us-central1 gcloud container clusters delete prod-cluster \ --region=us-central1
Löschen Sie das Artifact Registry-Repository:
gcloud artifacts repositories delete containers \ --location=us-central1
Löschen Sie das IAM-Dienstkonto:
gcloud iam service-accounts delete sds-runtime@${PROJECT_ID}.iam.gserviceaccount.com
Projekt löschen
- Wechseln Sie in der Google Cloud Console zur Seite Ressourcen verwalten.
- Wählen Sie in der Projektliste das Projekt aus, das Sie löschen möchten, und klicken Sie dann auf Löschen.
- Geben Sie im Dialogfeld die Projekt-ID ein und klicken Sie auf Shut down (Beenden), um das Projekt zu löschen.