Configurar políticas de limpeza

Uma política de limpeza do Artifact Registry define critérios para a exclusão automática versões de artefato de que você não precisa mais ou manter os artefatos que você quer para armazenar indefinidamente.

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

Se uma versão de artefato corresponder aos critérios em uma política de exclusão e em uma manutenção o Artifact Registry aplica a política Keep.

As exclusões acionadas por políticas são contabilizadas no seu Artifact Registry por projeto de cota de solicitação de exclusão e estão limitado a 300.000 exclusões por repositório, por dia.

Programação da aplicação da política

O Artifact Registry exclui e retém artefatos que correspondem à sua limpeza políticas usando um job em segundo plano que é 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 ter as permissões necessárias para aplicar ou remover políticas de limpeza, peça ao administrador para conceder a você Papel do IAM Administrador do Artifact Registry (roles/artifactregistry.admin) no projeto do repositório. Para mais informações sobre como conceder papéis, consulte Gerenciar acesso.

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 permissões a seguir são necessárias para aplicar ou remover políticas de limpeza:

  • artifactregistry.repositories.update
  • Para excluir artefatos que atendam aos critérios em 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árias para excluir imagens que atendam aos critérios de 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 manutenção. Você pode crie um arquivo de política criando e editando um arquivo JSON e usando a Google Cloud CLI para aplicar a política ou usando o console do Google Cloud. Excluir as políticas especificam condições para excluir artefatos. Manter as políticas que especificam condições para reter um artefato ou um número de versões recentes a serem mantidas. Você não é possível usar condições e as versões mais recentes na mesma política keep.

Criar uma política de exclusão

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

Se você tiver determinados artefatos que não quer que sejam excluídos por qualquer motivo, crie uma política de manutenção condicional ou uma política mais recente versões keep e uma política de exclusão. Se um artefato corresponde aos critérios nas políticas de exclusão e manutenção o artefato é 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 atual:

  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 para testar a nova. política antes de se comprometer a excluir os artefatos. Para mais informações sobre como ver os resultados do teste, consulte simulação.

    Quando tiver certeza de que a política está funcionando conforme o esperado, edite as as configurações do repositório novamente e selecione Excluir artefatos para aplicar política de limpeza de dados 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 deve ser exclusivo no o 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 verifique se há artefatos marcados ou sem tag. Os artefatos são marcados quando enviar ou extrair uma imagem de ou para um repositório. Para saber mais sobre o Docker tags, consulte Conceitos de contêiner.

      • Qualquer estado de tag: ignora o estado da tag e se aplica às tags e artefatos sem tag.
      • Com tag: só se aplica a artefatos marcados.
      • Sem tag: só se aplica a artefatos sem tag.

      Os formatos incompatíveis com tags são tratados como untagged. Se um repositório tiver tags imutáveis ativadas, os artefatos marcados não podem ser excluídos.

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

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

    • Prefixos de tags: são uma lista separada por vírgulas de prefixos de tag. Por exemplo, os prefixos test e staging corresponderiam imagens com as 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 versões do artefato prefixos de rede. Por exemplo, v1, v2 corresponderia às versões v1.5, v2.0alpha e v10.2.
    • Prefixos de pacotes: são uma lista de prefixos de nomes de artefatos. Você pode inserir vários prefixos pressionando Enter ou , entre eles. Por exemplo, red, blue criaria dois prefixos, red e blue, e corresponderia aos nomes de artefatos red-team, redis, e bluebird.
    • Mais antigo que: é o tempo mínimo desde que a versão de um artefato foi criadas no repositório, especificadas como uma duração. Por exemplo, 30d é 30 dias. É possível especificar durações em 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 criado 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. É possível consultar de limpeza de dados na seção Detalhes do repositório clicando 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 exclusão da política, DELETE_POLICY_NAME é o nome da política. O nome precisa ser exclusivo dentro do grupo de políticas que você aplicar 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 verifique se há artefatos marcados ou sem tag. Os artefatos são marcados quando enviar ou extrair uma imagem de ou para um repositório. Os valores aceitos são:

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

    Os formatos incompatíveis com tags são tratados como untagged. Se um repositório tem tags imutáveis ativadas, os artefatos marcados não podem ser excluídos.

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

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

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

  • packageNamePrefixes: PACKAGE_PREFIXES é um lista separada por vírgulas de prefixos de nomes de artefatos. Por exemplo, "red", "blue". corresponderia aos nomes de artefatos "red-team", "redis" e "bluebird".

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

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

