Configura i criteri di pulizia

Questo documento descrive come creare e gestire le policy di pulizia.

Ruoli obbligatori

Per ottenere le autorizzazioni necessarie per applicare o rimuovere le policy di pulizia, chiedi all'amministratore di concederti il ruolo IAM Amministratore Artifact Registry (roles/artifactregistry.admin) nel progetto del repository. Per saperne di più sulla concessione dei ruoli, consulta Gestisci l'accesso a progetti, cartelle e organizzazioni.

Questo ruolo predefinito contiene le autorizzazioni necessarie per applicare o rimuovere le policy di pulizia. Per vedere quali sono esattamente le autorizzazioni richieste, espandi la sezione Autorizzazioni obbligatorie:

Autorizzazioni obbligatorie

Per applicare o rimuovere le policy di pulizia sono necessarie le seguenti autorizzazioni:

  • artifactregistry.repositories.update
  • Per eliminare gli artefatti che soddisfano i criteri di una policy di pulizia: artifactregistry.versions.delete

Potresti anche ottenere queste autorizzazioni con ruoli personalizzati o altri ruoli predefiniti.

Il ruolo predefinito per l'agente di servizio Artifact Registry include l'autorizzazione artifactregistry.versions.delete, necessaria per eliminare le immagini che soddisfano i criteri di una policy di pulizia.

Creare un file di criteri

Un file di criteri è un file JSON che definisce i criteri di eliminazione e conservazione. Puoi creare un file di policy creando e modificando un file JSON, quindi utilizzando Google Cloud CLI per applicare la policy oppure utilizzando la console Google Cloud . Le policy di eliminazione specificano le condizioni per l'eliminazione degli artefatti. I criteri di conservazione specificano le condizioni per conservare un artefatto o un numero di versioni recenti da conservare. Non puoi utilizzare le condizioni e le versioni più recenti nella stessa norma di conservazione.

Crea una policy di eliminazione

Un criterio di eliminazione ti consente di specificare l'età minima o massima per l'eliminazione degli artefatti e criteri di filtro aggiuntivi per limitare il criterio a artefatti specifici.

Se hai determinati artefatti che non vuoi eliminare per nessun motivo, crea un criterio di conservazione condizionale o un criterio di conservazione delle versioni più recenti, nonché un criterio di eliminazione. Se un artefatto corrisponde ai criteri sia della policy di eliminazione sia della policy di conservazione, l'artefatto viene conservato.

console

Puoi creare una norma di eliminazione per un repository nuovo o esistente.

Per aggiungere una norma di eliminazione a un repository esistente:

  1. Apri la pagina Repository nella console Google Cloud .

    Apri la pagina Repositori

  2. Nell'elenco dei repository, seleziona il repository e fai clic su Modifica repository.

  3. Nella sezione Policy di pulizia, seleziona Dry run per testare la nuova policy prima di eliminare gli artefatti. Per saperne di più sulla visualizzazione dei risultati del test, consulta Prova generale.

    Una volta verificato che il criterio funzioni come previsto, modifica di nuovo le impostazioni del repository e seleziona Elimina artefatti per applicare il criterio di pulizia ed eliminare gli artefatti selezionati.

  4. Fai clic su Aggiungi una policy di pulizia e aggiungi quanto segue:

    • Nome: assegna un nome alla policy di pulizia. Il nome deve essere univoco all'interno del gruppo di policy che applichi a un repository.
    • Tipo di policy: seleziona Eliminazione condizionale.
    • Stato del tag: indica se la norma deve controllare gli artefatti taggati o non taggati. Gli artefatti vengono taggati quando viene eseguito il push o il pull di un'immagine da o verso un repository. Per saperne di più sui tag Docker, consulta Concetti relativi ai container.

      • Qualsiasi stato del tag: ignora lo stato del tag e si applica sia agli artefatti taggati sia a quelli non taggati.
      • Taggati: si applica solo agli artefatti taggati.
      • Senza tag: si applica solo agli elementi senza tag.

      I formati che non supportano i tag vengono trattati come untagged. Se un repository ha abilitato i tag immutabili, gli artefatti con tag non possono essere eliminati.

      Per saperne di più sullo stato dei tag in relazione alle policy di pulizia, consulta la documentazione di riferimento di TagState.

  5. Di seguito sono riportati modi facoltativi per definire le norme di eliminazione:

    • Prefissi dei tag: è un elenco separato da virgole di prefissi dei tag. Ad esempio, i prefissi test e staging corrisponderebbero a immagini con i tag testenv e staging-1.5. tagState deve essere impostato su TAGGED per utilizzare i prefissi dei tag.
    • Prefissi di versione: - è un elenco separato da virgole dei prefissi di versione dell'artefatto. Ad esempio, v1, v2 corrisponde alle versioni v1.5, v2.0alpha e v10.2.
    • Prefissi pacchetto: è un elenco di prefissi dei nomi degli artefatti. Puoi inserire più prefissi premendo Enter o , tra i prefissi. Ad esempio, red, blue creerebbe due prefissi, red e blue, e corrisponderebbe ai nomi degli artefatti red-team, redis e bluebird.
    • Precedente a: è il tempo minimo trascorso dalla creazione della versione di un artefatto nel repository, specificato come durata. Ad esempio, 30d è di 30 giorni. Puoi specificare durate in secondi, minuti, ore o giorni aggiungendo rispettivamente s, m, h o d.
    • Più recente di: è il tempo massimo trascorso dalla creazione della versione di un artefatto nel repository, specificato come durata. Ad esempio, 30d è di 30 giorni.
  6. Puoi aggiungere altre policy di pulizia facendo clic su Aggiungi una policy di pulizia.

  7. Fai clic su Aggiorna.

    I criteri di pulizia vengono applicati al repository. Puoi visualizzare le tue norme di pulizia nella sezione Dettagli repository facendo clic su Mostra altro.

