In Cloud Run bereitstellen und Sicherheitserkenntnisse ansehen

In dieser Kurzanleitung wird beschrieben, wie Sie ein Container-Image in Cloud Run bereitstellen und Sicherheitserkenntnisse für die Bereitstellung auf dem Tab Sicherheit in derGoogle Cloud -Konsole ansehen. Sie werden Folgendes tun:

  • Ein Image mit Cloud Deploy 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 Sicherheitsstatistiken für die Bereitstellung an:

    • Identitäts- und Verschlüsselungsinformationen für die Bereitstellung.
    • Supply Chain Levels for Software Artifacts (SLSA)>: Gibt die Sicherheitsstufe für die Bereitstellung an.
    • Sicherheitslücken in Build-Artefakten.
    • Software-Materialliste (SBOM) für die Build-Artefakte.
    • Build-Herkunft: Eine Sammlung überprüfbarer Metadaten zu einem Build. Sie enthalten Details wie die Digests der erstellten Images, die Quell-Speicherorte, die Build-Toolchain, die Build-Schritte und die Build-Dauer.

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. Wenn Sie einen externen Identitätsanbieter (IdP) verwenden, müssen Sie sich zuerst mit Ihrer föderierten Identität in der gcloud CLI anmelden.

  4. Führen Sie folgenden Befehl aus, um die gcloud CLI zu initialisieren:

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

  6. Verify that billing is enabled for your Google Cloud project.

  7. Enable the 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
  8. Install the Google Cloud CLI.

  9. Wenn Sie einen externen Identitätsanbieter (IdP) verwenden, müssen Sie sich zuerst mit Ihrer föderierten Identität in der gcloud CLI anmelden.

  10. Führen Sie folgenden Befehl aus, um die gcloud CLI zu initialisieren:

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

  12. Verify that billing is enabled for your Google Cloud project.

  13. Enable the 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
  14. 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 wird containers aufgeführt.

    Beispielanwendung vorbereiten

    Sie benötigen einen Beispielcode zum Erstellen und Bereitstellen. 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. Erstellen und containerisieren Sie die Java-Anwendung mit Cloud Build. Mit dem folgenden Befehl wird die Java-Anwendung erstellt und containerisiert und der erstellte Container im Docker-Repository von Artifact Registry gespeichert:

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

      Nach Abschluss des Builds wird eine Erfolgsmeldung wie die folgende 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

    Eine SBOM ist ein vollständiges Inventar einer Anwendung, in dem die Pakete identifiziert werden, auf die Ihre Software angewiesen ist. Die Inhalte können Drittanbietersoftware von Anbietern, interne Artefakte und Open-Source-Bibliotheken umfassen.

    Generieren Sie die SBOM für das Image, 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 mit Cloud Deploy in Cloud Run 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 und können Ihre Anwendung für das erste Ziel bereitstellen.

    2. So prüfen Sie, ob Ihre Pipeline vorhanden ist: Rufen Sie in der Google Cloud -Konsole die Seite Lieferpipelines auf:

      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 zur Lieferpipeline wird geöffnet.

    4. Erstellen Sie in Cloud Shell ein 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
      

      Die neue Version wird auf der Seite Details zur Bereitstellungspipeline im Abschnitt Versionen angezeigt.

    5. Behalten Sie die Pipeline-Visualisierung auf der Seite Details zur Lieferpipeline im Blick, bis die Schaltfläche Hochstufen für dev-cluster angezeigt wird. Möglicherweise müssen Sie die Seite aktualisieren.

    6. Klicken Sie für das erste Ziel in der Visualisierung der Lieferpipeline, cloudrun-dev, auf Hochstufen.

      Das Dialogfeld Release hochstufen wird angezeigt. Hier werden die Details des Ziels angezeigt, das Sie bewerben.

    7. Klicken Sie auf Hochstufen.

      Der Release wird jetzt für die Bereitstellung in cloudrun-prod in die Warteschlange gestellt. Nach Abschluss der Bereitstellung wird dies in der Visualisierung der Lieferpipeline angezeigt:

      Pipeline, die das Hochstufen von cloudrun-dev zu cloudrun-prod zeigt

    Sicherheitsinformationen in Cloud Deploy ansehen

    1. Öffnen Sie in derGoogle Cloud -Konsole die Cloud Deploy-Seite Bereitstellungspipelines.

      Zur Seite „Cloud Deploy“

    2. Klicken Sie in der Tabelle Bereitstellungspipelines auf cloudrun-guestbook-backend-delivery.

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

    4. Klicken Sie auf der Seite Veröffentlichungsdetails auf den Tab Artefakte.

    5. Suchen Sie in der Tabelle Build artifacts (Build-Artefakte) die Zeile mit dem Artefakt java-guestbook-backend und klicken Sie in der entsprechenden Spalte Security insights (Sicherheitsinformationen) auf View (Ansehen).

    Der Tab Sicherheit wird für die Bereitstellung angezeigt.

    Tab „Sicherheit“

    Auf diesem Tab werden im Bereich Sicherheitsstatistiken die folgenden Informationen angezeigt:

    • SLSA-Ebene:Dieser Build hat die SLSA-Ebene 3 erreicht. Klicken Sie auf den Link Weitere Informationen, um zu erfahren, was dieses Sicherheitsniveau bedeutet.

    • Sicherheitslücken:Alle in Ihren Artefakten gefundenen Sicherheitslücken. Klicken Sie auf den Bildnamen (java-guestbook-backend), um die Artefakte aufzurufen, die auf Sicherheitslücken gescannt wurden.

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

    • Build-Details:Details des Builds wie der Builder und der Link zum Aufrufen von Logs.

    Sicherheitserkenntnisse in Cloud Run ansehen

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

      Seite „Cloud Run-Dienste“ aufrufen

    2. Klicken Sie in der Cloud Run-Tabelle Dienste auf guestbook-backend-prod.

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

    4. Klicken Sie im Bereich Überarbeitungen auf Sicherheit.

    Der Tab Sicherheit wird für die Bereitstellung angezeigt.

    Tab „Sicherheit“

    Auf diesem Tab werden im Bereich Sicherheitsstatistiken 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-Ebene:Dieser Build hat die SLSA-Ebene 3 erreicht. Klicken Sie auf den Link Weitere Informationen, um zu erfahren, was dieses Sicherheitsniveau bedeutet.

    • Sicherheitslücken:Alle in Ihren Artefakten gefundenen Sicherheitslücken. Klicken Sie auf den Bildnamen (java-guestbook-backend), um die Artefakte aufzurufen, die auf Sicherheitslücken gescannt wurden.

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

    • Build-Details:Details des Builds wie der Builder und der Link zum Aufrufen 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. Container Scanning API deaktivieren:

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

      gcloud run services delete guestbook-backend-dev --region=us-central1 \
          --project=${PROJECT_ID}
      
    3. So 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 des Releases und der Roll-outs:

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

      Mit diesem Befehl wird die Lieferpipeline selbst sowie alle release- und rollout-Ressourcen gelöscht, die für diese Pipeline 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