Configurar políticas de limpeza

Uma política de limpeza do Artifact Registry define critérios para excluir automaticamente versões de artefatos que não são mais necessárias ou manter os artefatos que você quer armazenar indefinidamente.

As políticas de limpeza são úteis se você armazena muitas versões dos artefatos, mas precisa manter apenas versões específicas lançadas para produção. É possível definir políticas de exclusão com critérios para excluir artefatos e políticas de retenção com critérios para manter artefatos.

Se uma versão de artefato corresponder aos critérios de uma política de exclusão e de retenção, o Artifact Registry vai aplicar a política de retenção.

As exclusões acionadas por políticas de exclusão são contabilizadas na cota de solicitações de exclusão por projeto do Artifact Registry e são limitadas a 300.000 exclusões por repositório por dia.

Cronograma de aplicação de políticas

O Artifact Registry exclui e retém artefatos que correspondem às suas políticas de limpeza usando um job em segundo plano executado periodicamente. As mudanças entram em vigor em aproximadamente um dia.

Número máximo de políticas de limpeza por repositório

É possível aplicar no máximo 10 políticas de limpeza a um repositório.

Formatos compatíveis

É possível definir uma política de limpeza em repositórios padrão e remotos para todos os formatos de repositório.

Funções exigidas

Para receber as permissões necessárias para aplicar ou remover políticas de limpeza, peça ao administrador para conceder a você o papel do IAM de Administrador do Registro de artefatos (roles/artifactregistry.admin) no projeto do repositório. Para mais informações sobre a concessão de papéis, consulte Gerenciar o acesso a projetos, pastas e organizações.

Esse papel predefinido contém as permissões necessárias para aplicar ou remover políticas de limpeza. Para conferir as permissões exatas necessárias, expanda a seção Permissões necessárias:

Permissões necessárias

As seguintes permissões são necessárias para aplicar ou remover políticas de limpeza:

  • artifactregistry.repositories.update
  • Para excluir artefatos que atendem aos critérios de uma política de limpeza: artifactregistry.versions.delete

Essas permissões também podem ser concedidas com funções personalizadas ou outros papéis predefinidos.

O papel padrão do agente de serviço do Artifact Registry inclui a permissão artifactregistry.versions.delete, que é necessária para excluir imagens que atendem aos critérios em uma política de limpeza.

Criar um arquivo de política

Um arquivo de política é um arquivo JSON que define suas políticas de exclusão e retenção. É possível criar um arquivo de política criando e editando um arquivo JSON e, em seguida, usando a CLI do Google Cloud para aplicar a política ou o console do Google Cloud. As políticas de exclusão especificam as condições para excluir artefatos. As políticas de retenção especificam condições para manter um artefato ou um número de versões recentes. Não é possível usar condições e as versões mais recentes na mesma política de retenção.

Criar uma política de exclusão

Uma política de exclusão permite especificar a idade mínima ou máxima para a exclusão de artefatos e outros critérios de filtragem para limitar a política a artefatos específicos.

Se você tiver artefatos que não quer excluir por qualquer motivo, crie uma política de retenção condicional ou de versões mais recentes, além de uma política de exclusão. Se um artefato corresponder aos critérios da política de exclusão e de manutenção, ele será mantido.

Console

É possível criar uma política de exclusão para um repositório novo ou existente.

