Sie können SLSA-Attestierungen (Supply-chain Levels for Software Artifacts) für die Build-Herkunft Ihrer benutzerdefinierten Betriebssystem-Images überprüfen, um die Integrität der Softwarelieferkette sicherzustellen.
Wenn Sie Ihre Image Builder-Pipeline so konfigurieren, dass die Ausgabe in Artifact Registry erfolgt, und Überprüfungsoptionen aktivieren, generiert Cloud Build automatisch eine kryptografische Attestierung, in der der genaue Quellcode der Pipeline, die Konfigurationen, die Ausführungsparameter und das während der Kompilierung verwendete Basis-Image beschrieben werden. Durch die Überprüfung dieser Build-Herkunft wird bestätigt, dass Ihre Images sicher und ohne unbefugte Manipulationen von vertrauenswürdigen Pipelines erstellt wurden.
Hinweis
- Führen Sie die Einrichtungsschritte für die Umgebung unter Umgebung vorbereiten aus.
-
Richten Sie die Authentifizierung ein, falls Sie dies noch nicht getan haben.
Bei der Authentifizierung wird Ihre Identität für den Zugriff auf Google Cloud Dienste und APIs überprüft. Zur Ausführung von Code oder Beispielen aus einer lokalen Entwicklungsumgebung können Sie sich so bei Compute Engine authentifizieren:
Wählen Sie den Tab für die geplante Verwendung der Beispiele auf dieser Seite aus:
Console
Wenn Sie über die Google Cloud Console auf Google Cloud -Dienste und -APIs zugreifen, müssen Sie die Authentifizierung nicht einrichten.
gcloud
-
Installieren Sie die Google Cloud CLI. Initialisieren Sie die Google Cloud CLI nach der Installation mit dem folgenden Befehl:
gcloud initWenn Sie einen externen Identitätsanbieter (IdP) verwenden, müssen Sie sich zuerst mit Ihrer föderierten Identität in der gcloud CLI anmelden.
-
- Legen Sie eine Standardregion und -zone fest.
REST
Wenn Sie die REST API-Beispiele auf dieser Seite in einer lokalen Entwicklungsumgebung verwenden möchten, verwenden Sie die Anmeldedaten, die Sie der gcloud CLI bereitstellen.
Installieren Sie die Google Cloud CLI.
Wenn Sie einen externen Identitätsanbieter (IdP) verwenden, müssen Sie sich zuerst mit Ihrer föderierten Identität in der gcloud CLI anmelden.
Weitere Informationen finden Sie in der Dokumentation zur Google Cloud -Authentifizierung unter Für die Verwendung von REST authentifizieren.
Erforderliche Rollen
Bitten Sie Ihren Administrator, Ihnen die folgenden IAM-Rollen für das Projekt zuzuweisen, damit Sie die nötigen Berechtigungen zum Aufrufen und Überprüfen von Herkunftsnachweisen für Builds haben:
- Artifact Registry-Leser (
roles/artifactregistry.reader) - Cloud Build-Betrachter (
roles/cloudbuild.builds.viewer)
Weitere Informationen zum Zuweisen von Rollen finden Sie unter Zugriff auf Projekte, Ordner und Organisationen verwalten.
Sie können die erforderlichen Berechtigungen auch über benutzerdefinierte Rollen oder andere vordefinierte Rollen erhalten.
Generierung der Herkunft konfigurieren
Damit die Build-Herkunft generiert wird, müssen Sie die Blöcke substitutions, options, results und artifacts in Ihrer Datei cloudbuild.yaml wie im folgenden Snippet konfigurieren:
substitutions:
# 1. Specify your output path and target Artifact Registry resource URI
_IMAGE_OUTPUT_PATH: 'image-builder/binaryOut'
_ARTIFACT_REGISTRY_RESOURCE_URI: 'projects/PROJECT_ID/locations/REGION/repositories/REPOSITORY_NAME/packages/PACKAGE_NAME/versions/v${BUILD_ID}'
steps:
# 2. Configure step results and base image attestations
- name: 'REGION-docker.pkg.dev/image-builder-official/release/builder:stable'
script: |
#!/usr/bin/env bash
/build
id: 'imagebuilder-customize'
results:
- name: image_builder_telemetry_metrics
- name: base_image
attestationType: "https://cloudbuild.googleapis.com/attestations/build_content_restrictions"
attestationContent: base_image
options:
# 3. Enable Cloud Logging and cryptographic provenance generation
logging: CLOUD_LOGGING_ONLY
requestedVerifyOption: VERIFIED
artifacts:
# 4. Upload generic image artifacts and provenance to Artifact Registry
generic_artifacts:
- folder: '${_IMAGE_OUTPUT_PATH}'
registry_path: '${_ARTIFACT_REGISTRY_RESOURCE_URI}'
Herkunftsdaten prüfen
Sie können die Daten zur Build-Herkunft und die Ausführungsartefakte entweder mit der Google Cloud -Konsole oder mit der Google Cloud CLI ansehen und überprüfen:
Konsole (Cloud Build)
So rufen Sie die Build-Herkunft und Ausgabeartefakte über den Cloud Build-Build-Verlauf auf:
Rufen Sie in der Google Cloud Console die Seite Cloud Build auf.
Klicken Sie auf Verlauf und wählen Sie die Build-ID für den Lauf Ihrer Image-Pipeline aus. Auf der Build-Detailseite werden Logs für die drei Prozessschritte (
imagebuilder-customize,imagebuilder-validateundimagebuilder-publish) angezeigt.Klicken Sie auf den Tab Build-Artefakte, um das während der Ausführung erstellte Betriebssystem-Image zu sehen.
Klicken Sie auf den Tab Anhänge, um die signierten SLSA-Herkunftsnachweisdateien und Ergebnisdateien aufzurufen. In der Ergebnisdatei wird das während der Ausführung verwendete Basis-Quellbild aufgezeichnet.
Console (Artifact Registry)
So rufen Sie die Build-Herkunft direkt in Artifact Registry auf:
Rufen Sie in der Google Cloud Console die Seite Artifact Registry auf.
Klicken Sie in der Liste der Repositories auf den Namen Ihres generischen Repositorys.
Klicken Sie in der Paketliste auf den Namen Ihres Betriebssystem-Image-Pakets.
Klicken Sie in der Liste des Versionsverlaufs auf die Versions-ID (
v${BUILD_ID}) für Ihre Pipelineausführung.Klicken Sie auf den Tab Anhänge, um die signierten SLSA-Herkunftsnachweisdateien und Ergebnisdateien für diese Bildversion aufzurufen. In der Ergebnisdatei wird das während der Ausführung verwendete Basisquellbild aufgezeichnet.
gcloud
In Artifact Registry werden Herkunftsnachweise als Anhänge neben den generischen Bild-Tarballs gespeichert.
Da die Attestierung als Dead Simple Signing Envelope (DSSE) formatiert ist, ist die eigentliche Nutzlast der Herkunftserklärung im JSON-Dokument base64-codiert. So lesen Sie die Details mit der gcloud CLI und dem jq-Dienstprogramm:
Listen Sie die Versionen Ihres Pakets auf, um die spezifische Build-ID-Version zu finden, die Sie überprüfen möchten. Führen Sie dazu den
gcloud artifacts versions list-Befehl aus:gcloud artifacts versions list \ --package=PACKAGE_NAME \ --repository=REPOSITORY_NAME \ --location=REPOSITORY_LOCATION \ --project=PROJECT_IDErsetzen Sie Folgendes:
PACKAGE_NAME: Der Name des Pakets in Ihrem Artifact Registry-Repository, z. B.my-custom-image.REPOSITORY_NAME: Der Name Ihres generischen Artifact Registry-Repositorys, z. B.custom-os-images.REPOSITORY_LOCATION: Die Region Ihres Repositorys, z. B.us-central1.PROJECT_ID: Ihre Projekt-ID.
Führen Sie den Befehl
gcloud artifacts attachments listaus, um die Metadaten der Anhänge abzufragen, die der Zielpaketversion entsprechen:gcloud artifacts attachments list \ --target=projects/PROJECT_ID/locations/REPOSITORY_LOCATION/repositories/REPOSITORY_NAME/packages/PACKAGE_NAME/versions/vBUILD_ID \ --repository=REPOSITORY_NAME \ --location=REPOSITORY_LOCATION \ --project=PROJECT_IDErsetzen Sie
BUILD_IDdurch die im ersten Schritt zurückgegebene Versions-ID, z. B.12345.Suchen Sie in der Befehlsausgabe nach dem Anhangseintrag, dessen Feld
namebuild-result(mittype: application/vnd.in-toto+json) enthält, und kopieren Sie den unterfiles:aufgeführten Pfad, z. B.:projects/PROJECT_ID/locations/REPOSITORY_LOCATION/repositories/REPOSITORY_NAME/files/sha256:SHA256_HASHLaden Sie die JSON-Metadaten-Anhangsnutzlast aus Ihrem Repository herunter, indem Sie den
gcloud artifacts files download-Befehl ausführen:gcloud artifacts files download ATTACHMENT_FILE_ID \ --repository=REPOSITORY_NAME \ --location=REPOSITORY_LOCATION \ --project=PROJECT_ID \ --destination=./provenance.jsonErsetzen Sie
ATTACHMENT_FILE_IDdurch denfiles:-Anhangspfad, der im vorherigen Schritt abgerufen wurde.Führen Sie den folgenden Befehl aus, um den Inhalt der JSON-Nutzlast zu isolieren, mit Base64 zu decodieren und zu formatieren:
cat ./provenance.json | jq -r '.payload' | base64 --decode | jq
Die Ausgabe enthält Parameter im Standard-SLSA-Format, die den Build-Trigger, Details zum Rezept-Repository, verwendete Container-Images, Build-Hashes und Basis-Image-Attribute hervorheben.