Configure políticas de limpeza

Este documento descreve como criar e gerir as suas políticas de limpeza.

Funções necessárias

Para receber as autorizações de que precisa para aplicar ou remover políticas de limpeza, peça ao seu administrador para lhe conceder a função de IAM administrador do Artifact Registry (roles/artifactregistry.admin) no projeto do repositório. Para mais informações sobre a atribuição de funções, consulte o artigo Faça a gestão do acesso a projetos, pastas e organizações.

Esta função predefinida contém as autorizações necessárias para aplicar ou remover políticas de limpeza. Para ver as autorizações exatas que são necessárias, expanda a secção Autorizações necessárias:

Autorizações necessárias

São necessárias as seguintes autorizações para aplicar ou remover políticas de limpeza:

  • artifactregistry.repositories.update
  • Para eliminar artefactos que cumprem os critérios numa política de limpeza: artifactregistry.versions.delete

Também pode conseguir estas autorizações com funções personalizadas ou outras funções predefinidas.

A função predefinida do agente do serviço do Artifact Registry inclui a autorização artifactregistry.versions.delete, que é necessária para eliminar imagens que cumprem os critérios numa política de limpeza.

Crie um ficheiro de política

Um ficheiro de políticas é um ficheiro JSON que define as suas políticas de eliminação e conservação. Pode criar um ficheiro de política criando e editando um ficheiro JSON e, em seguida, usando a CLI Google Cloud para aplicar a política ou usando a Google Cloud consola. As políticas de eliminação especificam condições para eliminar artefactos. As políticas de retenção especificam as condições para reter um artefacto ou um número de versões recentes a reter. Não pode usar condições e versões mais recentes na mesma política de retenção.

Crie uma política de eliminação

Uma política de eliminação permite-lhe especificar a idade mínima ou máxima para a eliminação de artefactos e critérios de filtragem adicionais para limitar a política a artefactos específicos.

Se tiver determinados artefactos que não quer eliminar por qualquer motivo, crie uma política de retenção condicional ou uma política de retenção das versões mais recentes, bem como uma política de eliminação. Se um artefacto corresponder aos critérios da política de eliminação e da política de conservação, o artefacto é conservado.

consola

Pode criar uma política de eliminação para um repositório novo ou existente.

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

  1. Abra a página Repositórios na Google Cloud consola.

    Abra a página Repositórios

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

  3. Na secção Políticas de limpeza, selecione Teste de execução para testar a nova política antes de confirmar a eliminação de quaisquer artefactos. Para mais informações sobre como ver os resultados do teste, consulte o artigo Teste de simulação.

    Quando tiver a certeza de que a política está a funcionar como esperado, edite novamente as definições do repositório e selecione Eliminar artefactos para aplicar a política de limpeza e eliminar os artefactos selecionados.

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

    • Nome: atribua um nome à política de limpeza. O nome tem de ser exclusivo no grupo de políticas que aplica a um repositório.
    • Tipo de política: selecione Eliminação condicional.
    • Estado da etiqueta: indica se a política deve verificar a existência de artefactos etiquetados ou não etiquetados. Os artefactos são etiquetados quando envia ou extrai uma imagem para ou de um repositório. Para mais informações sobre as etiquetas do Docker, consulte o artigo Conceitos de contentores.

      • Qualquer estado da etiqueta: ignora o estado da etiqueta e aplica-se a artefactos etiquetados e não etiquetados.
      • Etiquetado: aplica-se apenas a artefactos etiquetados.
      • Sem etiqueta: aplica-se apenas a artefactos sem etiqueta.

      Os formatos que não suportam etiquetas são tratados como untagged. Se um repositório tiver etiquetas imutáveis ativadas, não é possível eliminar os artefactos etiquetados.

      Para mais informações sobre o estado da etiqueta no que se refere às políticas de limpeza, consulte a referência TagState.

  5. Seguem-se formas opcionais de definir a sua política de eliminação:

    • Prefixos de etiquetas: é uma lista de prefixos de etiquetas separados por vírgulas. Por exemplo, os prefixos test e staging corresponderiam a imagens com as etiquetas testenv e staging-1.5. tagState tem de estar definido como TAGGED para usar prefixos de etiquetas.
    • Prefixos de versão: - é uma lista separada por vírgulas de prefixos de versão do artefacto. Por exemplo, v1, v2 corresponderia às versões v1.5, v2.0alpha e v10.2.
    • Prefixos de pacotes: é uma lista de prefixos de nomes de artefactos. Pode introduzir vários prefixos premindo Enter ou , entre os prefixos. Por exemplo, red, blue criaria dois prefixos, red e blue, e corresponderia aos nomes dos artefactos red-team, redis> e bluebird.
    • Mais antigo do que: é o tempo mínimo desde que a versão de um artefacto foi criada no repositório, especificado como uma duração. Por exemplo, 30d é de 30 dias. Pode especificar durações de segundos, minutos, horas ou dias anexando s, m, h ou d, respetivamente.
    • 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 é de 30 dias.
  6. Pode adicionar mais políticas de limpeza clicando em Adicionar uma política de limpeza.

  7. Clique em Atualizar.

    A sua política de limpeza é aplicada ao repositório. Pode ver as suas políticas de limpeza na secçã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 eliminação tem de incluir um nome, uma ação e, pelo menos, uma condição.

