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 Software Delivery Shield ansehen Bereich Sicherheit in der Google Cloud Console. Sie werden Folgendes tun:

  • Mit Cloud Deploy ein Image in Cloud Run bereitstellen. Cloud Deploy ist ein Google Cloud-Dienst, der die Bereitstellung automatisiert Ihrer Anwendungen auf eine Reihe von Zielumgebungen in einer festgelegten Hochstufung Sequenz hinzufügen.
  • Sehen Sie sich die folgenden Sicherheitsinformationen für das Deployment an:

    • Informationen zur Identität und Verschlüsselung der Bereitstellung.
    • SLSA-Ebene (Supply Chain Levels for Software Artifacts) der die Sicherheit für die Bereitstellung angibt.
    • Sicherheitslücken in Build-Artefakten.
    • Software-Materialliste (SBOM) für die Build-Artefakte.
    • Build-Herkunft: eine Sammlung überprüfbarer Metadaten zu einem Build. Sie enthält Details wie die Digests der erstellten Images, die Eingabe Quellspeicherorten, Build-Toolchain, Build-Schritte und 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. 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. 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. 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. 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 für Cloud Deploy zum Bereitstellen von Arbeitslasten in Cloud Run.

 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 beim Hinzufügen einer dieser Rollen Probleme auftreten, wenden Sie sich an Ihren Projektadministrator.

Docker-Repository in Artifact Registry erstellen

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

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

    gcloud artifacts repositories list
    

    In der Liste der angezeigten Elemente sollte containers zu sehen sein. Repositories.

Beispielanwendung vorbereiten

Sie benötigen 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. Java-Anwendung mit Cloud Build erstellen und containerisieren Die Mit dem folgenden Befehl wird die Java-Anwendung erstellt und containerisiert. erstellten Container im Docker-Repository von Artifact Registry:

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

    Nach Abschluss des Builds wird eine Erfolgsstatusmeldung angezeigt, die der Folgendes:

    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, das die Pakete identifiziert. auf den sich Ihre Software stützt. Die Inhalte können Drittanbieter-Software von interne Artefakte und Open-Source-Bibliotheken.

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 auf Ihrem ersten Ziel bereitstellen.

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

    Zur Seite der Lieferpipelines

    Die Bereitstellungspipeline, die Sie gerade erstellt haben, cloudrun-guestbook-backend-delivery angezeigt wird.

  3. Klicken Sie auf cloudrun-guestbook-backend-delivery, um den Fortschritt zu beobachten. Die Die Seite Details zur 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
    

    Die neue Veröffentlichung wird im Abschnitt Releases auf der Seite Übermittlung Pipelinedetails.

  5. Ansicht Pipeline-Visualisierung in der Bereitstellungspipeline überwachen Details, bis die Schaltfläche Hochstufen für dev-cluster angezeigt wird. Ich muss die Seite möglicherweise aktualisiert werden.

  6. Beim ersten Ziel in der Visualisierung der Bereitstellungspipeline, cloudrun-dev, Klicken Sie auf Werben.

    Das Dialogfeld Release hochstufen wird angezeigt. Sie enthält die Details zum Ziel auf die Sie bewerben.

  7. Klicken Sie auf Hochstufen.

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

    Screenshot der Bereitstellung

Sicherheitsinformationen in Cloud Deploy ansehen

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

    Zur Seite „Cloud Deploy“

  2. Klicken Sie in der Tabelle Bereitstellungspipelines auf cloudrun-guestbook-backend-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-guestbook-backend. Klicken Sie unter der entsprechenden Spalte Security Insights auf Ansehen.

Sie sehen den Bereich Sicherheit von Software Delivery Shield für die Bereitstellung.

Screenshot des Sicherheitsbereichs

In diesem Bereich werden die folgenden Informationen angezeigt:

  • SLSA-Level:Dieser Build hat das SLSA-Level 3 erreicht. Klicken Sie auf Weitere Informationen um mehr über die Bedeutung dieser Sicherheitsebene zu erfahren.

  • Sicherheitslücken: Alle Sicherheitslücken in Ihren Artefakten. Klicken Sie auf das Image-Namen (java-guestbook-backend) verwenden, um die Artefakte anzuzeigen, die auf Schwachstellen gescannt.

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

  • Build-Details:Details des Builds wie der Builder und der Link zu Logs ansehen.

Sicherheitsinformationen in Cloud Run ansehen

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

    Zur Seite mit den Cloud Run-Diensten

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

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

  4. Klicken Sie im Bereich Überarbeitungen auf Sicherheit.

Sie sehen den Bereich Sicherheit von Software Delivery Shield für die Bereitstellung.

Screenshot des Sicherheitsbereichs

In diesem Bereich werden die folgenden Informationen angezeigt:

  • Identität und Verschlüsselung: Die E-Mail-Adresse der Compute Engine-Standardadresse Dienstkonto und den für die Bereitstellung verwendeten Verschlüsselungsschlüssel.

  • SLSA-Level:Dieser Build hat das SLSA-Level 3 erreicht. Klicken Sie auf Weitere Informationen um mehr über die Bedeutung dieser Sicherheitsebene zu erfahren.

  • Sicherheitslücken: Alle Sicherheitslücken in Ihren Artefakten. Klicken Sie auf das Image-Namen (java-guestbook-backend) verwenden, um die Artefakte anzuzeigen, die auf Schwachstellen gescannt.

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

  • Build-Details:Details des Builds wie der Builder und der Link zu Logs ansehen.

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 des Release und der 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 release- und rollout Ressourcen Die Sicherheit der Softwarelieferkette, die für diese Pipeline erstellt wurde.

  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