Para adicionar uma política de exclusão a um repositório:

  1. Abra a página Repositórios no console do Google Cloud.

    Abrir a página Repositórios

  2. Na lista de repositórios, selecione o repositório e clique em Editar repositório.

  3. Na seção Políticas de limpeza, selecione Execução simulada para testar a nova política antes de excluir os artefatos. Para mais informações sobre como conferir os resultados do teste, consulte simulação.

    Quando tiver certeza de que a política está funcionando corretamente, edite as configurações do repositório novamente e selecione Excluir artefatos para aplicar a política de limpeza e excluir os artefatos selecionados.

  4. Clique em Adicionar uma política de limpeza e adicione o seguinte:

    • Nome: dê um nome à política de limpeza. O nome precisa ser exclusivo no grupo de políticas aplicadas a um repositório.
    • Tipo de política: selecione Exclusão condicional.
    • Estado da tag: indica se a política precisa verificar artefatos com ou sem tags. Os artefatos são marcados quando uma imagem é enviada ou extraída de um repositório. Para mais informações sobre as tags do Docker, consulte Conceitos de contêineres.

      • Qualquer estado de tag: ignora o estado da tag e se aplica a artefatos marcados e não marcados.
      • Marcado: aplica-se apenas a artefatos marcados.
      • Sem tag: se aplica apenas a artefatos sem tag.

      Os formatos que não têm suporte a tags são tratados como untagged. Se um repositório tiver tags imutáveis ativadas, os artefatos marcados não poderão ser excluídos.

      Para mais informações sobre o estado da tag conforme se aplica às políticas de limpeza, consulte a referência de TagState.

  5. Confira a seguir as maneiras opcionais de definir sua política de exclusão:

    • Prefixos de tag: é uma lista separada por vírgulas de prefixos de tag. Por exemplo, os prefixos test e staging corresponderiam a imagens com tags testenv e staging-1.5. tagState precisa ser definido como TAGGED para usar prefixos de tag.
    • Prefixos de versão: é uma lista separada por vírgulas de prefixos de versão de artefatos. Por exemplo, v1, v2 corresponderia às versões v1.5, v2.0alpha e v10.2.
    • Prefixos de pacote: é uma lista de prefixos de nome de artefato. É possível inserir vários prefixos pressionando Enter ou , entre eles. Por exemplo, red, blue criaria dois prefixos, red e blue, e seria correspondente aos nomes de artefato red-team, redis e bluebird.
    • Mais antigo que: é o tempo mínimo desde que a versão de um artefato foi criada no repositório, especificado como uma duração. Por exemplo, 30d é 30 dias. É possível especificar durações de segundos, minutos, horas ou dias anexando s, m, h ou d, respectivamente.
    • Mais recente que: é o tempo máximo desde que a versão de um artefato foi criada no repositório, especificado como uma duração. Por exemplo, 30d é 30 dias.
  6. Para adicionar mais políticas de limpeza, clique em Adicionar uma política de limpeza.

  7. Clique em Atualizar.

    Sua política de limpeza é aplicada ao repositório. Para conferir suas políticas de limpeza na seção Detalhes do repositório, clique em Mostrar mais.

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"
  }
}

Uma política de exclusão precisa incluir um nome, uma ação e pelo menos uma condição.

name
No snippet de política de exclusão, DELETE_POLICY_NAME é o nome da política. O nome precisa ser exclusivo no grupo de políticas que você aplica a um repositório.
action
Para uma política de exclusão, o valor é {"type": "Delete"}.
condition
Especifique uma ou mais das seguintes condições:
  • tagState: TAG_STATUS indica se a política precisa verificar artefatos com tags ou sem tags. Os artefatos são marcados quando uma imagem é enviada ou extraída de um repositório. Os valores aceitos são:

    • tagged: se aplica apenas a artefatos marcados.
    • untagged: aplica-se apenas a artefatos sem tags.
    • any: ignora o estado da tag e se aplica a artefatos marcados e não marcados.

    Os formatos que não têm suporte a tags são tratados como untagged. Se um repositório tiver tags imutáveis ativadas, os artefatos marcados não poderão ser excluídos.

    Para saber mais sobre tags do Docker, consulte Conceitos de contêineres.

  • tagPrefixes: TAG_PREFIXES é uma lista separada por vírgulas de prefixos de tags. Por exemplo, "test", "staging" corresponderia a imagens com as tags "testenv" e "staging-1.5". tagState precisa ser definido como TAGGED para usar prefixos de tag.

  • versionNamePrefixes: VERSION_PREFIXES é uma lista separada por vírgulas de prefixos de versão de artefato. Por exemplo, "v1", "v2" seria igual às versões "v1.5", "v2.0alpha" e "v10.2".

  • packageNamePrefixes: PACKAGE_PREFIXES é uma lista separada por vírgulas de prefixos de nome de artefato. Por exemplo, "red", "blue" seria correspondente aos nomes de artefato "red-team", "redis" e "bluebird".

  • olderThan: OLDER_THAN_DURATION é o tempo mínimo desde que a versão de um artefato foi criada no repositório, especificado como uma duração. Por exemplo, 30d é 30 dias. É possível especificar durações de segundos, minutos, horas ou dias anexando s, m, h ou d, respectivamente.

  • newerThan: NEWER_THAN_DURATION é o tempo máximo desde que a versão de um artefato foi criada no repositório, especificado como uma duração. Por exemplo, 30d é 30 dias.