name
No fragmento de política de eliminação, DELETE_POLICY_NAME é o nome da política. O nome tem de ser exclusivo no grupo de políticas que aplica a um repositório.
action
Para uma política de eliminação, o valor é {"type": "Delete"}.
condition
Especifique uma ou mais das seguintes condições:
  • tagState: TAG_STATUS indica se a política deve verificar a existência de artefactos etiquetados ou não etiquetados. Os artefactos são etiquetados quando envia ou extrai uma imagem para ou de um repositório. Os valores suportados são:

    • tagged: aplica-se apenas a artefactos etiquetados.
    • untagged: aplica-se apenas a artefactos não etiquetados.
    • any: ignora o estado da etiqueta e aplica-se a artefactos etiquetados e não etiquetados.

    Os formatos que não suportam etiquetas são tratados como untagged. Se um repositório tiver etiquetas imutáveis ativadas, não é possível eliminar os artefactos etiquetados.

    Para mais informações sobre as etiquetas Docker, consulte o artigo Conceitos de contentores.

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

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

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

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

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

O Artifact Registry executa testes e execuções ativas de políticas de limpeza através de uma tarefa em segundo plano executada periodicamente. As alterações entram em vigor no prazo de aproximadamente um dia.

Crie uma política de conservação condicional

Uma política de conservação condicional especifica critérios para reter artefactos. As políticas de conservação funcionam com as políticas de eliminação para conservar artefactos que seriam eliminados de acordo com as especificações da sua política de eliminação, mas que quer conservar. Quando um artefacto corresponde aos critérios de uma política de eliminação e de uma política de conservação, o artefacto é conservado.

