In Cloud Run bereitstellen und Sicherheitsinformationen ansehen

In dieser Kurzanleitung wird erläutert, wie Sie ein Container-Image in Cloud Run bereitstellen und Sicherheitsinformationen für die Bereitstellung im Bereich Sicherheit der Google Cloud Console von Software Delivery Shield ansehen. Sie werden Folgendes tun:

  • Mit Cloud Deploy ein Image in Cloud Run bereitstellen Cloud Deploy ist ein Google Cloud-Dienst, der die Bereitstellung Ihrer Anwendungen in einer Reihe von Zielumgebungen in einer definierten Hochstufungssequenz automatisiert.
  • Sehen Sie sich die folgenden Sicherheitsinformationen für die Bereitstellung an:

    • Informationen zu Identität und Verschlüsselung für die Bereitstellung.
    • Supply-Chain-Levels for Software Artifacts (SLSA): Gibt an, wie sicher die Bereitstellung ist.
    • Sicherheitslücken in Build-Artefakten.
    • Software-Bill of Materials (SBOM) für die Build-Artefakte.
    • Build-Herkunft, eine Sammlung überprüfbarer Metadaten eines Builds. Sie enthält Details wie die Digests der erstellten Images, die Speicherorte der Eingabequellen, die Build-Toolchain, die Build-Schritte und die Build-Dauer.

Hinweise

  1. 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.
  2. Installieren Sie die Google Cloud CLI.
  3. Führen Sie folgenden Befehl aus, um die gcloud CLI zu initialisieren:

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

  5. Die Abrechnung für das Google Cloud-Projekt muss aktiviert sein.

  6. Aktivieren Sie die Cloud Build, Artifact Registry, Cloud Deploy, Cloud Run, and Container Scanning APIs:

    gcloud services enable cloudbuild.googleapis.com  artifactregistry.googleapis.com  clouddeploy.googleapis.com  run.googleapis.com  containerscanning.googleapis.com
  7. Installieren Sie die Google Cloud CLI.
  8. Führen Sie folgenden Befehl aus, um die gcloud CLI zu initialisieren:

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

  10. Die Abrechnung für das Google Cloud-Projekt muss aktiviert sein.

  11. Aktivieren Sie die Cloud Build, Artifact Registry, Cloud Deploy, Cloud Run, and Container Scanning APIs:

    gcloud services enable cloudbuild.googleapis.com  artifactregistry.googleapis.com  clouddeploy.googleapis.com  run.googleapis.com  containerscanning.googleapis.com

Standardeinstellungen festlegen

  1. Legen Sie eine Umgebungsvariable für die Projekt-ID fest:

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

    gcloud config set deploy/region us-central1
    

Zugriff gewähren

Weisen Sie dem Compute Engine-Standarddienstkonto IAM-Rollen zu. Dies ist erforderlich, damit Cloud Deploy Arbeitslasten in Cloud Run bereitstellen kann.

 gcloud projects add-iam-policy-binding $PROJECT_ID \
     --member=serviceAccount:$(gcloud projects describe $PROJECT_ID \
     --format="value(projectNumber)")-compute@developer.gserviceaccount.com \
     --role="roles/clouddeploy.jobRunner"
 gcloud iam service-accounts add-iam-policy-binding $(gcloud projects describe $PROJECT_ID \
     --format="value(projectNumber)")-compute@developer.gserviceaccount.com \
     --member=serviceAccount:$(gcloud projects describe $PROJECT_ID \
     --format="value(projectNumber)")-compute@developer.gserviceaccount.com \
     --role="roles/iam.serviceAccountUser" \
     --project=$PROJECT_ID
 gcloud projects add-iam-policy-binding $PROJECT_ID \
     --member=serviceAccount:$(gcloud projects describe $PROJECT_ID \
     --format="value(projectNumber)")-compute@developer.gserviceaccount.com \
     --role="roles/run.developer"

Wenn Sie Probleme beim Hinzufügen einer dieser Rollen haben, wenden Sie sich an Ihren Projektadministrator.

Docker-Repository in Artifact Registry erstellen

  1. Erstellen Sie am Speicherort us-central1 ein neues Docker-Repository namens containers mit der Beschreibung „Docker repository“:

    gcloud artifacts repositories create containers --repository-format=docker \
        --location=us-central1 --description="Docker repository"
    
  2. Prüfen Sie, ob das Repository erstellt wurde:

    gcloud artifacts repositories list
    

    In der Liste der angezeigten Repositories sollten Sie containers sehen.

