Anwendung in GKE bereitstellen und Sicherheitserkenntnisse ansehen

Informationen zum Bereitstellen eines Container mit einer vorsätzlichen Sicherheitslücke in einem GKE-Cluster und zum Abrufen von Sicherheitsinformationen zur Sicherheitslücke im Dashboard für den Sicherheitsstatus Das GKE-Dashboard für den Sicherheitsstatus enthält Informationen zu bekannten Betriebssystemlücken. Wenn Sie auch Sprachpakete auf Sicherheitslücken in Go- oder Java-Paketen prüfen möchten, lesen Sie den Hilfeartikel Anwendung erstellen und Sicherheitserkenntnisse ansehen.

Lernziele

  • Erstellen Sie eine containerisierte Anwendung mit Cloud Build und übertragen Sie sie per Push in Artifact Registry.
  • Erstellen Sie eine Bereitstellungspipeline in Cloud Deploy.
  • Die Anwendung in einem GKE-Stagingcluster bereitstellen und in einen Produktionscluster verschieben.
  • Im Dashboard zur Sicherheitskonfiguration in der Google Cloud Console finden Sie Informationen zu Sicherheitslücken in der bereitgestellten Anwendung.

Hinweise

  1. 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.
  2. Install the Google Cloud CLI.
  3. To initialize the gcloud CLI, run the following command:

    gcloud init
  4. 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.

  5. Make sure that billing is enabled for your Google Cloud project.

  6. 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
  7. Install the Google Cloud CLI.
  8. To initialize the gcloud CLI, run the following command:

    gcloud init
  9. 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.

  10. Make sure that billing is enabled for your Google Cloud project.

  11. 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

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

  1. Legen Sie Ihre Projekt-ID als Umgebungsvariable fest:

    export PROJECT_ID=$(gcloud config get project)
    
  2. Legen Sie die Standard-Google Cloud-Region für Cloud Deploy fest:

    gcloud config set deploy/region us-central1
    
  3. 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
    
  4. IAM-Dienstkonto für GKE erstellen

    Cluster verwenden:

    gcloud iam service-accounts create sds-runtime \
        --display-name="Security insights with GKE service account"
    
  5. 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"
    
  6. 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

  1. 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"
    
  2. 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.

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 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 Erstellung eines Clusters 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

Nach Abschluss des Builds 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

  1. Aktualisieren Sie die Cloud Deploy-Konfigurationsdatei mit Ihrer Projekt-ID:

    sed -i "s/PROJECT_ID/${PROJECT_ID}/g" clouddeploy.yaml
    
  2. Pipeline und Ziele registrieren:

    gcloud deploy apply --file=clouddeploy.yaml
    
  3. Rufen Sie in der Google Cloud Console die Seite Bereitstellungspipelines auf, um zu prüfen, ob Ihre Pipeline vorhanden ist:

    Zu „Bereitstellungspipelines“

    In der Liste der Pipelines wird Ihre neue Pipeline guestbook-app-delivery angezeigt.

  4. Klicken Sie auf den Namen der Pipeline, um den Fortschritt zu verfolgen. Die Seite Details zur Lieferpipeline wird geöffnet.

  5. So 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 auf der Seite Details zur Auslieferungspipeline im Abschnitt Releases angezeigt.

  6. Beobachten Sie auf der Seite Details zur Bereitstellungspipeline in der Ansicht Pipelinevisualisierung, bis die Schaltfläche Befördern für dev-cluster angezeigt wird. Möglicherweise müssen Sie die Seite aktualisieren.

  7. Klicken Sie in der Visualisierung dev-cluster auf Bewerben.

  8. Klicken Sie im Bereich Release hochstufen auf Hochstufen, um die Freigabe für Ihren Produktionscluster zu bestätigen.

  9. Im Bereich Releases sehen Sie, ob der 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 mithilfe des Dashboards zur Sicherheitskonfiguration Statistiken zu Betriebssystemlücken aufrufen. Das Dashboard enthält Informationen zu Sicherheitslücken in Ihren laufenden Arbeitslasten, nachdem Sie sie in Ihren Clustern bereitgestellt haben.

  1. Rufen Sie in der Google Cloud Console die Seite GKE-Sicherheitsstatus auf.

    Zum GKE-Sicherheitsstatus

  2. Aktualisieren Sie die Seite, um die Scanergebnisse aufzurufen. Der erste Scan kann bis zu 15 Minuten dauern.

  3. Sehen Sie sich auf der Seite GKE-Sicherheitsstatus den Abschnitt Sicherheitslücke des Arbeitslast-Betriebssystems an. In diesem Abschnitt werden die wichtigsten CVEs aufgeführt, die sich auf Ihre bereitgestellte Arbeitslast auswirken.

  4. Klicken Sie auf Alle Bedenken hinsichtlich Sicherheitslücken ansehen, um weitere Informationen zu erhalten. Der Tab Bedenken wird geöffnet und es wird ein Filter für den Bedenkentyp Sicherheitslücken angewendet. Die Tabelle enthält eine Übersicht über die einzelnen Sicherheitslücken und ihre Auswirkungen.

  5. 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:

    • Hier finden Sie eine detaillierte Beschreibung der CVE, einschließlich der betroffenen Versionen, Pakete und des CVSS-Werts.
    • Sehen Sie sich empfohlene Maßnahmen zur Behebung des Problems an, z. B. Informationen zur Dokumentation und zur Patchversion.
    • Auf dem Tab Betroffene Arbeitslasten sehen Sie die Arbeitslasten, 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

  1. Löschen Sie die Cloud Deploy-Pipeline:

    gcloud deploy delivery-pipelines delete guestbook-app-delivery --force
    
  2. Löschen Sie die GKE-Cluster:

    gcloud container clusters delete dev-cluster \
        --region=us-central1
    gcloud container clusters delete prod-cluster \
        --region=us-central1
    
  3. Löschen Sie das Artifact Registry-Repository:

    gcloud artifacts repositories delete containers \
        --location=us-central1
    
  4. Löschen Sie das IAM-Dienstkonto:

    gcloud iam service-accounts delete sds-runtime@${PROJECT_ID}.iam.gserviceaccount.com
    

Projekt löschen

  1. In the Google Cloud console, go to the Manage resources page.

    Go to Manage resources

  2. In the project list, select the project that you want to delete, and then click Delete.
  3. In the dialog, type the project ID, and then click Shut down to delete the project.

Nächste Schritte