consola

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 existente:

  1. Abra a página Repositórios na Google Cloud consola.

    Abra a página Repositórios

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

  3. Na secção Políticas de limpeza, selecione Teste de execução para testar a nova política antes de confirmar a eliminação de quaisquer artefactos. Tem de definir, pelo menos, uma política de eliminação para ver os resultados da sua política de retenção. Para mais informações sobre como ver os resultados do teste, consulte o artigo Teste de simulação.

    Quando tiver a certeza de que as suas políticas estão a funcionar como esperado, edite novamente as definições do repositório e selecione Eliminar artefactos para aplicar as políticas de limpeza e eliminar os artefactos selecionados.

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

    • Nome: atribua um nome à política de limpeza. O nome tem de ser exclusivo no grupo de políticas que aplica a um repositório.
    • Tipo de política: selecione Manutenção condicional.
    • Estado da etiqueta: indica se a política deve verificar a existência de artefactos etiquetados ou não etiquetados. Os artefactos são etiquetados quando envia ou extrai uma imagem para ou de um repositório. Para mais informações sobre as etiquetas do Docker, consulte o artigo Conceitos de contentores.

      • Qualquer estado da etiqueta: ignora o estado da etiqueta e aplica-se a artefactos etiquetados e não etiquetados.
      • Etiquetado: aplica-se apenas a artefactos etiquetados.
      • Sem etiqueta: aplica-se apenas a artefactos sem etiqueta.

      Os formatos que não suportam etiquetas são tratados como untagged. Se um repositório tiver etiquetas imutáveis ativadas, não é possível eliminar os artefactos etiquetados. Para mais informações sobre o estado da etiqueta no que se refere às políticas de limpeza, consulte a referência TagState.

  5. Seguem-se formas opcionais de definir a sua política de retenção:

    • Prefixos de etiquetas: é uma lista de prefixos de etiquetas separados por vírgulas. Por exemplo, os prefixos test e staging corresponderiam a imagens com as etiquetas testenv e staging-1.5. tagState tem de estar definido como TAGGED para usar prefixos de etiquetas.
    • Prefixos de versão: - é uma lista separada por vírgulas de prefixos de versão do artefacto. Por exemplo, v1, v2 corresponderia às versões v1.5, v2.0alpha e v10.2.
    • Prefixos de pacotes: é uma lista de prefixos de nomes de artefactos separados por vírgulas. Por exemplo, red, blue corresponderia aos nomes dos artefactos red-team, redis, e bluebird.
    • Mais antigo do que: é o tempo mínimo desde que a versão de um artefacto foi criada no repositório, especificado como uma duração. Por exemplo, 30d é de 30 dias. Pode especificar durações de segundos, minutos, horas ou dias anexando s, m, h ou d, respetivamente.
    • 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 é de 30 dias.
  6. Pode adicionar mais políticas de limpeza clicando em Adicionar uma política de limpeza.

  7. Clique em Atualizar.

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

JSON

O formato é semelhante a uma política de eliminação. Para uma política de conservaçã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 o seguinte:

  • KEEP_POLICY_NAME com a política de limpeza um nome. O nome tem de ser exclusivo no grupo de políticas que aplica a um repositório.
  • TAG_STATUS com o estado da etiqueta, que indica se a política deve verificar a existência de artefactos etiquetados ou não etiquetados. Os artefactos são etiquetados quando envia ou extrai uma imagem para ou de um repositório. Para mais informações sobre as etiquetas Docker, consulte o artigo Conceitos de contentores.

    As opções são as seguintes:

    • tagged: aplica-se apenas a artefactos etiquetados.
    • untagged: aplica-se apenas a artefactos não etiquetados.
    • any: aplica-se a todas as versões

    Os formatos que não suportam etiquetas são tratados como untagged. Se um repositório tiver etiquetas imutáveis ativadas, não é possível eliminar os artefactos etiquetados. Para mais informações sobre o estado da etiqueta no que se refere às políticas de limpeza, consulte a referência TagState.

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

  • VERSION_PREFIXES com uma lista de prefixos de versão de artefactos separados por vírgulas. 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 nomes de artefactos. Por exemplo, red, blue corresponderia aos nomes dos artefactos red-team, redis e bluebird.

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

O Artifact Registry executa testes e execuções ativas de políticas de limpeza através de uma tarefa em segundo plano executada periodicamente. As alterações entram em vigor no prazo de aproximadamente um dia.

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

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

As políticas de conservação funcionam com as políticas de eliminação para conservar artefactos que seriam eliminados de acordo com as especificações da sua política de eliminação, mas que quer conservar. Quando um artefacto corresponde aos critérios de uma política de eliminação e de uma política de conservação, o artefacto é conservado.

consola

Pode criar uma política de conservação das 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 existente:

  1. Abra a página Repositórios na Google Cloud consola.

    Abra a página Repositórios

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

  3. Na secção Políticas de limpeza, selecione Teste de execução para testar a nova política antes de confirmar a eliminação de quaisquer artefactos. Tem de definir, pelo menos, uma política de eliminação para ver os resultados da sua política de retenção. Para mais informações sobre como ver os resultados do teste, consulte o artigo Teste de simulação.

    Quando tiver a certeza de que as suas políticas estão a funcionar como esperado, edite novamente as definições do repositório e selecione Eliminar artefactos para aplicar as políticas de limpeza e eliminar os artefactos selecionados.

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

    • Nome: atribua um nome à política de limpeza. O nome tem de ser exclusivo no grupo de políticas que aplica a um repositório.
    • Tipo de política: selecione Manter as versões mais recentes.
  5. No campo Keep count, introduza o número de versões de um artefacto a manter no seu repositório.

  6. Opcional: selecione Prefixos de pacotes para especificar os prefixos de pacotes aos quais aplicar a política de retenção. Por exemplo, red, blue corresponderia aos nomes dos artefactos red-team, redis e bluebird.

  7. Pode adicionar mais políticas de limpeza clicando em Adicionar uma política de limpeza.

  8. Clique em Atualizar.

    A sua política de limpeza é aplicada ao repositório. Pode ver as suas políticas de limpeza na secção Detalhes do repositório clicando em Mostrar mais.

