Assured OSS-Pakete werden mit SLSA-Level 2-Compliance erstellt. Die Build-Herkunft wird als Teil der Sicherheitsmetadaten angegeben. Auf dieser Seite wird erläutert, wie Sie die Metadaten zur Build-Herkunft überprüfen.
Dieses Dokument bezieht sich auf die kostenlose Stufe. Informationen zur Build-Herkunft in der Premium-Stufe finden Sie unter Auf Sicherheitsmetadaten zugreifen und Pakete überprüfen.
Hinweise
- Installieren Sie cosign, um die Signatur in der Build-Provenienz zu prüfen.
Authentifizierung einrichten
Informationen zum Einrichten der Authentifizierung finden Sie unter Authentifizierung einrichten.
Build-Herkunft überprüfen
Die Build-Herkunft wird mit einer in-toto-Attestierung signiert, die wiederum das DSSE-Umschlagformat verwendet. Das bedeutet, dass die generierte Signatur die umschlossene Signatur und die Rohdaten enthält.
Tool „aoss-verifier“ verwenden
Um die Herkunft eines Builds zu überprüfen, installieren Sie das Tool aoss-verifier.
Exportieren Sie
$(go env GOPATH)/binund führen Sie den Befehlaoss-verifier verify-packagemit dem Flag--verify_build_provenanceaus.aoss-verifier verify-package \ --language LANGUAGE \ --package_id PACKAGE_ID \ --version VERSION \ --artifact_path ARTIFACT_PATH \ --verify_build_provenance \ [--disable_certificate_verification] \ [--temp_downloads_path TEMP_DOWNLOADS_DIR_PATH] \ [--disable_deletes]Ersetzen Sie Folgendes:
- LANGUAGE: Die Sprache des Pakets. Der Wert muss in Kleinbuchstaben geschrieben werden.
- PACKAGE_ID: Für Java ist das Format groupId:artifactId. Für Python lautet das Format packageName. Der Wert muss in Kleinbuchstaben geschrieben werden.
- VERSION: Die Version des Pakets.
- ARTIFACT_PATH: Der Pfad zur Datendatei in Ihrem lokalen Verzeichnis, die Sie überprüfen möchten. Verwenden Sie die folgenden Dateinamenerweiterungen:
jar-Dateiendung für ein Java-Paketwhl-Dateiendung für ein Python-Paket
--disable_certificate_verificationist ein optionales Flag, mit dem der Abgleich des untergeordneten Zertifikats mit dem Root-Zertifikat über die Zertifikatskette übersprungen wird, sofern es verwendet wird.--temp_downloads_pathist ein optionales Flag, mit dem Sie den Pfad festlegen können, in den Sie die Dateien herunterladen möchten. Ersetzen Sie TEMP_DOWNLOADS_DIR_PATH. Wenn dieses Flag nicht festgelegt ist, werden die Dateien in den Ordnertmp_downloadsim aktuellen Verzeichnis heruntergeladen.--disable_deletesist ein optionales Flag, mit dem die heruntergeladenen Dateien beibehalten werden. Standardmäßig werden alle heruntergeladenen Dateien bereinigt.
Weitere Informationen finden Sie in der README-Datei des Tools.
Manuelle Bestätigung
So prüfen Sie die Herkunft des Builds:
Build-Herkunft abrufen
Je nachdem, wie Sie auf Sicherheitsmetadaten zugreifen, wird unterschiedlich auf die Build-Herkunft zugegriffen.
- Wenn Sie mit Cloud Storage auf Sicherheitsmetadaten zugreifen, ist die Build-Herkunft als Teil der
Build Information-Metadaten im FeldbuildDetailsverfügbar.
Weitere Informationen finden Sie im folgenden Beispiel für Metadaten:
{ "creationTime": "2023-03-25T05:32:23Z", "buildDetails": [ { "packageFileName": "jackson-databind-2.13.3.jar", "envelope": { "payload": "eyJfdHlwZSI6Imh0d……………", "payloadType": "application/vnd.in-toto+json", "signatures": [ "sig": "eyJwYXlsb2FkVHlwZSI6Im……", "keyid": "gcpkms://projects/cloud-aoss/locations/global/keyRings/cloud-aoss-ring/cryptoKeys/tekton-chains" } ] }, "buildProvenance": "{\"_type\":\"https://in-toto.io/Statement/v0.1…" .....- Wenn Sie mit der Artifact Analysis API auf Sicherheitsmetadaten zugreifen, wird die Build-Herkunft im Abschnitt
BuildOccurrenceder Sicherheitsmetadaten gespeichert.
Beispiel für ein Metadaten-Snippet:
{'BuildOccurrence': name: "projects/cloud-aoss/occurrences/06c514bb-1069-4cde-8d68-b1306f19535a" resource_uri: "jackson-databind-2.13.3.jar@sha256:4c01a14673bc1cd4a2df337a3b4e695af0a6ed8ac6be19c9e4077377fb8adf92" note_name: "projects/cloud-aoss/notes/tekton-cloudbuild-intoto" kind: BUILD create_time { seconds: 1665556616 nanos: 891004000 } …… …… } envelope { payload: "{\"_type\":\"https://in-toto.io/Statement/v0.1\", ….." payload_type: "application/vnd.in-toto+json" signatures { sig: "{\"payloadType\":\"application/vnd.in-toto+json\",....." keyid: "gcpkms://projects/cloud-aoss/locations/global/keyRings/cloud-aoss-ring/cryptoKeys/tekton-chains" } } , …- Wenn Sie mit Cloud Storage auf Sicherheitsmetadaten zugreifen, ist die Build-Herkunft als Teil der
Rufen Sie die Signatur der Build-Herkunft ab.
Die Build-Herkunft enthält einen Abschnitt mit dem Namen Envelope, der Signaturen als EnvelopeSignature enthält. So rufen Sie die Signatur ab:
- Speichern Sie die
sig-Daten in einer Datei mit dem Namensignature.txt. Prüfen Sie, ob die Metadaten mit dem Metadatenskript heruntergeladen werden.
Wenn die Metadaten mit dem Metadatenskript heruntergeladen werden, ändern Sie die Signatur und speichern Sie sie in einer anderen Datei mit dem Namen
signature.sig.Führen Sie den folgenden Befehl aus, um die Signatur zu ändern:
cat signature.txt | sed -e 's/\\"/"/g' > signature.sigWenn die Metadaten nicht mit dem Metadatenskript heruntergeladen werden, dekodieren Sie die Signatur und speichern Sie sie in einer anderen Datei mit dem Namen
signature.sig.Verwenden Sie den folgenden Befehl, um die Signatur zu decodieren:
cat signature.txt | tr '\-_' '+/' | base64 -d > signature.sig
- Speichern Sie die
Rufen Sie den öffentlichen Schlüssel für die Build-Herkunft ab.
Der Abschnitt EnvelopeSignature in der Build-Provenienz enthält den Verweis auf den Schlüssel, der zum Signieren der Build-Provenienz verwendet wird. Der Schlüssel wird in einem der folgenden Formate gespeichert:
gcpkms://projects/cloud-aoss/locations/global/keyRings/cloud-aoss-ring/cryptoKeys/KEY_NAMEgcpkms://projects/cloud-aoss/locations/global/keyRings/cloud-aoss-ring/cryptoKeys/KEY_NAME/cryptoKeyVersions/KEY_VERSIONDabei sind KEY_NAME und KEY_VERSION der Name und die Version des Cloud Key Management Service-Schlüssels.
Der öffentliche Schlüssel wird in einem Cloud Storage-Bucket gespeichert, der Assured OSS gehört.
Rufen Sie den öffentlichen Schlüssel mit der Google Cloud CLI ab. Verwenden Sie einen der folgenden Befehle:
Wenn nur KEY_NAME vorhanden ist:
gcloud storage cp gs://cloud-aoss/keys/KEY_NAME-public.pem PATH_TO_LOCAL_STOREWenn sowohl KEY_NAME als auch KEY_VERSION vorhanden sind:
gcloud storage cp gs://cloud-aoss/keys/KEY_NAME-KEY_VERSION-public.pem PATH_TO_LOCAL_STORE
Ersetzen Sie Folgendes :
- KEY_NAME durch den Namen des Cloud Key Management Service-Schlüssels.
- KEY_VERSION durch die Version des Cloud Key Management Service-Schlüssels.
- PATH_TO_LOCAL_STORE durch den Namen des lokalen Pfads zum Speichern des öffentlichen Schlüssels.
Signatur der Herkunft überprüfen
Führen Sie den folgenden Befehl aus, um die Signatur zu prüfen:
cosign verify-blob-attestation --insecure-ignore-tlog --key KEY_REF --signature signature.sig --type slsaprovenance --check-claims=false /dev/nullErsetzen Sie Folgendes:
- KEY_REF: Der Pfad zum öffentlichen Schlüssel, den Sie im vorherigen Schritt heruntergeladen haben.
- signature.sig: Die Datei mit der im vorherigen Schritt abgerufenen Signatur.
Nachdem der Befehl erfolgreich ausgeführt wurde, wird die folgende Ausgabe zurückgegeben:
Verified OKWenn Sie auch den mit der Herkunft verknüpften Artefakthash prüfen möchten, verwenden Sie den folgenden Befehl:
cosign verify-blob-attestation --insecure-ignore-tlog --key KEY_REF --signature signature.sig --type slsaprovenance --check-claims=true ARTIFACT_PATHErsetzen Sie Folgendes:
- KEY_REF: Der Pfad zum öffentlichen Schlüssel, den Sie im vorherigen Schritt heruntergeladen haben.
- signature.sig: Die Datei mit der im vorherigen Schritt abgerufenen Signatur.
- ARTIFACT_PATH: Der Pfad zum Artefakt.
Nachdem der Befehl erfolgreich ausgeführt wurde, wird die folgende Ausgabe zurückgegeben:
Verified OK