Beispielanwendung vorbereiten

Für die Erstellung und Bereitstellung benötigen Sie Beispielcode. In diesem Abschnitt klonen Sie ein vorhandenes Quell-Repository, das ein Java-Codebeispiel enthält.

  1. Klonen Sie das Repository, das das Java-Codebeispiel enthält:

    git clone https://github.com/googlecloudplatform/software-delivery-shield-demo-java.git
    cd software-delivery-shield-demo-java/backend
    
  2. Aktualisieren Sie cloudrun.clouddeploy.yaml, um PROJECT_ID durch Ihre Projekt-ID zu ersetzen:

    sed -i "s/PROJECT_ID/${PROJECT_ID}/g" cloudrun.clouddeploy.yaml
    

Anwendung erstellen

  1. Java-Anwendung mit Cloud Build erstellen und containerisieren Mit dem folgenden Befehl wird die Java-Anwendung erstellt und containerisiert und der integrierte Container im Docker-Repository von Artifact Registry gespeichert:

    gcloud builds submit --config=cloudbuild.yaml --region=us-central1
    

    Nach Abschluss des Builds wird eine Erfolgsstatusmeldung ähnlich der folgenden angezeigt:

    DONE
    -----------------------------------------------------------------------------
    ID: 3e08565f-7f57-4449-bc68-51c46cf33d03
    CREATE_TIME: 2022-09-19T15:41:07+00:00
    DURATION: 54S
    SOURCE: gs://sds-docs-project_cloudbuild/source/1663602066.777581-6ebe4b2d6fd741ffa18936d7f78055e9.tgz
    IMAGES: us-central1-docker.pkg.dev/sds-docs-project/containers/java-guestbook-backend:quickstart
    STATUS: SUCCESS
    

SBOM für das erstellte Image generieren

Ein SBOM ist ein vollständiges Inventar einer Anwendung, das die Pakete identifiziert, von denen Ihre Software abhängig ist. Die Inhalte können Drittanbietersoftware von Anbietern, interne Artefakte und Open-Source-Bibliotheken umfassen.

Generieren Sie die SBOM für das Bild, das Sie im vorherigen Abschnitt erstellt haben:

gcloud artifacts sbom export
    --uri=us-central1-docker.pkg.dev/${PROJECT_ID}/containers/java-guestbook-backend:quickstart

Container in Cloud Run mit Cloud Deploy bereitstellen

  1. Registrieren Sie Ihre Pipeline und Ziele beim Cloud Deploy-Dienst:

    gcloud deploy apply --file cloudrun.clouddeploy.yaml
    

    Sie haben jetzt eine Pipeline mit Zielen, die Sie für die Bereitstellung der Anwendung auf dem ersten Ziel verwenden können.

  2. Rufen Sie in der Google Cloud Console die Seite Bereitstellungspipelines auf, um zu prüfen, ob die Pipeline vorhanden ist:

    Zur Seite der Lieferpipelines

    Die soeben erstellte Bereitstellungspipeline cloudrun-guestbook-backend-delivery wird angezeigt.

  3. Klicken Sie auf cloudrun-guestbook-backend-delivery, um den Fortschritt zu beobachten. Die Seite Details der Bereitstellungspipeline wird geöffnet.

  4. Erstellen Sie in Cloud Shell einen Release in Cloud Deploy:

    gcloud deploy releases create test-release-007 \
        --delivery-pipeline=cloudrun-guestbook-backend-delivery \
        --skaffold-file=cloudrun.skaffold.yaml \
        --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.

  5. Beobachten Sie auf der Seite Details der Bereitstellungspipeline die Ansicht Pipeline Visualization, bis die Schaltfläche Hochstufen für dev-cluster angezeigt wird. Möglicherweise müssen Sie die Seite aktualisieren.

  6. Klicken Sie beim ersten Ziel in der Visualisierung der Bereitstellungspipeline (cloudrun-dev) auf Hochstufen.

    Das Dialogfeld Release hochstufen wird angezeigt. Es zeigt die Details des Ziels, auf das Sie hochstufen.

  7. Klicken Sie auf Werben.

    Der Release wird jetzt zur Bereitstellung in cloudrun-prod in die Warteschlange gestellt. Wenn die Bereitstellung abgeschlossen ist, wird sie in der Visualisierung der Bereitstellungspipeline als bereitgestellt angezeigt:

    Screenshot der Bereitstellung