JSON

{
  "name": "DELETE_POLICY_NAME",
  "action": {"type": "Delete"},
  "condition": {
    "tagState": "TAG_STATUS",
    "tagPrefixes": ["TAG_PREFIXES"],
    "versionNamePrefixes": ["VERSION_PREFIXES"],
    "packageNamePrefixes": ["PACKAGE_PREFIXES"],
    "olderThan": "OLDER_THAN_DURATION",
    "newerThan": "NEWER_THAN_DURATION"
  }
}

Una norma di eliminazione deve includere un nome, un'azione e almeno una condizione.

name
Nello snippet di eliminazione del criterio, DELETE_POLICY_NAME è il nome del criterio. Il nome deve essere univoco all'interno del gruppo di criteri che applichi a un repository.
action
Per una norma di eliminazione, il valore è {"type": "Delete"}.
condition
Specifica una o più delle seguenti condizioni:
  • tagState: TAG_STATUS indica se la norma deve controllare gli artefatti taggati o non taggati. Gli artefatti vengono taggati quando viene eseguito il push o il pull di un'immagine da o verso un repository. I valori supportati sono:

    • tagged: si applica solo agli artefatti taggati.
    • untagged: si applica solo agli artefatti senza tag.
    • any: ignora lo stato del tag e si applica sia agli artefatti taggati che a quelli non taggati.

    I formati che non supportano i tag vengono trattati come untagged. Se in un repository sono abilitati i tag immutabili, gli artefatti taggati non possono essere eliminati.

    Per saperne di più sui tag Docker, consulta la sezione Concetti relativi ai container.

  • tagPrefixes: TAG_PREFIXES è un elenco separato da virgole di prefissi dei tag. Ad esempio, "test", "staging" corrisponderebbe alle immagini con i tag "testenv" e "staging-1.5". tagState deve essere impostato su TAGGED per utilizzare i prefissi dei tag.

  • versionNamePrefixes: VERSION_PREFIXES è un elenco separato da virgole di prefissi della versione dell'artefatto. Ad esempio, "v1", "v2" corrisponderebbe alle versioni "v1.5", "v2.0alpha" e "v10.2".

  • packageNamePrefixes: PACKAGE_PREFIXES è un elenco separato da virgole di prefissi dei nomi degli artefatti. Ad esempio, "red", "blue" corrisponderebbe ai nomi degli artefatti "red-team", "redis" e "bluebird".

  • olderThan: OLDER_THAN_DURATION è il tempo minimo trascorso dalla creazione della versione di un artefatto nel repository, specificato come durata. Ad esempio, 30d è di 30 giorni. Puoi specificare durate in secondi, minuti, ore o giorni aggiungendo rispettivamente s, m, h o d.

  • newerThan: NEWER_THAN_DURATION è il tempo massimo trascorso dalla creazione della versione di un artefatto nel repository, specificato come durata. Ad esempio, 30d è di 30 giorni.

Artifact Registry esegue dry run e esecuzioni attive delle policy di pulizia utilizzando un job in background eseguito periodicamente. Le modifiche diventano effettive entro circa un giorno.

Crea una policy di conservazione condizionale

