In Cloud Run bereitstellen und Sicherheitsinformationen ansehen
In dieser Kurzanleitung wird erläutert, wie Sie ein Container-Image in Cloud Run bereitstellen und sich die Sicherheitsinformationen für die Bereitstellung im Bereich Sicherheit von Software Delivery Shield in der Google Cloud Console 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 das Deployment an:
- Informationen zur Identität und Verschlüsselung der Bereitstellung.
- SLSA-Ebene (Supply-Chain Levels for Software Artifacts): gibt den Grad der Sicherheit 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 enthält Details wie die Digests der erstellten Images, die Speicherorte der Eingabequellen, die Build-Toolchain, Build-Schritte und die Build-Dauer.
Hinweise
- 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.
- Installieren Sie die Google Cloud CLI.
-
Führen Sie folgenden Befehl aus, um die gcloud CLI zu initialisieren:
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.
-
-
Die Abrechnung für das Google Cloud-Projekt muss aktiviert sein.
-
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 - Installieren Sie die Google Cloud CLI.
-
Führen Sie folgenden Befehl aus, um die gcloud CLI zu initialisieren:
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.
-
-
Die Abrechnung für das Google Cloud-Projekt muss aktiviert sein.
-
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
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 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 beim Hinzufügen einer dieser Rollen Probleme auftreten, wenden Sie sich an Ihren Projektadministrator.
Docker-Repository in Artifact Registry erstellen
Erstellen Sie am Speicherort
us-central1
ein neues Docker-Repository namenscontainers
mit der Beschreibung „Docker repository“:gcloud artifacts repositories create containers --repository-format=docker \ --location=us-central1 --description="Docker repository"
Prüfen Sie, ob das Repository erstellt wurde:
gcloud artifacts repositories list
In der Liste der angezeigten Repositories sollte
containers
angezeigt werden.
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.
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
Java-Anwendung mit Cloud Build erstellen und containerisieren Mit dem folgenden Befehl wird die Java-Anwendung erstellt und containerisiert. Der erstellte Container wird 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, auf die sich Ihre Software stützt. 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
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.
Wenn Sie prüfen möchten, ob Ihre Pipeline vorhanden ist, rufen Sie in der Google Cloud Console die Seite Bereitstellungspipelines auf:
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 beobachten. Die Seite Details zur Bereitstellungspipeline wird geöffnet.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 zur Bereitstellungspipeline angezeigt.
Beobachten Sie auf der Seite Details zur Bereitstellungspipeline die Ansicht Pipelinevisualisierung, bis für
dev-cluster
die Schaltfläche Hochstufen angezeigt wird. Möglicherweise müssen Sie die Seite aktualisieren.Klicken Sie für das erste Ziel in der Bereitstellungspipeline-Visualisierung (
cloudrun-dev
) auf Hochstufen.Das Dialogfeld Release hochstufen wird angezeigt. Sie enthält die Details des Ziels, auf das Sie hochstufen.
Klicken Sie auf Hochstufen.
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:
Sicherheitsinformationen 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 zu Bereitstellungspipelines 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.
Sie sehen den Bereich Sicherheit von Software Delivery Shield für die Bereitstellung.
In diesem Bereich werden die folgenden Informationen angezeigt:
SLSA-Level:Dieser Build hat das SLSA-Level 3 erreicht. Klicken Sie auf den Link Weitere Informationen, um zu erfahren, was dieses Sicherheitsniveau bedeutet.
Sicherheitslücken: Alle Sicherheitslücken in Ihren Artefakten. Klicken Sie auf den Image-Namen (java-guestbook-backend), um die Artefakte anzuzeigen, 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.
Sicherheitsinformationen in Cloud Run ansehen
Öffnen Sie die Cloud Run-Seite Dienste.
Klicken Sie in der Tabelle Dienste von Cloud Run auf guestbook-backend-prod.
Klicken Sie auf der Seite Dienstdetails auf Überarbeitungen.
Klicken Sie im Bereich Überarbeitungen auf Sicherheit.
Sie sehen den Bereich Sicherheit von Software Delivery Shield für die Bereitstellung.
In diesem Bereich werden die folgenden Informationen angezeigt:
Identität und Verschlüsselung: Die E-Mail-Adresse des Compute Engine-Standarddienstkontos und der Verschlüsselungsschlüssel, der für die Bereitstellung verwendet wird.
SLSA-Level:Dieser Build hat das SLSA-Level 3 erreicht. Klicken Sie auf den Link Weitere Informationen, um zu erfahren, was dieses Sicherheitsniveau bedeutet.
Sicherheitslücken: Alle Sicherheitslücken in Ihren Artefakten. Klicken Sie auf den Image-Namen (java-guestbook-backend), um die Artefakte anzuzeigen, 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.
Deaktivieren Sie die Container Scanning API:
gcloud services disable containerscanning.googleapis.com --force
Löschen Sie den Cloud Run-Dienst
guestbook-backend-dev
:gcloud run services delete guestbook-backend-dev --region=us-central1 \ --project=${PROJECT_ID}
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 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
- undrollout
-Ressourcen gelöscht. Die Sicherheit der Softwarelieferkette, die für diese Pipeline erstellt wurde, wird ebenfalls gelöscht.Löschen Sie das Artifact Registry-Repository:
gcloud artifacts repositories delete containers \ --location=us-central1 --async
Das war alles. Sie haben diesen Schnellstart abgeschlossen!