Utilizzare le impronte per verificare le identità delle versioni dei pacchetti

Puoi utilizzare le impronte digitali degli artefatti per identificare in modo univoco i pacchetti nei repository di Artifact Registry.

Quando esegui il push di un pacchetto in un repository, Artifact Registry calcola un'impronta digitale per quella versione del pacchetto. L'impronta digitale è un riferimento crittograficamente immutabile che puoi utilizzare per verificare che il pacchetto non sia stato modificato durante lo spostamento tra i Google Cloud sistemi, ad esempio Compute Engine e Cloud Build. Dopo aver recuperato l'impronta digitale del pacchetto, puoi utilizzarla per assicurarti che il pacchetto sia valido durante determinate richieste API Artifact Registry. Puoi anche convalidare le istanze locali e del repository dello stesso pacchetto calcolando manualmente l'impronta digitale locale e confrontandola con l'impronta digitale nel repository.

Prima di iniziare

  1. Abilita Artifact Registry, inclusa l'abilitazione dell'API Artifact Registry e l'installazione di Google Cloud CLI.
  2. (Facoltativo) Configura le impostazioni predefinite per i comandi gcloud.

Ruoli obbligatori

Per ottenere le autorizzazioni necessarie per visualizzare le impronte digitali delle versioni dei pacchetti nei repository di Artifact Registry, chiedi all'amministratore di concederti il ruolo IAM Artifact Registry Reader (roles/artifactregistry.reader) sul Google Cloud progetto. Per saperne di più sulla concessione dei ruoli, consulta Gestisci l'accesso a progetti, cartelle e organizzazioni.

Potresti anche riuscire a ottenere le autorizzazioni richieste tramite i ruoli personalizzati o altri ruoli predefiniti.

Recuperare l'impronta digitale di una versione del pacchetto nel repository

Le impronte digitali hanno la seguente struttura:

VERSION@DIRSUM_SHA256:HASH_VALUE

Per recuperare l'impronta digitale di una versione del pacchetto in un repository di Artifact Registry, inserisci quanto segue in Google Cloud CLI:

gcloud artifacts versions describe VERSION --repository=REPOSITORY --location=LOCATION --package=PACKAGE_NAME

Dove:

  • VERSION è la versione del pacchetto, ad esempio 1.0543.
  • REPOSITORY è il repository contenente il pacchetto che stai valutando.
  • LOCATION è la località regionale o multiregionale location del repository. Puoi omettere questo flag se hai impostato una località predefinita.
  • PACKAGE_NAME è il nome del pacchetto.

La risposta è simile alla seguente:

fingerprints:
- type: DIRSUM_SHA256
  value: 7c07b910c6dd6df6984a5591d00ad0074fe24cd81145d2c681cdfda3b3d65a04
name: projects/test-project/locations/us-west1/repositories/test-repo/packages/test-pkg/versions/v1
updateTime: '2025-08-15T00:03:41.809228Z'

L'indirizzo completo dell'impronta digitale è la versione del pacchetto seguita dal tipo di impronta digitale e poi dal valore hash. In questo esempio, l'indirizzo dell'impronta digitale è VERSION@DIRSUM_SHA256:7c07b910c6dd6df6984a5591d00ad0074fe24cd81145d2c681cdfda3b3d65a04.

Convalidare le impronte digitali come riferimenti immutabili nell'API Artifact Registry

Alcune richieste API Artifact Registry convalidano un pacchetto dal repository se l'impronta digitale del pacchetto è formattata come segue:

VERSION@DIRSUM_SHA256:HASH_VALUE

Ad esempio, vuoi creare un allegato a un pacchetto nel repository. Nel comando seguente, il pacchetto definito per target è formattato in modo che Artifact Registry convalidi anche l'impronta digitale del pacchetto:

  gcloud artifacts attachments create my-attachment --target='projects/test-project/locations/us-west1/repositories/test-repo/packages/test-pkg/versions/v1@dirsum_sha256:30330c6b65a26ebf1a13e1b9ded4068b4c36d72ed3b62226e3243b5bee18fd31' --attachment-type="application/vnd.in-toto+json" --attachment-namespace="mynamespace.com" --files=att.txt

Se l'impronta digitale fornita non corrisponde all'impronta digitale della versione corrente, Artifact Registry rifiuta la richiesta API e mostra un errore failed_precondition.

Le seguenti richieste convalidano le impronte digitali fornite quando vengono passate utilizzando le librerie API, Google Cloud CLI e curl:

Le seguenti richieste convalidano le impronte digitali quando vengono passate utilizzando le librerie API e curl:

Verificare che le istanze locali e del repository di un pacchetto siano le stesse

Per verificare che un pacchetto non sia stato modificato durante lo spostamento tra i Google Cloud sistemi, calcola manualmente l'impronta digitale di un'istanza del pacchetto al di fuori del repository.

Per calcolare manualmente un'impronta digitale:

  1. Trova l'impronta digitale del pacchetto in Artifact Registry come descritto in Visualizzare l'impronta digitale di un pacchetto nel repository.

  2. Calcola manualmente l'impronta digitale del pacchetto esterno:

    1. Ottieni il nome breve del file e l'hash SHA256 individuale di ogni file nel pacchetto:

      1. Apri la pagina Repository nella Google Cloud console:

        Apri la pagina Repositori

      2. Seleziona il repository, quindi l'immagine che contiene la versione del pacchetto che vuoi convalidare.

      3. Fai clic sulla scheda File.

      4. Identifica il nome breve del file e l'hash SHA256 di ogni file mostrato nella pagina. Il nome breve del file è la stringa finale che segue la posizione del file. Ad esempio, lo screenshot seguente mostra sei file per una Version 5.0 di un pacchetto in un repository Maven. Ogni nome file inizia con my-app-5.0. Il valore hash di ogni file è mostrato nella colonna Hashes:

        Un esempio della scheda **File** per la versione 5.0 di un pacchetto Maven.

    2. Ordina i file alfabeticamente per nome breve del file.

    3. Per ogni voce di file ordinata, combina le informazioni del file nella seguente stringa abbreviata, aggiungendo due spazi tra il valore hash e il nome del file e terminando con un byte null:

      HASH_VALUE FILE_NAME/0

    4. Prendi ogni stringa abbreviata e combinale in una sequenza completa, senza spazi o caratteri tra le stringhe.

    5. Calcola il valore hash SHA256 della sequenza completa. Il valore hash SHA256 finale è il dirsum_sha256 del pacchetto esterno.

  3. Confronta l'impronta digitale calcolata manualmente e l'impronta digitale del pacchetto nel repository. Se entrambe le impronte digitali sono uguali, l'istanza del pacchetto nel repository non è stata modificata.