Un criterio di conservazione condizionale specifica i criteri per la conservazione degli artefatti. I criteri di conservazione funzionano con i criteri di eliminazione per conservare gli artefatti che verrebbero eliminati in base alle specifiche dei criteri di eliminazione, ma che vuoi conservare. Quando un artefatto corrisponde ai criteri sia di una policy di eliminazione sia di una policy di conservazione, l'artefatto viene conservato.

console

Puoi creare una norma di conservazione per un repository nuovo o esistente.

Per aggiungere una norma di conservazione a un repository esistente:

  1. Apri la pagina Repository nella console Google Cloud .

    Apri la pagina Repositori

  2. Nell'elenco dei repository, seleziona il repository e fai clic su Modifica repository.

  3. Nella sezione Policy di pulizia, seleziona Dry run per testare la nuova policy prima di eliminare gli artefatti. Per visualizzare i risultati della norma di conservazione, devi impostare almeno una norma di eliminazione. Per saperne di più sulla visualizzazione dei risultati del test, consulta Prova generale.

    Una volta verificato che le norme funzionano come previsto, modifica di nuovo le impostazioni del repository e seleziona Elimina artefatti per applicare le norme di pulizia ed eliminare gli artefatti selezionati.

  4. Fai clic su Aggiungi una policy di pulizia e aggiungi quanto segue:

    • Nome: assegna un nome alla policy di pulizia. Il nome deve essere univoco all'interno del gruppo di policy che applichi a un repository.
    • Tipo di policy: seleziona Conservazione condizionale.
    • Stato del tag: indica se la norma deve controllare gli artefatti taggati o non taggati. Gli artefatti vengono taggati quando viene eseguito il push o il pull di un'immagine da o verso un repository. Per saperne di più sui tag Docker, consulta Concetti relativi ai container.

      • Qualsiasi stato del tag: ignora lo stato del tag e si applica sia agli artefatti taggati sia a quelli non taggati.
      • Taggati: si applica solo agli artefatti taggati.
      • Senza tag: si applica solo agli elementi senza tag.

      I formati che non supportano i tag vengono trattati come untagged. Se un repository ha abilitato i tag immutabili, gli artefatti con tag non possono essere eliminati. Per saperne di più sullo stato dei tag in relazione alle policy di pulizia, consulta la documentazione di riferimento di TagState.

  5. Di seguito sono riportati alcuni modi facoltativi per definire la norma di conservazione:

    • Prefissi dei tag: è un elenco separato da virgole di prefissi dei tag. Ad esempio, i prefissi test e staging corrisponderebbero a immagini con i tag testenv e staging-1.5. tagState deve essere impostato su TAGGED per utilizzare i prefissi dei tag.
    • Prefissi di versione: - è un elenco separato da virgole dei prefissi di versione dell'artefatto. Ad esempio, v1, v2 corrisponde alle versioni v1.5, v2.0alpha e v10.2.
    • Prefissi dei pacchetti: è un elenco separato da virgole di prefissi dei nomi degli artefatti. Ad esempio, red, blue corrisponde ai nomi degli artefatti red-team, redis e bluebird.
    • Precedente a: è il tempo minimo trascorso dalla creazione della versione di un artefatto nel repository, specificato come durata. Ad esempio, 30d è di 30 giorni. Puoi specificare durate in secondi, minuti, ore o giorni aggiungendo rispettivamente s, m, h o d.
    • Più recente di: è il tempo massimo trascorso dalla creazione della versione di un artefatto nel repository, specificato come durata. Ad esempio, 30d è di 30 giorni.
  6. Puoi aggiungere altre policy di pulizia facendo clic su Aggiungi una policy di pulizia.

  7. Fai clic su Aggiorna.

    I criteri di pulizia vengono applicati al repository.

JSON

Il formato è simile a una norma di eliminazione. Per una norma di conservazione, il valore di action è {"type": "Keep"}.

{
  "name": "KEEP_POLICY_NAME",
  "action": {"type": "Keep"},
  "condition": {
    "tagState": "TAG_STATUS",
    "tagPrefixes": ["TAG_PREFIXES"],
    "versionNamePrefixes": ["VERSION_PREFIXES"],
    "packageNamePrefixes": ["PACKAGE_PREFIXES"],
    "olderThan": "OLDER_THAN_DURATION",
    "newerThan": "NEWER_THAN_DURATION"
  }
}