Criar uma política de retenção condicional

Uma política de retenção condicional especifica os critérios para manter artefatos. As políticas de manutenção funcionam com políticas de exclusão para manter artefatos que seriam excluídos de acordo com as especificações da política de exclusão, mas que você quer manter. Quando um artefato corresponde aos critérios de uma política de exclusão e de manutenção, ele é mantido.

Console

Você pode criar uma política de retenção para um repositório novo ou existente.

Para adicionar uma política de retenção a um repositório:

  1. Abra a página Repositórios no console do Google Cloud.

    Abrir a página Repositórios

  2. Na lista de repositórios, selecione o repositório e clique em Editar repositório.

  3. Na seção Políticas de limpeza, selecione Execução simulada para testar a nova política antes de excluir os artefatos. É necessário definir pelo menos uma política de exclusão para conferir os resultados da sua política de retenção. Para mais informações sobre como conferir os resultados do teste, consulte simulação.

    Quando tiver certeza de que as políticas estão funcionando como esperado, edite as configurações do repositório novamente e selecione Excluir artefatos para aplicar as políticas de limpeza e excluir os artefatos selecionados.

  4. Clique em Adicionar uma política de limpeza e adicione o seguinte:

    • Nome: dê um nome à política de limpeza. O nome precisa ser exclusivo no grupo de políticas aplicadas a um repositório.
    • Tipo de política: selecione Manter condicional.
    • Estado da tag: indica se a política precisa verificar artefatos com ou sem tags. Os artefatos são marcados quando uma imagem é enviada ou extraída de um repositório. Para mais informações sobre as tags do Docker, consulte Conceitos de contêineres.

      • Qualquer estado de tag: ignora o estado da tag e se aplica a artefatos marcados e não marcados.
      • Marcado: aplica-se apenas a artefatos marcados.
      • Sem tag: se aplica apenas a artefatos sem tag.

      Os formatos que não têm suporte a tags são tratados como untagged. Se um repositório tiver tags imutáveis ativadas, os artefatos marcados não poderão ser excluídos. Para mais informações sobre o estado da tag conforme se aplica às políticas de limpeza, consulte a referência de TagState.

  5. Confira a seguir as maneiras opcionais de definir sua política de retenção:

    • Prefixos de tag: é uma lista separada por vírgulas de prefixos de tag. Por exemplo, os prefixos test e staging corresponderiam a imagens com tags testenv e staging-1.5. tagState precisa ser definido como TAGGED para usar prefixos de tag.
    • Prefixos de versão: é uma lista separada por vírgulas de prefixos de versão de artefatos. Por exemplo, v1, v2 corresponderia às versões v1.5, v2.0alpha e v10.2.
    • Prefixos de pacote: é uma lista separada por vírgulas de prefixos de nome de artefato. Por exemplo, red, blue corresponderia aos nomes de artefato red-team, redis e bluebird.
    • Mais antigo que: é o tempo mínimo desde que a versão de um artefato foi criada no repositório, especificado como uma duração. Por exemplo, 30d é 30 dias. É possível especificar durações de segundos, minutos, horas ou dias anexando s, m, h ou d, respectivamente.
    • Mais recente que: é o tempo máximo desde que a versão de um artefato foi criada no repositório, especificado como uma duração. Por exemplo, 30d é 30 dias.
  6. Para adicionar mais políticas de limpeza, clique em Adicionar uma política de limpeza.

  7. Clique em Atualizar.

    Sua política de limpeza é aplicada ao repositório.

JSON

O formato é semelhante a uma política de exclusão. Para uma política de retenção, o valor de 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"
  }
}

