In Cloud Run bereitstellen und Sicherheitserkenntnisse ansehen
In dieser Kurzanleitung erfahren Sie, wie Sie ein Container-Image in Cloud Run bereitstellen und Sicherheitserkenntnisse für die Bereitstellung auf dem Tab Sicherheit in der Google Cloud Console aufrufen. Sie werden Folgendes tun:
- Stellen Sie ein Image mit Cloud Deploy in Cloud Run bereit. Cloud Deploy ist ein Google Cloud-Dienst, der die Bereitstellung Ihrer Anwendungen in einer Reihe von Zielumgebungen in einer definierten Hochstufungssequenz automatisiert.
Rufen Sie die folgenden Sicherheitserkenntnisse für die Bereitstellung auf:
- Informationen zur Identität und Verschlüsselung für die Bereitstellung.
- SLSA-Ebene (Supply-chain Levels for Software Artifacts), die das Maß an 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 enthalten Details wie die Digests der erstellten Images, die Quell-Speicherorte, die Build-Toolchain, die Build-Schritte und die Build-Dauer.
Hinweise
- 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.
- Install the Google Cloud CLI.
-
To initialize the gcloud CLI, run the following command:
gcloud init
-
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.
-
-
Make sure that billing is enabled for your Google Cloud project.
-
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 - Install the Google Cloud CLI.
-
To initialize the gcloud CLI, run the following command:
gcloud init
-
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.
-
-
Make sure that billing is enabled for your Google Cloud project.
-
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
Standardeinstellungen festlegen
Legen Sie eine Umgebungsvariable für die Projekt-ID fest:
export PROJECT_ID=$(gcloud config get project)
Legen Sie die Standardregion für Cloud Deploy fest:
gcloud config set deploy/region us-central1
Zugriff gewähren
Weisen Sie dem Standarddienstkonto der Compute Engine 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
Erstellen Sie ein neues Docker-Repository mit dem Namen
containers
am Standortus-central1
mit der Beschreibung „Docker repository“:gcloud artifacts repositories create containers --repository-format=docker \ --location=us-central1 --description="Docker repository"
Prüfen Sie, ob Ihr Repository erstellt wurde:
gcloud artifacts repositories list
In der Liste der angezeigten Repositories sollte
containers
aufgeführt sein.
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.
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
Aktualisieren Sie
cloudrun.clouddeploy.yaml
, umPROJECT_ID
durch Ihre Projekt-ID zu ersetzen:sed -i "s/PROJECT_ID/${PROJECT_ID}/g" cloudrun.clouddeploy.yaml
Anwendung erstellen
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
Ein SBOM ist ein vollständiges Inventar einer Anwendung, in dem die Pakete aufgeführt sind, auf die Ihre Software angewiesen ist. Der Inhalt kann Software von Drittanbietern, 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
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.
Rufen Sie in der Google Cloud Console die Seite Bereitstellungspipelines auf, um zu prüfen, ob Ihre Pipeline vorhanden ist:
Zur Seite der Lieferpipelines
Die soeben erstellte Bereitstellungspipeline
cloudrun-guestbook-backend-delivery
wird angezeigt.Klicken Sie auf
cloudrun-guestbook-backend-delivery
, um den Fortschritt zu verfolgen. Die Seite Details zur Lieferpipeline wird geöffnet.Erstellen Sie in Cloud Shell eine Version 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 Releases angezeigt.
Beobachten Sie die Ansicht Pipeline-Visualisierung auf der Seite Details zur Lieferpipeline, bis die Schaltfläche Hochstufen für
dev-cluster
angezeigt wird. Möglicherweise müssen Sie die Seite aktualisieren.Klicken Sie für das erste Ziel in der Visualisierung der Lieferpipeline,
cloudrun-dev
, auf Hochstufen.Das Dialogfeld Release veröffentlichen wird angezeigt. Hier sehen Sie die Details des Ziels, auf das Sie werben.
Klicken Sie auf Hochstufen.
Der Release wird jetzt für die Bereitstellung in
cloudrun-prod
in die Warteschlange gestellt. Wenn die Bereitstellung abgeschlossen ist, wird sie in der Visualisierung der Bereitstellungspipeline als bereitgestellt angezeigt:
Sicherheitserkenntnisse in Cloud Deploy ansehen
Öffnen Sie in der Google Cloud Console die Seite Bereitstellungspipelines von Cloud Deploy.
Klicken Sie in der Tabelle Bereitstellungspipelines auf cloudrun-guestbook-backend-delivery.
Klicken Sie auf der Seite Details zur Bereitstellungspipeline auf test-release-008.
Klicken Sie auf der Seite Release-Details auf den Tab Artefakte.
Suchen Sie in der Tabelle Build-Artefakte die Zeile mit dem Artefakt java-guestbook-backend und klicken Sie unter der entsprechenden Spalte Sicherheitsinformationen auf Anzeigen.
Für die Bereitstellung wird der Tab Sicherheit angezeigt.
Auf diesem Tab werden im Bereich Sicherheitsinformationen die folgenden Informationen angezeigt:
SLSA-Ebene:Dieser Build hat die SLSA-Ebene 3 erreicht. Klicken Sie auf den Link Weitere Informationen, um mehr über diese Sicherheitsstufe zu erfahren.
Sicherheitslücken:Alle in Ihren Artefakten gefundenen Sicherheitslücken. Klicken Sie auf den Image-Namen (java-guestbook-backend), um die Artefakte aufzurufen, die auf Sicherheitslücken geprüft 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
Öffnen Sie die Seite Cloud Run-Dienste.
Klicken Sie in der Tabelle Cloud Run-Dienste auf guestbook-backend-prod.
Klicken Sie auf der Seite Dienstdetails auf Überarbeitungen.
Klicken Sie im Bereich Überarbeitungen auf Sicherheit.
Für die Bereitstellung wird der Tab Sicherheit angezeigt.
Auf diesem Tab werden im Bereich Sicherheitsinformationen die folgenden Informationen angezeigt:
Identität und Verschlüsselung:Die E-Mail-Adresse des Standard-Compute Engine-Dienstkontos 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 mehr über diese Sicherheitsstufe zu erfahren.
Sicherheitslücken:Alle in Ihren Artefakten gefundenen Sicherheitslücken. Klicken Sie auf den Image-Namen (java-guestbook-backend), um die Artefakte aufzurufen, die auf Sicherheitslücken geprüft 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.
Container Scanning API deaktivieren:
gcloud services disable containerscanning.googleapis.com --force
Löschen Sie den
guestbook-backend-dev
-Cloud Run-Dienst:gcloud run services delete guestbook-backend-dev --region=us-central1 \ --project=${PROJECT_ID}
So löschen Sie den Dienst
guestbook-backend-prod
:gcloud run services delete guestbook-backend-prod --region=us-central1 \ --project=${PROJECT_ID}
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}
Dieser Befehl löscht die Bereitstellungspipeline selbst sowie alle
release
- undrollout
-Ressourcen für die Software Supply Chain Security, die für diese Pipeline erstellt wurden.Löschen Sie das Artifact Registry-Repository:
gcloud artifacts repositories delete containers \ --location=us-central1 --async
Das war alles. Sie haben diesen Schnellstart abgeschlossen!