Sostituisci quanto segue:

  • KEEP_POLICY_NAME con un nome per la policy di pulizia. Il nome deve essere univoco all'interno del gruppo di policy che applichi a un repository.
  • TAG_STATUS con lo stato del tag, che indica se le norme devono verificare la presenza di artefatti taggati o non taggati. Gli artefatti vengono taggati quando viene eseguito il push o il pull di un'immagine da o verso un repository. Per saperne di più sui tag Docker, consulta la sezione Concetti relativi ai container.

    Le opzioni sono:

    • tagged: si applica solo agli artefatti taggati.
    • untagged: si applica solo agli artefatti senza tag.
    • any: si applica a tutte le versioni

    I formati che non supportano i tag vengono trattati come untagged. Se un repository ha abilitato i tag immutabili, gli artefatti con tag non possono essere eliminati. Per saperne di più sullo stato dei tag in relazione alle policy di pulizia, consulta la documentazione di riferimento di TagState.

  • TAG_PREFIXES con un elenco separato da virgole di prefissi dei tag. Ad esempio, i prefissi test e staging corrisponderebbero a immagini con i tag testenv e staging-1.5. tagState deve essere impostato su TAGGED per utilizzare i prefissi dei tag.

  • VERSION_PREFIXES con un elenco separato da virgole di prefissi delle versioni degli artefatti. Ad esempio, v1, v2 corrisponde alle versioni v1.5, v2.0alpha e v10.2.

  • PACKAGE_PREFIXES con un elenco separato da virgole di prefissi dei nomi degli artefatti. Ad esempio, red, blue corrisponderebbe ai nomi degli artefatti red-team, redis e bluebird.

  • OLDER_THAN_DURATION con il tempo minimo trascorso dalla creazione della versione di un artefatto nel repository, specificato come durata. Ad esempio, 30d è di 30 giorni. Puoi specificare durate di secondi, minuti, ore o giorni aggiungendo rispettivamente s, m, h o d.
  • NEWER_THAN_DURATION con il tempo massimo trascorso dalla creazione della versione di un artefatto nel repository, specificato come durata. Ad esempio, 30d è di 30 giorni.

Artifact Registry esegue dry run e esecuzioni attive delle policy di pulizia utilizzando un job in background eseguito periodicamente. Le modifiche diventano effettive entro circa un giorno.

Crea un criterio di conservazione per le versioni più recenti

Puoi creare un criterio di conservazione per conservare un numero specifico di versioni. Non puoi utilizzare i criteri Conservazione condizionale e Conserva le versioni più recenti nella stessa norma di conservazione.

I criteri di conservazione funzionano con i criteri di eliminazione per conservare gli artefatti che verrebbero eliminati in base alle specifiche dei criteri di eliminazione, ma che vuoi conservare. Quando un artefatto corrisponde ai criteri sia di un criterio di eliminazione sia di un criterio di conservazione, l'artefatto viene conservato.

console

Puoi creare una norma di conservazione delle versioni più recenti per un repository nuovo o esistente.

Per aggiungere una norma di conservazione delle versioni più recenti a un repository esistente:

  1. Apri la pagina Repository nella console Google Cloud .

    Apri la pagina Repositori

  2. Nell'elenco dei repository, seleziona il repository e fai clic su Modifica repository.

  3. Nella sezione Policy di pulizia, seleziona Dry run per testare la nuova policy prima di eliminare gli artefatti. Per visualizzare i risultati della norma di conservazione, devi impostare almeno una norma di eliminazione. Per saperne di più sulla visualizzazione dei risultati del test, consulta Prova generale.

    Una volta verificato che le norme funzionano come previsto, modifica di nuovo le impostazioni del repository e seleziona Elimina artefatti per applicare le norme di pulizia ed eliminare gli artefatti selezionati.

  4. Fai clic su Aggiungi una policy di pulizia e aggiungi quanto segue:

    • Nome: assegna un nome alla policy di pulizia. Il nome deve essere univoco all'interno del gruppo di policy che applichi a un repository.
    • Tipo di policy: seleziona Conserva le versioni più recenti.
  5. Nel campo Mantieni conteggio, inserisci il numero di versioni di un artefatto da conservare nel repository.

  6. (Facoltativo) Seleziona Prefissi dei pacchetti per specificare i prefissi dei pacchetti a cui applicare la norma di conservazione. Ad esempio, red, blue corrisponderebbe ai nomi degli artefatti red-team, redis e bluebird.

  7. Puoi aggiungere altre policy di pulizia facendo clic su Aggiungi una policy di pulizia.

  8. Fai clic su Aggiorna.

    I criteri di pulizia vengono applicati al repository. Puoi visualizzare le tue norme di pulizia nella sezione Dettagli repository facendo clic su Mostra altro.