Substitua:

  • KEEP_POLICY_NAME com o nome da política de limpeza. O nome precisa ser exclusivo no grupo de políticas aplicadas a um repositório.
  • TAG_STATUS com o estado da tag, que indica se a política vai verificar artefatos marcados ou não marcados. Os artefatos são marcados ao enviar ou extrair uma imagem de ou para um repositório. Para saber mais sobre tags do Docker, consulte Conceitos de contêineres.

    As opções são:

    • tagged: se aplica apenas a artefatos marcados.
    • untagged: aplica-se apenas a artefatos sem tags.
    • any: aplicável a todas as versões

    Os formatos que não têm suporte a tags são tratados como untagged. Se um repositório tiver tags imutáveis ativadas, os artefatos marcados não poderão ser excluídos. Para mais informações sobre o estado da tag conforme se aplica às políticas de limpeza, consulte a referência de TagState.

  • TAG_PREFIXES com uma lista separada por vírgulas de prefixos de tags. Por exemplo, os prefixos test e staging corresponderiam a imagens com tags testenv e staging-1.5. tagState precisa ser definido como TAGGED para usar prefixos de tag.

  • VERSION_PREFIXES com uma lista separada por vírgulas de prefixos de versão de artefato. Por exemplo, v1, v2 corresponderia às versões v1.5, v2.0alpha e v10.2.

  • PACKAGE_PREFIXES com uma lista separada por vírgulas de prefixos de nome de artefato. Por exemplo, red, blue corresponderia aos nomes de artefato red-team, redis e bluebird.

  • OLDER_THAN_DURATION com o tempo mínimo desde que a versão de um artefato foi criada no repositório, especificado como uma duração. Por exemplo, 30d é 30 dias. É possível especificar durações de segundos, minutos, horas ou dias anexando s, m, h ou d, respectivamente.
  • NEWER_THAN_DURATION com o tempo máximo desde que a versão de um artefato foi criada no repositório, especificado como uma duração. Por exemplo, 30d é 30 dias.

Criar uma política de retenção para as versões mais recentes

Você pode criar uma política de retenção para manter um número específico de versões. Não é possível usar os critérios Manter condicional e Manter as versões mais recentes na mesma política de retenção.

As políticas de retenção funcionam com políticas de exclusão para manter artefatos que seriam excluídos de acordo com as especificações da política de exclusão, mas que você quer manter. Quando um artefato corresponde aos critérios de uma política de exclusão e de retenção, ele é mantido.

Console

É possível criar uma política de manter as versões mais recentes para um repositório novo ou existente.

Para adicionar uma política de manter as versões mais recentes a um repositório:

  1. Abra a página Repositórios no console do Google Cloud.

    Abrir a página Repositórios

  2. Na lista de repositórios, selecione o repositório e clique em Editar repositório.

  3. Na seção Políticas de limpeza, selecione Execução simulada para testar a nova política antes de excluir os artefatos. É necessário definir pelo menos uma política de exclusão para conferir os resultados da sua política de retenção. Para mais informações sobre como conferir os resultados do teste, consulte simulação.

    Quando tiver certeza de que as políticas estão funcionando como esperado, edite as configurações do repositório novamente e selecione Excluir artefatos para aplicar as políticas de limpeza e excluir os artefatos selecionados.

  4. Clique em Adicionar uma política de limpeza e adicione o seguinte:

    • Nome: dê um nome à política de limpeza. O nome precisa ser exclusivo no grupo de políticas aplicadas a um repositório.
    • Tipo de política: selecione Manter as versões mais recentes.
  5. No campo Contagem de manutenção, digite o número de versões de um artefato a serem mantidas no repositório.

  6. Opcional: selecione Prefixos de pacote para especificar os prefixos de pacotes a serem aplicados à política de retenção. Por exemplo, red, blue corresponderia aos nomes de artefato red-team, redis e bluebird.

  7. Para adicionar mais políticas de limpeza, clique em Adicionar uma política de limpeza.

  8. Clique em Atualizar.

    Sua política de limpeza é aplicada ao repositório. Para conferir suas políticas de limpeza na seção Detalhes do repositório, clique em Mostrar mais.

JSON

O formato é semelhante a uma política de exclusão. Para uma política de retenção, o valor de action é {"type": "Keep"}.

Uma política de retenção para manter um número específico de versões tem uma seção mostRecentVersions em vez de uma seção condition.

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

