Anwendung in GKE bereitstellen und Sicherheitserkenntnisse ansehen
Hier erfahren Sie, wie Sie einen absichtlich anfälligen Container in einem GKE-Cluster bereitstellen und Sicherheitsstatistiken zur Sicherheitslücke im Sicherheitsstatus-Dashboard abrufen. Das Dashboard für den GKE-Sicherheitsstatus enthält Informationen zu bekannten Sicherheitslücken im Betriebssystem. Wenn Sie auch das Scannen von Go- oder Java-Paketen auf Sicherheitslücken wünschen, lesen Sie den Abschnitt Anwendung erstellen und Sicherheitserkenntnisse ansehen.
Lernziele
- Containeranwendung mit Cloud Build erstellen und per Push an Artifact Registry übertragen
- Erstellen Sie eine Bereitstellungspipeline in Cloud Deploy.
- Stellen Sie die Anwendung in einem GKE-Staging-Cluster bereit und stufen Sie sie zu einem Produktionscluster hoch.
- Im Dashboard zur Sicherheitslage in der Google Cloud Console können Sie Informationen zu Sicherheitslücken in der bereitgestellten Anwendung aufrufen.
Hinweise
- Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
-
Install the Google Cloud CLI.
-
Wenn Sie einen externen Identitätsanbieter (IdP) verwenden, müssen Sie sich zuerst mit Ihrer föderierten Identität in der gcloud CLI anmelden.
-
Führen Sie folgenden Befehl aus, um die gcloud CLI zu initialisieren:
gcloud init
-
Create or select a Google Cloud project.
-
Create a Google Cloud project:
gcloud projects create PROJECT_ID
Replace
PROJECT_ID
with a name for the Google Cloud project you are creating. -
Select the Google Cloud project that you created:
gcloud config set project PROJECT_ID
Replace
PROJECT_ID
with your Google Cloud project name.
-
-
Verify that billing is enabled for your Google Cloud project.
-
Enable the 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 -
Install the Google Cloud CLI.
-
Wenn Sie einen externen Identitätsanbieter (IdP) verwenden, müssen Sie sich zuerst mit Ihrer föderierten Identität in der gcloud CLI anmelden.
-
Führen Sie folgenden Befehl aus, um die gcloud CLI zu initialisieren:
gcloud init
-
Create or select a Google Cloud project.
-
Create a Google Cloud project:
gcloud projects create PROJECT_ID
Replace
PROJECT_ID
with a name for the Google Cloud project you are creating. -
Select the Google Cloud project that you created:
gcloud config set project PROJECT_ID
Replace
PROJECT_ID
with your Google Cloud project name.
-
-
Verify that billing is enabled for your Google Cloud project.
-
Enable the 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 Legen Sie Ihre Projekt-ID als Umgebungsvariable fest:
export PROJECT_ID=$(gcloud config get project)
Legen Sie die Standardregion für Cloud Deploy fest: Google Cloud
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="Security insights 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 in 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
Im Folgenden wird gezeigt, wie Sie das Repository anlegen.
gcloud artifacts repositories create containers \ --repository-format=docker \ --location=us-central1 \ --description="Security insights with GKE repository"
Prüfen Sie, ob das Repository vorhanden ist:
gcloud artifacts repositories list \ --location=us-central1 \ --filter="REPOSITORY:containers"
In der Ausgabe wird das von Ihnen erstellte
containers
-Repository angezeigt.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 die Ziele:
gcloud deploy apply --file=clouddeploy.yaml
So prüfen Sie, ob Ihre Pipeline vorhanden ist: Rufen Sie in der Google Cloud -Konsole die Seite Lieferpipelines auf:
In der Liste der Pipelines wird Ihre neue Pipeline
guestbook-app-delivery
angezeigt.Klicken Sie auf den Namen der Pipeline, um den Fortschritt zu verfolgen. Die Seite Details zur Lieferpipeline 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
Die neue Version wird auf der Seite Details zur Bereitstellungspipeline im Bereich Versionen angezeigt.
Behalten Sie auf der Seite Details zur Bereitstellungspipeline die Pipelinevisualisierung im Blick, 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 Bewerben.Klicken Sie im Bereich Release hochstufen auf Hochstufen, um die Hochstufung in Ihren Produktionscluster zu bestätigen.
Im Bereich 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.Rufen Sie in der Google Cloud Console die Seite GKE-Sicherheitsstatus auf.
Aktualisieren Sie die Seite, um die Scanergebnisse aufzurufen. Der erste Scan kann bis zu 15 Minuten dauern.
Sehen Sie sich auf der Seite GKE-Sicherheitsstatus den Abschnitt Sicherheitslücke im Arbeitslast-Betriebssystem an. In diesem Abschnitt werden die wichtigsten CVEs aufgeführt, die sich auf Ihre bereitgestellte Arbeitslast auswirken.
Klicken Sie auf Alle Sicherheitslücken ansehen, um weitere Informationen zu erhalten. Der Tab Bedenken wird geöffnet und ein Filter für den Bedenkentyp Sicherheitslücke wird angewendet. Die Tabelle enthält eine Übersicht über die einzelnen Sicherheitslücken und ihre Auswirkungen.
Wenn Sie Details zu einer bestimmten Sicherheitslücke aufrufen möchten, klicken Sie in der Tabelle auf den Namen des Problems. Der Bereich Sicherheitslücke wird geöffnet. In diesem Bereich haben Sie folgende Möglichkeiten:
- Lesen Sie eine detaillierte Beschreibung der CVE, einschließlich der betroffenen Versionen, Pakete und des CVSS-Werts.
- Hier finden Sie empfohlene Maßnahmen zur Behebung des Problems, z. B. Dokumentation und Informationen zur Patchversion.
- Auf dem Tab Betroffene Arbeitslasten sehen Sie die spezifischen Arbeitslasten, die von der Sicherheitslücke betroffen sind.
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
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
Artifact Registry-Repository für Ihr Image erstellen
GKE-Cluster erstellen
Erstellen Sie zwei GKE-Cluster, einen Staging-Cluster mit dem Namen dev-cluster
und einen Produktionscluster mit dem Namen prod-cluster
. In Autopilot wird das Scannen von Arbeitslasten auf Sicherheitslücken automatisch für neue Cluster mit Version 1.27 und höher 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 senden Sie es:
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
Sicherheitslücken ansehen
In diesem Abschnitt sehen Sie Informationen zu Betriebssystem-Sicherheitslücken über das Dashboard zur Sicherheitslage. Im Dashboard werden Informationen zu Sicherheitslücken in Ihren ausgeführten Arbeitslasten angezeigt, nachdem Sie sie in Ihren Clustern bereitgestellt haben.
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
Projekt löschen
Delete a Google Cloud project:
gcloud projects delete PROJECT_ID