JSON

Il formato è simile a una norma di eliminazione. Per una norma di conservazione, il valore di action è {"type": "Keep"}.

Una policy di conservazione che prevede di conservare un numero specifico di versioni ha una sezione mostRecentVersions anziché una sezione condition.

{
  "name": "KEEP_POLICY_NAME",
  "action": {"type": "Keep"},
  "mostRecentVersions": {
    "packageNamePrefixes": ["PACKAGE_PREFIXES"],
    "keepCount": MINIMUM_NUMBER
  }
}

Sostituisci quanto segue:

  • KEEP_POLICY_NAME con un nome per la norma di conservazione. Il nome deve essere univoco all'interno del gruppo di criteri che applichi a un repository.
  • PACKAGE_PREFIXES con i prefissi dei pacchetti facoltativi a cui applicare i criteri di conservazione. Ad esempio, red, blue corrisponderebbe ai nomi degli artefatti red-team, redis e bluebird.
  • MINIMUM_NUMBER con il numero di versioni di un artefatto da conservare nel repository.

Per applicare il criterio di conservazione a tutti i pacchetti nel repository, ometti la condizione packageNamePrefixes. Viene conservato il numero specificato di versioni recenti di ogni pacchetto nel repository.

Artifact Registry esegue dry run e esecuzioni attive delle policy di pulizia utilizzando un job in background eseguito periodicamente. Le modifiche diventano effettive entro circa un giorno.

File di criteri di esempio

Il seguente esempio di file di criteri contiene un criterio di eliminazione e due criteri di conservazione.

  • La norma delete-prerelease rimuove le versioni degli artefatti 30 giorni dopo il caricamento se l'artefatto inizia con la stringa alpha o v0.
  • Il criterio keep-tagged-release conserva gli artefatti taggati con il prefisso release che hanno un nome file che inizia con webapp o mobile.
  • Il criterio keep-minimum-versions conserva le cinque versioni più recenti degli artefatti con un nome file che inizia con webapp, mobile o sandbox.
[
  {
    "name": "delete-prerelease",
    "action": {"type": "Delete"},
    "condition": {
      "tagState": "tagged",
      "tagPrefixes": ["alpha", "v0"],
      "olderThan": "30d"
    }
  },
  {
    "name": "keep-tagged-release",
    "action": {"type": "Keep"},
    "condition": {
      "tagState": "tagged",
      "tagPrefixes": ["release"],
      "packageNamePrefixes": ["webapp", "mobile"]
    }
  },
  {
    "name": "keep-minimum-versions",
    "action": {"type": "Keep"},
    "mostRecentVersions": {
      "packageNamePrefixes": ["webapp", "mobile", "sandbox"],
      "keepCount": 5
    }
  }
]

Testare le policy con una dry run

Per testare le tue norme di pulizia, puoi impostarle su Prova nella console o eseguire il comando gcloud artifacts set-cleanup-policies con il flag --dry-run.

Per analizzare l'effetto dei criteri di pulizia, puoi visualizzare gli audit log di accesso ai dati di Artifact Registry. Per ricevere i log di controllo dell'accesso ai dati per le norme di pulizia, devi abilitare esplicitamente il tipo di audit log di accesso ai dati di scrittura dei dati per il servizio Artifact Registry. Per abilitare gli audit log di accesso ai dati, consulta Abilitare i log di controllo.

console

  1. Apri la pagina Repository nella console Google Cloud .

    Apri la pagina Repositori

  2. Nell'elenco dei repository, seleziona il repository e fai clic su Modifica repository.

  3. Nella sezione Criteri di pulizia, seleziona Prova.

  4. Fai clic su Aggiungi una norma di pulizia e configura le opzioni per le norme di eliminazione condizionale, conservazione condizionale o conservazione delle versioni più recenti.

  5. Fai clic su Aggiorna.

Quando una policy di eliminazione genera un'azione BatchDeleteVersions, il parametro validateOnly restituisce "true".

Artifact Registry esegue dry run e esecuzioni attive delle policy di pulizia utilizzando un job in background eseguito periodicamente. Le modifiche diventano effettive entro circa un giorno.

Attendi almeno un giorno prima di eseguire query sui log di controllo per la prova.

Per eseguire query sugli audit log per le prove dei criteri di pulizia, esegui il seguente comando:

gcloud logging read 'protoPayload.serviceName="artifactregistry.googleapis.com" AND protoPayload.request.parent="projects/PROJECT_ID/locations/LOCATION/repositories/REPOSITORY/packages/-" AND protoPayload.request.validateOnly=true' \
    --resource-names="projects/PROJECT_ID" \
    --project=PROJECT_ID