Substitua:

  • KEEP_POLICY_NAME por um nome para a política de retenção. O nome precisa ser exclusivo no grupo de políticas aplicadas a um repositório.
  • PACKAGE_PREFIXES com os prefixos de pacote opcionais para aplicar a política de retenção. Por exemplo, red, blue corresponderia aos nomes de artefato red-team, redis e bluebird.
  • MINIMUM_NUMBER com o número de versões de um artefato a serem mantidas no repositório.

Para aplicar a política de retenção a todos os pacotes no repositório, omita a condição packageNamePrefixes. O número especificado de versões recentes de cada pacote no repositório é mantido.

Exemplo de arquivo de política

O exemplo de arquivo de política a seguir tem uma política de exclusão e duas políticas de retenção.

  • A política delete-prerelease remove as versões de artefato 30 dias após o upload se o artefato começar com a string alpha ou v0.
  • A política keep-tagged-release retém artefatos marcados com o prefixo release que têm um nome de arquivo que começa com webapp ou mobile.
  • A política keep-minimum-versions retém as cinco versões mais recentes de artefatos que têm um nome de arquivo que começa com webapp, mobile ou 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
    }
  }
]

Testar suas políticas com uma simulação

Para testar as políticas de limpeza, defina a política de limpeza para simulação no console ou execute o comando gcloud artifacts set-cleanup-policies com a flag --dry-run.

Para analisar o efeito das suas políticas de limpeza, confira os registros de auditoria de acesso a dados do Registro de artefatos. Para receber registros de auditoria de acesso a dados para políticas de limpeza, ative explicitamente o tipo de registro de auditoria de acesso a dados gravação de dados para o serviço do Registro de artefatos. Para ativar os registros de auditoria de acesso a dados, consulte Ativar os registros de auditoria.

Console

  1. Abra a página Repositórios no console do Google Cloud.

    Abrir a página Repositórios

  2. Na lista de repositórios, selecione o repositório e clique em Editar repositório.

  3. Na seção Políticas de limpeza, selecione Simulação.

  4. Clique em Adicionar uma política de limpeza e configure as opções para as políticas Excluir condicional, Manter condicional ou Manter as versões mais recentes.

  5. Clique em Atualizar.

Quando uma política de exclusão resulta em uma ação BatchDeleteVersions, o parâmetro validateOnly é avaliado como "true".

Para consultar os registros de auditoria de simulações das suas políticas de limpeza, execute o seguinte comando:

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

A saída será assim:

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

Para fazer um teste com suas políticas de limpeza, execute o seguinte comando:

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

Substitua:

  • REPOSITORY pelo nome do repositório.
  • PROJECT_ID pelo ID do projeto Google Cloud .
  • LOCATION é o local regional ou multirregional do repositório.

Quando uma política de exclusão resulta em uma ação BatchDeleteVersions, o parâmetro validateOnly é avaliado como "true".

Para consultar os registros de auditoria de simulações das suas políticas de limpeza, execute o seguinte comando:

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

A saída será assim:

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'

Aplicar políticas a um repositório

Para usar as políticas de limpeza definidas em um arquivo JSON local, aplique-as aos repositórios em que você quer que o Artifact Registry gerencie a exclusão automática de versões de artefatos usando a gcloud CLI.

Para aplicar políticas de limpeza definidas como Simulação no console, defina a política como Excluir artefatos.

Só é possível aplicar políticas de limpeza a repositórios padrão. Não é possível aplicar políticas de limpeza a:

  • Um Google Cloud projeto.

Console

Para aplicar políticas de limpeza:

  1. Abra a página Repositórios no console do Google Cloud.

    Abrir a página Repositórios

  2. Na lista de repositórios, selecione o repositório e clique em Editar repositório.

  3. Na seção Políticas de limpeza, selecione Excluir artefatos.

    O Artifact Registry exclui e retém artefatos que correspondem às suas políticas usando um job em segundo plano executado periodicamente. As mudanças entrarão em vigor em aproximadamente um dia.

gcloud

Para aplicar políticas de limpeza, execute o comando a seguir no diretório com o arquivo de política de limpeza.

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

Substitua:

  • REPOSITORY pelo nome do repositório.
  • PROJECT_ID pelo ID do projeto Google Cloud .
  • LOCATION é o local regional ou multirregional do repositório.
  • POLICY_FILE é o nome do arquivo com a política de limpeza.