Criar uma política de manutenção condicional

Uma política de manutenção condicional especifica critérios para reter artefatos. Manter Elas trabalham com as políticas de exclusão para manter os artefatos que seriam excluída 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 um manter a política, o artefato será mantido.

Console

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

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

  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 para testar a nova. política antes de se comprometer a excluir os artefatos. Você precisa definir Pelo menos uma política de exclusão para visualizar os resultados da manutenção política. Para mais informações sobre como ver os resultados do teste, consulte simulação.

    Quando tiver certeza de que suas políticas estão funcionando conforme o esperado, edite suas as configurações do repositório novamente e selecione Excluir artefatos para aplicar de limpeza de registros 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 deve ser exclusivo no o 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 verifique se há artefatos marcados ou sem tag. Os artefatos são marcados quando enviar ou extrair uma imagem de ou para um repositório. Para saber mais sobre o Docker tags, consulte Conceitos de contêiner.

      • Qualquer estado de tag: ignora o estado da tag e se aplica às tags e artefatos sem tag.
      • Com tag: só se aplica a artefatos marcados.
      • Sem tag: só se aplica a artefatos sem tag.

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

  5. Confira abaixo maneiras opcionais de definir a política do Keep:

    • Prefixos de tags: são uma lista separada por vírgulas de prefixos de tag. Por exemplo, os prefixos test e staging corresponderiam imagens com as 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 versões do artefato prefixos de rede. Por exemplo, v1, v2 corresponderia às versões v1.5, v2.0alpha e v10.2.
    • Prefixos de pacotes: são uma lista separada por vírgulas de prefixos de nomes de artefatos. Por exemplo, red, blue corresponderia aos nomes de artefatos red-team, redis, e bluebird.
    .
    • Mais antigo que: é o tempo mínimo desde que a versão de um artefato foi criadas no repositório, especificadas como uma duração. Por exemplo, 30d é 30 dias. É possível especificar durações em 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 criado 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. No caso de uma política keep, 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 pelo nome da política de limpeza. O nome deve ser exclusivo no o grupo de políticas aplicadas a um repositório.
  • TAG_STATUS pelo estado da tag, que indica se a política deve verificar artefatos marcados ou sem tag. Os artefatos são marcado ao enviar ou extrair uma imagem de ou para um repositório. Para saber mais sobre as tags do Docker, consulte Conceitos de contêiner.

    As opções são:

    • tagged: só se aplica a artefatos marcados.
    • untagged: só se aplica a artefatos sem tag.
    • any: aplicável a todas as versões

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

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

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

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

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

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

É possível criar uma política Keep 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 no mesmo política Keep.

Mantenha as políticas funcionando com as políticas de exclusão para manter artefatos que ser excluído de acordo com as especificações de sua 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 uma política de manutenção, o artefato é mantido.

Console

É possível criar uma política "Manter as versões mais recentes" para uma política nova ou existente repositório de dados.

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

  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 para testar a nova. política antes de se comprometer a excluir os artefatos. Você precisa definir Pelo menos uma política de exclusão para visualizar os resultados da manutenção política. Para mais informações sobre como ver os resultados do teste, consulte simulação.

    Quando tiver certeza de que suas políticas estão funcionando conforme o esperado, edite suas as configurações do repositório novamente e selecione Excluir artefatos para aplicar de limpeza de registros 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 deve ser exclusivo no o 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 Keep, insira o número de versões de um artefato. para manter no seu repositório.

  6. Opcional: selecione Prefixos do pacote para especificar os prefixos de pacote a serem aplicados. manter a política. Por exemplo, red, blue corresponderia a nomes de artefatos 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. É possível consultar de limpeza de dados na seção Detalhes do repositório clicando em Mostrar mais.

JSON

O formato é semelhante a uma política de exclusão. No caso de uma política keep, o valor de action é {"type": "Keep"}.