L'output è simile al seguente:

insertId: qwe123ty3
logName: projects/my-project/logs/cloudaudit.googleapis.com%2Fdata_access
operation:
  first: true
  id: projects/my-project/locations/us-west1/operations/12345abc-fb9b-4b6f-b02c-9a397ee807d4
  producer: artifactregistry.googleapis.com
protoPayload:
  '@type': type.googleapis.com/google.cloud.audit.AuditLog
  authenticationInfo:
    principalEmail: service-774919394028@gcp-sa-staging-artreg.iam.gserviceaccount.com
  authorizationInfo:
  - granted: true
    permission: artifactregistry.versions.delete
    resource: projects/my-project/locations/us-west1/repositories/docker-test-dryrun/packages/-
    resourceAttributes: {}
  methodName: google.devtools.artifactregistry.v1.ArtifactRegistry.BatchDeleteVersions
  request:
    '@type': type.googleapis.com/google.devtools.artifactregistry.v1.BatchDeleteVersionsRequest
    names:
    - projects/my-project/locations/us-west1/repositories/docker-test-dryrun/packages/docker-load-thursday/versions/sha256:4bb3756e4e75dfbc3ced87521ed62b26d16fb4e17993ae6877165f2b6551fb55
    - projects/my-project/locations/us-west1/repositories/docker-test-dryrun/packages/docker-load-thursday/versions/sha256:e8185538b50df953529b300be4963b2c21158808becac7aa0d610f61de8ba701
    - projects/my-project/locations/us-west1/repositories/docker-test-dryrun/packages/docker-load-thursday/versions/sha256:7f7fb0a9453da49f831fe92eb8b1751be13acefe1bbd44cc3f0d63d41c422246
    - projects/my-project/locations/us-west1/repositories/docker-test-dryrun/packages/docker-load-thursday/versions/sha256:84ac871a34560b39dd7bde57b4d333f18a7e8c1b61c8d350c1fefeb1fcd2b3ac
parent: projects/my-project/locations/us-west1/repositories/docker-test-dryrun/packages/-
    validateOnly: true
  requestMetadata:
    callerIp: private
    callerSuppliedUserAgent: stubby_client
    destinationAttributes: {}
    requestAttributes:
      auth: {}
      time: '2023-05-26T04:31:21.909465579Z'
  resourceName: projects/my-project/locations/us-west1/repositories/docker-test-dryrun/packages/-
  serviceName: artifactregistry.googleapis.com
receiveTimestamp: '2023-05-26T04:31:22.641338594Z'
resource:
  labels:
    method: google.devtools.artifactregistry.v1.ArtifactRegistry.BatchDeleteVersions
    project_id: my-project
    service: artifactregistry.googleapis.com
  type: audited_resource
severity: INFO
timestamp: '2023-05-26T04:31:21.909004200Z'

gcloud

Per eseguire una prova generale con le tue policy di pulizia, esegui questo comando:

gcloud artifacts repositories set-cleanup-policies REPOSITORY \
    --project=PROJECT_ID \
    --location=LOCATION \
    --policy=POLICY_FILE \
    --dry-run

Sostituisci quanto segue:

  • REPOSITORY con il nome del repository.
  • PROJECT_ID: l'ID del tuo progetto Google Cloud .
  • LOCATION è la posizione regionale o multiregionale del repository.

Quando una policy di eliminazione genera un'azione BatchDeleteVersions, il parametro validateOnly restituisce "true".

Artifact Registry esegue dry run e esecuzioni attive delle policy di pulizia utilizzando un job in background eseguito periodicamente. Le modifiche diventano effettive entro circa un giorno.

Attendi almeno un giorno prima di eseguire query sui log di controllo per la prova.

Per eseguire query sugli audit log per le prove dei criteri di pulizia, esegui il seguente comando:

gcloud logging read 'protoPayload.serviceName="artifactregistry.googleapis.com" AND protoPayload.request.parent="projects/PROJECT_ID/locations/LOCATION/repositories/REPOSITORY/packages/-" AND protoPayload.request.validateOnly=true' \
    --resource-names="projects/PROJECT_ID" \
    --project=PROJECT_ID

L'output è simile al seguente:

insertId: qwe123ty3
logName: projects/my-project/logs/cloudaudit.googleapis.com%2Fdata_access
operation:
  first: true
  id: projects/my-project/locations/us-west1/operations/12345abc-fb9b-4b6f-b02c-9a397ee807d4
  producer: artifactregistry.googleapis.com