A flag --no-dry-run desativa a funcionalidade de simulação para o repositório.

Por exemplo, o comando a seguir aplica políticas em policy.json ao repositório my-repo na região us-west1 do projeto my-project.

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

O Artifact Registry exclui e retém artefatos que correspondem às suas políticas usando um job em segundo plano executado periodicamente. As mudanças devem entrar em vigor em aproximadamente um dia.

Atualizar uma política

Console

  1. Abra a página Repositórios no console do Google Cloud.

    Abrir a página Repositórios

  2. Na lista de repositórios, selecione o repositório e clique em Editar repositório.

  3. Na seção Políticas de limpeza, clique no nome da política que você quer modificar.

  4. Edite a política de limpeza e clique em Atualizar.

    Sua política de limpeza é aplicada ao repositório.

gcloud

Para atualizar as políticas atuais, edite as configurações no arquivo de políticas e execute o comando abaixo para aplicar as políticas novamente.

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

Substitua:

  • REPOSITORY pelo nome do repositório.
  • PROJECT_ID pelo ID do projeto Google Cloud .
  • LOCATION é o local regional ou multirregional do repositório.
  • POLICY_FILE é o nome do arquivo com a política de limpeza.

A flag --no-dry-run desativa a funcionalidade de simulação para o repositório.

Listar políticas de limpeza do repositório

É possível conferir as políticas de limpeza associadas a um repositório.

Console

  1. Abra a página Repositórios no console do Google Cloud.

    Abrir a página Repositórios

  2. Na lista de repositórios, selecione o repositório que você quer consultar.

  3. Na seção Detalhes do repositório, clique em Mostrar mais.

    Os nomes das políticas de limpeza são exibidos.

  4. Para conferir ou editar os detalhes das políticas de limpeza do repositório, clique em Editar repositório.

    Os detalhes das políticas de limpeza atuais estão listados na seção Políticas de limpeza.

gcloud

Execute este comando:

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

Substitua:

  • REPOSITORY pelo nome do repositório.
  • PROJECT_ID pelo ID do projeto Google Cloud .
  • LOCATION é o local regional ou multirregional do repositório.

Remover uma política de um repositório

Remova uma política de limpeza de um repositório quando não quiser mais que o Artifact Registry exclua automaticamente as versões de artefato.

Console

  1. Abra a página Repositórios no console do Google Cloud.

    Abrir a página Repositórios

  2. Na lista de repositórios, selecione o repositório e clique em Editar repositório.

  3. Na seção Políticas de limpeza, passe o cursor sobre o nome da política que você quer excluir.

  4. Clique no ícone Excluir.

  5. Clique em Atualizar.

    A política de limpeza é excluída.

gcloud

Execute este comando:

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

Substitua:

  • REPOSITORY é o nome do repositório.
  • PROJECT_ID é o ID do projeto Google Cloud .
  • LOCATION é o local regional ou multirregional do repositório.
  • POLICY_NAMES é uma lista separada por vírgulas dos nomes das políticas que você quer remover.

Por exemplo, o comando a seguir remove uma política chamada delete-test do repositório my-repo na região us-west1 do projeto my-project:

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

Entradas de registro de auditoria para políticas de limpeza

Para conferir as entradas de registro da política de limpeza no Cloud Logging, é necessário ativar o registro DATA_WRITE.

Quando você define uma política de limpeza em um repositório, a operação é registrada como uma atualização no repositório (operação UpdateRepository).

Quando o Artifact Registry exclui uma versão de um artefato, ele registra o evento nos registros de acesso a dados do Cloud Logging. As entradas de registro mostram que a conta de serviço do Artifact Registry realizou a exclusão. O ID da conta de serviço do Artifact Registry está no formato service-PROJECT-NUMBER@gcp-sa-artifactregistry.iam.gserviceaccount.com

Outras ferramentas

Para imagens de contêiner, você também pode usar as seguintes ferramentas para gerenciar o ciclo de vida da imagem:

  • gcrane: uma ferramenta para registros de contêineres que pode ser usada para copiar imagens entre repositórios.
  • gcr-cleaner: uma ferramenta para excluir imagens de contêineres com base em critérios especificados.

As ferramentas gcrane e gcr-cleaner não são produtos oficiais do Google.