Anwendung in GKE bereitstellen und Sicherheitsinformationen ansehen

Hier erfahren Sie, wie Sie einen absichtlich anfälligen Container in einem GKE-Cluster und Sicherheitsinformationen über die Sicherheitslücke in dem Dashboard für den Sicherheitsstatus. Die GKE Dashboard für den Sicherheitsstatus mit Informationen zu bekannten Betriebssystemen Sicherheitslücken. Wenn Sie Sprachen auf Sicherheitslücken in Go oder Java-Pakete finden Sie unter Anwendung erstellen und Sicherheitsinformationen ansehen

Lernziele

  • Containeranwendung erstellen und per Push in Artifact Registry übertragen mit Cloud Build
  • Erstellen Sie eine Bereitstellungspipeline in Cloud Deploy.
  • Anwendung in einem Staging-GKE-Cluster bereitstellen und hochstufen in einen Produktionscluster.
  • Sehen Sie sich Statistiken zu Sicherheitslücken in der bereitgestellten Anwendung mit dem Dashboard für den Sicherheitsstatus in der Google Cloud Console.

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 Google Cloud-Standardregion 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

    Zu verwendende Cluster:

    gcloud iam service-accounts create sds-runtime \
        --display-name="SDS 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. Dem standardmäßigen Compute Engine-Dienstkonto Zugriff gewähren auf GKE-Cluster. Cloud Deploy verwendet diesen Zugriff für Anwendungen in den Clustern in der 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 das Image erstellen

  1. 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"
    
  2. Prüfen Sie, ob das Repository existiert:

    gcloud artifacts repositories list \
        --location=us-central1 \
        --filter="REPOSITORY:containers"
    

    In der Ausgabe wird das von Ihnen erstellte Repository containers angezeigt.

GKE-Cluster erstellen

Zwei GKE-Cluster erstellen, einen Staging-Cluster mit dem Namen dev-cluster und einen Produktionscluster mit dem Namen prod-cluster. Im Autopilot-Modus: Das Scannen von Arbeitslasten auf Sicherheitslücken wird für neue ausgeführte Cluster automatisch aktiviert Version 1.27 und höher. Wenn Sie eine Standard- Cluster enthält, 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 des Clusters kann bis zu fünf Minuten dauern. Sie können auch Scannen von Arbeitslasten auf Sicherheitslücken durch Aktualisieren vorhandener GKE-Cluster.

Image erstellen

Erstellen und senden Sie das Image mit Cloud Build:

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

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

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

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

    Los 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 überwachen. Die Bereitstellungspipeline wird die Seite „Details“ geöffnet.

  5. 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 Veröffentlichung wird im Bereich Releases auf der Seite Übermittlung Pipelinedetails.

  6. Überwachen Sie auf der Seite Details zur Bereitstellungspipeline die Pipeline bis die Schaltfläche Hochstufen für dev-cluster Möglicherweise müssen Sie die Seite aktualisieren.

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

  8. Klicken Sie im Bereich Release hochstufen auf Hochstufen, um das Hochstufen zu bestätigen. zu Ihrem Produktionscluster.

  9. 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 sehen Sie sich Informationen zu Sicherheitslücken des Betriebssystems mithilfe der Dashboard für den Sicherheitsstatus. Das Dashboard enthält Informationen zu Sicherheitslücken in Ihren ausgeführten Arbeitslasten nach der Bereitstellung Cluster.

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

    Zum GKE-Sicherheitsstatus

  2. Aktualisieren Sie die Seite, um die Scanergebnisse anzusehen. Der erste Scan kann bis zu Dauer: 15 Minuten.

  3. Prüfen Sie auf der Seite GKE-Sicherheitsstatus die Abschnitt Betriebssystem-Sicherheitslücke der Arbeitslast. In diesem Abschnitt werden die häufigsten CVEs sich auf Ihre bereitgestellte Arbeitslast auswirken.

  4. Klicken Sie auf Alle Bedenken hinsichtlich Sicherheitslücken ansehen, um weitere Informationen zu erhalten. Der Tab Bedenken öffnet und wendet einen Filter für den Bedenkentyp Vulnerability an. Tabelle zeigt einen Überblick über jede Schwachstelle und ihre Auswirkungen.

  5. Wenn Sie Details zu einer bestimmten Sicherheitslücke sehen möchten, klicken Sie auf den Namen der Bedenken in in der Tabelle. Der Bereich Sicherheitslücken wird geöffnet. In diesem Bereich haben Sie folgende Möglichkeiten: Folgendes:

    • Lesen Sie eine detaillierte Beschreibung des CVE, einschließlich der betroffenen Versionen, Pakete und den CVSS-Wert.
    • Sehen Sie sich empfohlene Maßnahmen an, um das Problem zu entschärfen, z. B. die Dokumentation. und Informationen zur Patchversion.
    • Sehen Sie sich die spezifischen Arbeitslasten an, die von der Sicherheitslücke betroffen sind, in Tab Betroffene Arbeitslasten.

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