protoPayload:
  '@type': type.googleapis.com/google.cloud.audit.AuditLog
  authenticationInfo:
    principalEmail: service-774919394028@gcp-sa-staging-artreg.iam.gserviceaccount.com
  authorizationInfo:
  - granted: true
    permission: artifactregistry.versions.delete
    resource: projects/my-project/locations/us-west1/repositories/docker-test-dryrun/packages/-
    resourceAttributes: {}
  methodName: google.devtools.artifactregistry.v1.ArtifactRegistry.BatchDeleteVersions
  request:
    '@type': type.googleapis.com/google.devtools.artifactregistry.v1.BatchDeleteVersionsRequest
    names:
    - projects/my-project/locations/us-west1/repositories/docker-test-dryrun/packages/docker-load-thursday/versions/sha256:4bb3756e4e75dfbc3ced87521ed62b26d16fb4e17993ae6877165f2b6551fb55
    - projects/my-project/locations/us-west1/repositories/docker-test-dryrun/packages/docker-load-thursday/versions/sha256:e8185538b50df953529b300be4963b2c21158808becac7aa0d610f61de8ba701
    - projects/my-project/locations/us-west1/repositories/docker-test-dryrun/packages/docker-load-thursday/versions/sha256:7f7fb0a9453da49f831fe92eb8b1751be13acefe1bbd44cc3f0d63d41c422246
    - projects/my-project/locations/us-west1/repositories/docker-test-dryrun/packages/docker-load-thursday/versions/sha256:84ac871a34560b39dd7bde57b4d333f18a7e8c1b61c8d350c1fefeb1fcd2b3ac
parent: projects/my-project/locations/us-west1/repositories/docker-test-dryrun/packages/-
    validateOnly: true
  requestMetadata:
    callerIp: private
    callerSuppliedUserAgent: stubby_client
    destinationAttributes: {}
    requestAttributes:
      auth: {}
      time: '2023-05-26T04:31:21.909465579Z'
  resourceName: projects/my-project/locations/us-west1/repositories/docker-test-dryrun/packages/-
  serviceName: artifactregistry.googleapis.com
receiveTimestamp: '2023-05-26T04:31:22.641338594Z'
resource:
  labels:
    method: google.devtools.artifactregistry.v1.ArtifactRegistry.BatchDeleteVersions
    project_id: my-project
    service: artifactregistry.googleapis.com
  type: audited_resource
severity: INFO
timestamp: '2023-05-26T04:31:21.909004200Z'

Applica criteri a un repository

Per utilizzare le policy di pulizia definite in un file JSON locale, applicale ai repository in cui vuoi che Artifact Registry gestisca l'eliminazione automatica delle versioni degli artefatti utilizzando gcloud CLI.

Per applicare i criteri di pulizia impostati su Dry run nella console, imposta il criterio su Elimina artefatti.

Puoi applicare criteri di pulizia solo ai repository standard. Non puoi applicare criteri di pulizia a:

  • Un Google Cloud progetto.

console

Per applicare le policy di pulizia:

  1. Apri la pagina Repository nella console Google Cloud .

    Apri la pagina Repositori

  2. Nell'elenco dei repository, seleziona il repository e fai clic su Modifica repository.

  3. Nella sezione Policy di pulizia, seleziona Elimina artefatti.

    Artifact Registry elimina e conserva gli artefatti che corrispondono alle tue norme utilizzando un job in background eseguito periodicamente. Le modifiche dovrebbero diventare effettive entro circa un giorno.

gcloud

Per applicare le policy di pulizia, esegui questo comando nella directory con il file della policy di pulizia.

gcloud artifacts repositories set-cleanup-policies REPOSITORY \
    --project=PROJECT_ID \
    --location=LOCATION \
    --policy=POLICY_FILE \
    --no-dry-run

Sostituisci quanto segue:

  • REPOSITORY con il nome del repository.
  • PROJECT_ID: l'ID del tuo progetto Google Cloud .
  • LOCATION è la posizione regionale o multiregionale del repository.
  • POLICY_FILE è il nome del file con il criterio di pulizia.

Il flag --no-dry-run disattiva la funzionalità di dry run per il repository.

Ad esempio, il seguente comando applica le policy in policy.json al repository my-repo nella regione us-west1 del progetto my-project.

gcloud artifacts repositories set-cleanup-policies my-repo \
    --project=my-project \
    --location=us-west1 \
    --policy=policy.json

