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:
Abra a página Repositórios na Google Cloud consola.
Na lista de repositórios, selecione o repositório e clique em Editar repositório.
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.
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.
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
estaging
corresponderiam a imagens com as etiquetastestenv
estaging-1.5
.tagState
tem de estar definido comoTAGGED
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õesv1.5
,v2.0alpha
ev10.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
eblue
, e corresponderia aos nomes dos artefactosred-team
,redis
> ebluebird
. - 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 anexandos
,m
,h
oud
, 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.
- Prefixos de etiquetas: é uma lista de prefixos de etiquetas separados por vírgulas. Por exemplo, os prefixos
Pode adicionar mais políticas de limpeza clicando em Adicionar uma política de limpeza.
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 comoTAGGED
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 anexandos
,m
,h
oud
, 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:
Abra a página Repositórios na Google Cloud consola.
Na lista de repositórios, selecione o repositório e clique em Editar repositório.
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.
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.
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
estaging
corresponderiam a imagens com as etiquetastestenv
estaging-1.5
.tagState
tem de estar definido comoTAGGED
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õesv1.5
,v2.0alpha
ev10.2
. - Prefixos de pacotes: é uma lista de prefixos de nomes de artefactos separados por vírgulas.
Por exemplo,
red, blue
corresponderia aos nomes dos artefactosred-team
,redis
, ebluebird
.
- 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 anexandos
,m
,h
oud
, 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.
- Prefixos de etiquetas: é uma lista de prefixos de etiquetas separados por vírgulas. Por exemplo, os prefixos
Pode adicionar mais políticas de limpeza clicando em Adicionar uma política de limpeza.
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 prefixostest
estaging
corresponderiam a imagens com as etiquetastestenv
estaging-1.5
.tagState
tem de estar definido comoTAGGED
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õesv1.5
,v2.0alpha
ev10.2
.PACKAGE_PREFIXES
com uma lista separada por vírgulas de prefixos de nomes de artefactos. Por exemplo,red, blue
corresponderia aos nomes dos artefactosred-team
,redis
ebluebird
.
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 anexandos
,m
,h
oud
, 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:
Abra a página Repositórios na Google Cloud consola.
Na lista de repositórios, selecione o repositório e clique em Editar repositório.
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.
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.
No campo Keep count, introduza o número de versões de um artefacto a manter no seu repositório.
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 artefactosred-team
,redis
ebluebird
.Pode adicionar mais políticas de limpeza clicando em Adicionar uma política de limpeza.
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 artefactosred-team
,redis
ebluebird
.
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 stringalpha
ouv0
. - A política
keep-tagged-release
retém artefactos etiquetados com o prefixorelease
que tenham um nome de ficheiro a começar porwebapp
oumobile
. - A política
keep-minimum-versions
retém as cinco versões mais recentes dos artefactos com um nome de ficheiro que comece porwebapp
,mobile
ousandbox
.
[
{
"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
Abra a página Repositórios na Google Cloud consola.
Na lista de repositórios, selecione o repositório e clique em Editar repositório.
Na secção Políticas de limpeza, selecione Teste.
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.
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:
Abra a página Repositórios na Google Cloud consola.
Na lista de repositórios, selecione o repositório e clique em Editar repositório.
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
Abra a página Repositórios na Google Cloud consola.
Na lista de repositórios, selecione o repositório e clique em Editar repositório.
Na secção Políticas de limpeza, clique no nome da política que quer definir para modificar.
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
Abra a página Repositórios na Google Cloud consola.
Na lista de repositórios, selecione o repositório que quer ver.
Na secção Detalhes do repositório, clique em Mostrar mais.
Os nomes das políticas de limpeza são apresentados.
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
Abra a página Repositórios na Google Cloud consola.
Na lista de repositórios, selecione o repositório e clique em Editar repositório.
Na secção Políticas de limpeza, passe o cursor do rato sobre o nome da política que quer eliminar.
Clique no ícone Eliminar.
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