Uma política de manutenção para reter um número específico de versões tem um Seção mostRecentVersions em vez de 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 do Keep. O nome precisam ser exclusivos dentro do grupo de políticas aplicadas a um repositório.
  • PACKAGE_PREFIXES pelos prefixos de pacote opcionais a serem aplicados manter a política. Por exemplo, red, blue corresponderia a nomes de artefatos red-team, redis e bluebird.
.
  • MINIMUM_NUMBER pelo número de versões de um artefato para manter no seu repositório.

Para aplicar a política keep a todos os pacotes no repositório, omita a Condição packageNamePrefixes. O número especificado de versões recentes do cada pacote no repositório são mantidos.

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 manutenção.

  • A política delete-prerelease remove as versões do artefato 30 dias após o upload. se o artefato começa com a string alpha ou v0.
  • A política keep-tagged-release retém os artefatos marcados com o prefixo release que têm um nome de arquivo começando com webapp ou mobile.
  • A política keep-minimum-versions mantém as cinco versões mais recentes do artefatos que têm um nome de arquivo começando 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 suas políticas de limpeza, defina-as para fazer uma simulação em console ou execute o comando gcloud artifacts set-cleanup-policies com a sinalização --dry-run.

Para analisar o efeito das políticas de limpeza, consulte a propriedade Registros de auditoria de acesso a dados do Artifact Registry. Para receber dados de auditoria de acesso a dados para políticas de limpeza, é preciso ativar explicitamente o tipo de gravação de dados dos registros de auditoria de acesso a dados para o serviço Artifact Registry. Para ativar os registros de auditoria de acesso a dados, consulte Ative 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 do Exclusão condicional, Manutenção condicional ou Políticas Mantenha 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 retorna "true".

Para consultar registros de auditoria de simulações de 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'

CLI da gcloud

Para fazer uma simulação com as 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 seu projeto do Google Cloud.
  • LOCATION com o regional ou multirregional local do repositório.

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

Para consultar registros de auditoria de simulações de 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 ao os repositórios em que o Artifact Registry deve lidar com a exclusão automática de versões de artefatos usando a CLI gcloud.

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 projeto do Google Cloud.

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 políticas usando um job em segundo plano executado periodicamente. As mudanças devem entram em vigor em aproximadamente um dia.

gcloud

Para aplicar políticas de limpeza, execute o seguinte comando no diretório com sua 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 seu projeto do Google Cloud.
  • LOCATION com o regional ou multirregional local do repositório.
  • --no-dry-run desativa a funcionalidade de simulação para o repositório.
  • POLICY_FILE é o nome do arquivo com a política de limpeza.

Por exemplo, o comando a seguir aplica políticas em policy.json ao repositório my-repo na região us-west1 no 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 que é executado periodicamente. As mudanças vão 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 usar. que será definido para modificar.

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

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

CLI da gcloud

Para atualizar as políticas atuais, edite as configurações no arquivo de política e, em seguida, Execute o comando a seguir 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 seu projeto do Google Cloud.
  • LOCATION com o regional ou multirregional local do repositório.
  • --no-dry-run desativa a funcionalidade de simulação para o repositório.
  • POLICY_FILE é o nome do arquivo com a política de limpeza.

Listar políticas de limpeza do repositório

É possível ver 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 visualizar.

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

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

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

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

CLI da 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 seu projeto do Google Cloud.
  • LOCATION com o regional ou multirregional local 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 o Artifact Registry para excluir automaticamente as versões de artefatos.

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ê que quiser excluir.

  4. Clique no ícone Excluir.

  5. Clique em Atualizar.

    A política de limpeza foi excluída.

CLI 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 do Google Cloud.
  • LOCATION é o regional ou multirregional local do repositório.
  • POLICY_NAMES é uma lista separada por vírgulas de nomes de políticas para as políticas que você quer remover.

Por exemplo, o comando a seguir remove uma política chamada delete-test da 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 acessar as entradas de registro da política de limpeza no Cloud Logging, é preciso Ative a geração de registros do DATA_WRITE.

Quando você define uma política de limpeza em um repositório, a operação é registrada como um atualizar para o 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 A conta de serviço do Artifact Registry realizou a exclusão. A 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, também é possível usar as seguintes ferramentas para o ciclo de vida da imagem de projetos:

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

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