Sicherheitsinformationen in Cloud Deploy ansehen

  1. Öffnen Sie in der Google Cloud Console die Seite Bereitstellungspipelines von Cloud Deploy.

    Zur Seite „Cloud Deploy“

  2. Klicken Sie in der Tabelle Delivery pipelines (Bereitstellungspipelines) auf cloudrun-Guestbook-Back-End-Delivery.

  3. Klicken Sie auf der Seite Details zu Bereitstellungspipelines auf test-release-008.

  4. Klicken Sie auf der Seite Release-Details auf den Tab Artefakte.

  5. Suchen Sie in der Tabelle Build-Artefakte die Zeile mit dem Artefakt java-gaestebuch-Back-End und klicken Sie unter der entsprechenden Spalte Sicherheitsinformationen auf Anzeigen.

Sie sehen nun den Bereich Sicherheit von Software Delivery Shield zur Bereitstellung.

Screenshot des Sicherheitsbereichs

In diesem Bereich werden die folgenden Informationen angezeigt:

  • SLSA-Level: Dieses Build hat SLSA-Level 3 erreicht. Klicken Sie auf den Link Weitere Informationen, um zu erfahren, was diese Sicherheitsstufe bedeutet.

  • Sicherheitslücken:Alle Sicherheitslücken, die in Ihren Artefakten gefunden wurden. Klicken Sie auf den Image-Namen (java-guestbook-backend), um die auf Sicherheitslücken gescannten Artefakte zu sehen.

  • Abhängigkeiten für die Build-Artefakte.

  • Build-Details:Details zum Build, z. B. der Builder und der Link zum Anzeigen von Logs.

Sicherheitsinformationen in Cloud Run ansehen

  1. Öffnen Sie die Cloud Run-Seite Dienste.

    Zur Seite „Cloud Run-Dienste“

  2. Klicken Sie in der Tabelle Dienste von Cloud Run auf gaestebuch-Back-End-prod.

  3. Klicken Sie auf der Seite Dienstdetails auf Überarbeitungen.

  4. Klicken Sie im Bereich Überarbeitungen auf Sicherheit.

Sie sehen nun den Bereich Sicherheit von Software Delivery Shield zur Bereitstellung.

Screenshot des Sicherheitsbereichs

In diesem Bereich werden die folgenden Informationen angezeigt:

  • Identität und Verschlüsselung: Die E-Mail-Adresse des Compute Engine-Standarddienstkontos und der für die Bereitstellung verwendete Verschlüsselungsschlüssel.

  • SLSA-Level: Dieses Build hat SLSA-Level 3 erreicht. Klicken Sie auf den Link Weitere Informationen, um zu erfahren, was diese Sicherheitsstufe bedeutet.

  • Sicherheitslücken:Alle Sicherheitslücken, die in Ihren Artefakten gefunden wurden. Klicken Sie auf den Image-Namen (java-guestbook-backend), um die auf Sicherheitslücken gescannten Artefakte zu sehen.

  • Abhängigkeiten für die Build-Artefakte.

  • Build-Details:Details zum Build, z. B. der Builder und der Link zum Anzeigen von Logs.

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.

  1. Deaktivieren Sie die Container Scanning API:

    gcloud services disable containerscanning.googleapis.com --force
    
  2. Löschen Sie den Cloud Run-Dienst guestbook-backend-dev:

    gcloud run services delete guestbook-backend-dev --region=us-central1 \
        --project=${PROJECT_ID}
    
  3. Löschen Sie den Dienst guestbook-backend-prod:

    gcloud run services delete guestbook-backend-prod --region=us-central1 \
        --project=${PROJECT_ID}
    
  4. Löschen Sie die Bereitstellungspipeline, einschließlich Release und Roll-outs:

    gcloud deploy delivery-pipelines delete cloudrun-guestbook-backend-delivery \
        --force --region=us-central1 --project=${PROJECT_ID}
    

    Mit diesem Befehl werden die Bereitstellungspipeline selbst sowie alle Ressourcen vom Typ release und rollout gelöscht, die für die Pipeline der Softwarelieferkette erstellt wurden.

  5. Löschen Sie das Artifact Registry-Repository:

    gcloud artifacts repositories delete containers \
        --location=us-central1 --async
    

Das war alles. Sie haben diesen Schnellstart abgeschlossen!

Nächste Schritte