Sie können SLSA-Atteste (Supply-chain Levels for Software Artifacts) für die Build-Herkunft Ihrer benutzerdefinierten Betriebssystem-Images überprüfen, um die Integrität der Softwarelieferkette zu gewährleisten.
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 Pipeline-Quellcode, die Konfigurationen, die Ausführungsparameter und das während der Kompilierung verwendete Basis-Image beschrieben werden. Durch die Überprüfung der Build-Herkunft wird bestätigt, dass Ihre Images von vertrauenswürdigen Pipelines sicher und ohne unbefugte Manipulationen 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 Cloud de Confiance by S3NS 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 Cloud de Confiance Console auf Cloud de Confiance by S3NS Dienste und APIs zugreifen, müssen Sie die Authentifizierung nicht einrichten.
gcloud
-
Installieren Sie die Google Cloud CLI und melden Sie sich dann mit Ihrer föderierten Identität in der gcloud CLI an. Nach der Anmeldung initialisieren Sie die Google Cloud CLI mit dem folgenden Befehl:
gcloud init
-
- 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 und melden Sie sich dann mit Ihrer föderierten Identität in der gcloud CLI an.
Weitere Informationen finden Sie in der Dokumentation zur Cloud de Confiance -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 überprüfen
Sie können die Daten zur Build-Herkunft und die Ausführungsartefakte entweder mit der Cloud de Confiance -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 Cloud de Confiance 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 Quellbasisbild aufgezeichnet.
Console (Artifact Registry)
So rufen Sie die Build-Herkunft direkt in Artifact Registry auf:
Rufen Sie in der Cloud de Confiance 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 Quellbild aufgezeichnet.
gcloud
In Artifact Registry werden Herkunftsnachweise als Anhänge neben den generischen Image-Tarballs gespeichert.
Da die Bestätigung 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 Versions-ID, die in Schritt 1 zurückgegeben wurde, 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 den im vorherigen Schritt abgerufenenfiles:-Anhangspfad.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.