JSON

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

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

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

Substitua o seguinte:

  • KEEP_POLICY_NAME com um nome para a política de retenção. O nome tem de ser exclusivo no grupo de políticas que aplica a um repositório.
  • PACKAGE_PREFIXES com os prefixos de pacotes opcionais aos quais aplicar a política de conservação. Por exemplo, red, blue corresponderia aos nomes dos artefactos red-team, redis e bluebird.
  • MINIMUM_NUMBER com o número de versões de um artefacto a manter no seu repositório.

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

O Artifact Registry executa testes e execuções ativas de políticas de limpeza através de uma tarefa em segundo plano executada periodicamente. As alterações entram em vigor no prazo de aproximadamente um dia.

Exemplo de ficheiro de políticas

O exemplo de ficheiro de políticas seguinte tem uma política de eliminação e duas políticas de conservação.

  • A política de delete-prerelease remove as versões de artefactos 30 dias após o carregamento se o artefacto começar com a string alpha ou v0.
  • A política keep-tagged-release retém artefactos etiquetados com o prefixo release que tenham um nome de ficheiro a começar por webapp ou mobile.
  • A política keep-minimum-versions retém as cinco versões mais recentes dos artefactos com um nome de ficheiro que comece por 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
    }
  }
]

Teste as suas políticas com uma execução de ensaio

Para testar as suas políticas de limpeza, pode definir a política de limpeza para execução de teste na consola ou executar o comando gcloud artifacts set-cleanup-policies com a flag --dry-run.

Para analisar o efeito das suas políticas de limpeza, pode ver os registos de auditoria de acesso a dados do Artifact Registry. Para receber registos de auditoria de acesso a dados para políticas de limpeza, tem de ativar explicitamente o tipo de escrita de dados dos registos de auditoria de acesso a dados para o serviço Artifact Registry. Para ativar os registos de auditoria de acesso a dados, consulte o artigo Ative os registos de auditoria.

consola

  1. Abra a página Repositórios na Google Cloud consola.

    Abra a página Repositórios

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

  3. Na secção Políticas de limpeza, selecione Teste.

  4. Clique em Adicionar uma política de limpeza e configure as opções para as políticas de eliminação condicional, manutenção condicional ou manutenção das versões mais recentes.

  5. Clique em Atualizar.

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

O Artifact Registry executa testes e execuções ativas de políticas de limpeza através de uma tarefa em segundo plano executada periodicamente. As alterações entram em vigor no prazo de aproximadamente um dia.

Aguarde, pelo menos, um dia antes de consultar os registos de auditoria da simulação.

Para consultar os registos de auditoria de testes de execução 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

O resultado é semelhante ao seguinte:

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 as 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 o seguinte:

  • REPOSITORY com o nome do repositório.
  • PROJECT_ID com o ID do seu Google Cloud projeto.
  • LOCATION é a localização regional ou multirregional do repositório.

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

O Artifact Registry executa testes e execuções ativas de políticas de limpeza através de uma tarefa em segundo plano executada periodicamente. As alterações entram em vigor no prazo de aproximadamente um dia.

Aguarde, pelo menos, um dia antes de consultar os registos de auditoria da simulação.

Para consultar os registos de auditoria de testes de execução 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

O resultado é semelhante ao seguinte:

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'

Aplique políticas a um repositório

Para usar as suas políticas de limpeza definidas num ficheiro JSON local, aplique-as aos repositórios onde quer que o Artifact Registry processe a eliminação automática de versões de artefactos através da CLI gcloud.