Artifact Registry elimina e conserva gli artefatti che corrispondono ai tuoi criteri utilizzando un job in background eseguito periodicamente. Le modifiche dovrebbero essere applicate entro circa un giorno.

Aggiornamento di un criterio

console

  1. Apri la pagina Repository nella console Google Cloud .

    Apri la pagina Repositori

  2. Nell'elenco dei repository, seleziona il repository e fai clic su Modifica repository.

  3. Nella sezione Norme di pulizia, fai clic sul nome della norma che vuoi impostare per la modifica.

  4. Modifica la policy di pulizia e fai clic su Aggiorna.

    I criteri di pulizia vengono applicati al repository.

gcloud

Per aggiornare le policy esistenti, modifica le impostazioni nel file delle policy e poi esegui il comando seguente per applicare nuovamente le policy.

gcloud artifacts repositories set-cleanup-policies REPOSITORY \
    --project=PROJECT_ID \
    --location=LOCATION \
    --policy=POLICY_FILE \
    --no-dry-run

Sostituisci quanto segue:

  • REPOSITORY con il nome del repository.
  • PROJECT_ID: l'ID del tuo progetto Google Cloud .
  • LOCATION è la posizione regionale o multiregionale del repository.
  • POLICY_FILE è il nome del file con il criterio di pulizia.

Il flag --no-dry-run disattiva la funzionalità di dry run per il repository.

Elenca le policy di pulizia del repository

Puoi visualizzare le policy di pulizia associate a un repository.

console

  1. Apri la pagina Repository nella console Google Cloud .

    Apri la pagina Repositori

  2. Nell'elenco dei repository, seleziona quello che vuoi visualizzare.

  3. Nella sezione Dettagli repository, fai clic su Mostra altro.

    Vengono visualizzati i nomi dei criteri di pulizia.

  4. Per visualizzare o modificare i dettagli delle norme di pulizia del repository, fai clic su Modifica repository.

    I dettagli delle norme di pulizia esistenti sono elencati nella sezione Norme di pulizia.

gcloud

Esegui questo comando:

gcloud artifacts repositories list-cleanup-policies REPOSITORY \
    --project=PROJECT_ID \
    --location=LOCATION

Sostituisci quanto segue:

  • REPOSITORY con il nome del repository.
  • PROJECT_ID: l'ID del tuo progetto Google Cloud .
  • LOCATION è la posizione regionale o multiregionale del repository.

Rimuovere una policy da un repository

Rimuovi una policy di pulizia da un repository quando non vuoi più che Artifact Registry elimini automaticamente le versioni degli artefatti.

console

  1. Apri la pagina Repository nella console Google Cloud .

    Apri la pagina Repositori

  2. Nell'elenco dei repository, seleziona il repository e fai clic su Modifica repository.

  3. Nella sezione Norme di pulizia, passa il mouse sopra il nome della norma che vuoi eliminare.

  4. Fai clic sull'icona Elimina.

  5. Fai clic su Aggiorna.

    Il criterio di pulizia viene eliminato.

gcloud

Esegui questo comando:

gcloud artifacts repositories delete-cleanup-policies REPOSITORY \
    --policynames=POLICY_NAMES \
    --project=PROJECT_ID \
    --location=LOCATION

Sostituisci quanto segue:

  • REPOSITORY è il nome del repository.
  • PROJECT_ID è l'ID del tuo progetto Google Cloud .
  • LOCATION è la posizione regionale o multiregionale del repository.
  • POLICY_NAMES è un elenco separato da virgole di nomi di policy per le policy che vuoi rimuovere.

Ad esempio, il seguente comando rimuove una policy denominata delete-test dal repository my-repo nella regione us-west1 nel progetto my-project:

gcloud artifacts repositories delete-cleanup-policies my-repo \
    --policynames=delete-test \
    --project=my-project \
    --location=us-west1

Voci di audit log per le policy di pulizia

Per visualizzare le voci di log dei criteri di pulizia in Cloud Logging, devi attivare il logging DATA_WRITE.

Quando imposti un criterio di pulizia su un repository, l'operazione viene registrata come aggiornamento del repository (operazione UpdateRepository).

Quando Artifact Registry elimina una versione di un artefatto, registra l'evento nei log degli accessi ai dati di Cloud Logging. Le voci di log mostrano che l'eliminazione è stata eseguita dall'account di servizio Artifact Registry. L'ID account di servizio Artifact Registry è nel formato service-PROJECT-NUMBER@gcp-sa-artifactregistry.iam.gserviceaccount.com