Para aplicar políticas de limpeza definidas como Execução de ensaio na consola, defina a política como Eliminar artefactos.

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

  • Um Google Cloud projeto.

consola

Para aplicar políticas de limpeza:

  1. Abra a página Repositórios na Google Cloud consola.

    Abra a página Repositórios

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

  3. Na secção Políticas de limpeza, selecione Eliminar artefactos.

    O Artifact Registry elimina e retém artefactos que correspondem às suas políticas através de uma tarefa em segundo plano executada periodicamente. As alterações devem entrar em vigor no prazo de, aproximadamente, um dia.

gcloud

Para aplicar políticas de limpeza, execute o seguinte comando no diretório com o ficheiro de política de limpeza.

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

Substitua o seguinte:

  • REPOSITORY com o nome do repositório.
  • PROJECT_ID com o ID do seu Google Cloud projeto.
  • LOCATION é a localização regional ou multirregional do repositório.
  • POLICY_FILE é o nome do ficheiro com a política de limpeza.

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

Por exemplo, o seguinte comando 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 elimina e retém artefactos que correspondem às suas políticas através de uma tarefa em segundo plano executada periodicamente. As alterações devem entrar em vigor no prazo de, aproximadamente, um dia.

Atualize uma política

consola

  1. Abra a página Repositórios na Google Cloud consola.

    Abra a página Repositórios

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

  3. Na secção Políticas de limpeza, clique no nome da política que quer definir para modificar.

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

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

gcloud

Para atualizar as políticas existentes, edite as definições no ficheiro de políticas e, em seguida, execute o seguinte comando para aplicar novamente as políticas.

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

Substitua o seguinte:

  • REPOSITORY com o nome do repositório.
  • PROJECT_ID com o ID do seu Google Cloud projeto.
  • LOCATION é a localização regional ou multirregional do repositório.
  • POLICY_FILE é o nome do ficheiro com a política de limpeza.

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

Políticas de limpeza do repositório de listas

Pode ver as políticas de limpeza associadas a um repositório.

consola

  1. Abra a página Repositórios na Google Cloud consola.

    Abra a página Repositórios

  2. Na lista de repositórios, selecione o repositório que quer ver.

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

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

  4. Para ver 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 são apresentados na secção Políticas de limpeza.

gcloud

Execute o seguinte comando:

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

Substitua o seguinte:

  • REPOSITORY com o nome do repositório.
  • PROJECT_ID com o ID do seu Google Cloud projeto.
  • LOCATION é a localização regional ou multirregional do repositório.

Remova uma política de um repositório

Remova uma política de limpeza de um repositório quando já não quiser que o Artifact Registry elimine automaticamente as versões de artefactos.

consola

  1. Abra a página Repositórios na Google Cloud consola.

    Abra a página Repositórios

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

  3. Na secção Políticas de limpeza, passe o cursor do rato sobre o nome da política que quer eliminar.

  4. Clique no ícone Eliminar.

  5. Clique em Atualizar.

    A política de limpeza é eliminada.

gcloud

Execute o seguinte comando:

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

Substitua o seguinte:

  • REPOSITORY é o nome do repositório.
  • PROJECT_IDé o ID do seu Google Cloud projeto.
  • LOCATION é a localização regional ou multirregional do repositório.
  • POLICY_NAMES é uma lista separada por vírgulas de nomes de políticas para as políticas que quer remover.

Por exemplo, o comando seguinte remove uma política com o nome delete-test do repositório my-repo na região us-west1 no projeto my-project:

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

Entradas do registo de auditoria para políticas de limpeza

Para ver as entradas do registo da política de limpeza nos Registos na nuvem, tem de ativar o registo DATA_WRITE.

Quando define uma política de limpeza num repositório, a operação é registada como uma atualização do repositório (operação UpdateRepository).

Quando o Artifact Registry elimina uma versão de um artefacto, regista o evento nos registos de acesso aos dados do Cloud Logging. As entradas do registo mostram que a conta de serviço do Artifact Registry efetuou a eliminação. O ID da conta de serviço do Artifact Registry está no formato service-PROJECT-NUMBER@gcp-sa-artifactregistry.iam.gserviceaccount.com