Configurar políticas de limpieza

En este documento se describe cómo crear y gestionar políticas de limpieza.

Roles obligatorios

Para obtener los permisos que necesitas para aplicar o quitar políticas de limpieza, pide a tu administrador que te conceda el rol de gestión de identidades y accesos Administrador de Artifact Registry (roles/artifactregistry.admin) en el proyecto del repositorio. Para obtener más información sobre cómo conceder roles, consulta el artículo Gestionar el acceso a proyectos, carpetas y organizaciones.

Este rol predefinido contiene los permisos necesarios para aplicar o eliminar políticas de limpieza. Para ver los permisos exactos que se necesitan, despliega la sección Permisos necesarios:

Permisos obligatorios

Para aplicar o quitar políticas de limpieza, se necesitan los siguientes permisos:

  • artifactregistry.repositories.update
  • Para eliminar artefactos que cumplan los criterios de una política de limpieza, siga estos pasos: artifactregistry.versions.delete

También puedes obtener estos permisos con roles personalizados u otros roles predefinidos.

El rol predeterminado del agente de servicio de Artifact Registry incluye el permiso artifactregistry.versions.delete, que es necesario para eliminar imágenes que cumplan los criterios de una política de limpieza.

Crear archivos de política

Un archivo de política es un archivo JSON que define tus políticas de eliminación y conservación. Puedes crear un archivo de políticas creando y editando un archivo JSON y, a continuación, usando la CLI de Google Cloud para aplicar la política o usando la consola Google Cloud . Las políticas de eliminación especifican las condiciones para eliminar artefactos. Las políticas de conservación especifican las condiciones para conservar un artefacto o el número de versiones recientes que se deben conservar. No puedes usar condiciones y versiones más recientes en la misma política de conservación.

Crear una política de eliminación

Una política de eliminación te permite especificar la antigüedad mínima o máxima de los artefactos que se van a eliminar, así como criterios de filtrado adicionales para limitar la política a artefactos específicos.

Si hay determinados artefactos que no quiere que se eliminen por ningún motivo, cree una política de conservación condicional o una política de conservación de versiones más recientes, así como una política de eliminación. Si un artefacto cumple los criterios de la política de eliminación y de la política de conservación, se conservará.

consola

Puedes crear una política de eliminación para un repositorio nuevo o uno que ya tengas.

Para añadir una política de eliminación a un repositorio, sigue estos pasos:

  1. Abre la página Repositorios en la consola de Google Cloud .

    Abre la página Repositorios.

  2. En la lista de repositorios, selecciona el repositorio y haz clic en Editar repositorio.

  3. En la sección Políticas de limpieza, selecciona Prueba para probar tu nueva política antes de eliminar ningún artefacto. Para obtener más información sobre cómo ver los resultados de la prueba, consulta el artículo sobre la prueba de simulación.

    Cuando te asegures de que tu política funciona correctamente, vuelve a editar la configuración del repositorio y selecciona Eliminar artefactos para aplicar la política de limpieza y eliminar los artefactos seleccionados.

  4. Haz clic en Añadir una política de limpieza y añade lo siguiente:

    • Nombre: asigna un nombre a la política de limpieza. El nombre debe ser único en el grupo de políticas que apliques a un repositorio.
    • Tipo de política: selecciona Eliminación condicional.
    • Estado de la etiqueta: indica si la política debe comprobar si hay artefactos etiquetados o sin etiquetar. Los artefactos se etiquetan al enviar o extraer una imagen a un repositorio o desde él. Para obtener más información sobre las etiquetas de Docker, consulta Conceptos de contenedores.

      • Cualquier estado de la etiqueta: ignora el estado de la etiqueta y se aplica tanto a los artefactos etiquetados como a los que no lo están.
      • Etiquetado: solo se aplica a los artefactos etiquetados.
      • Sin etiquetar: solo se aplica a los artefactos sin etiquetar.

      Los formatos que no admiten etiquetas se tratan como untagged. Si un repositorio tiene habilitadas las etiquetas inmutables, los artefactos etiquetados no se pueden eliminar.

      Para obtener más información sobre el estado de las etiquetas en relación con las políticas de limpieza, consulte la referencia de TagState.

  5. Estas son algunas formas opcionales de definir tu política de eliminación:

    • Prefijos de etiquetas: es una lista separada por comas de prefijos de etiquetas. Por ejemplo, los prefijos test y staging coincidirían con las imágenes que tengan las etiquetas testenv y staging-1.5. Para usar prefijos de etiquetas, el valor de tagState debe ser TAGGED.
    • Prefijos de versión: es una lista separada por comas de prefijos de versión de artefacto. Por ejemplo, v1 y v2 coincidirían con las versiones v1.5, v2.0alpha y v10.2.
    • Prefijos de paquete: es una lista de prefijos de nombres de artefactos. Puedes introducir varios prefijos pulsando Enter o , entre ellos. Por ejemplo, red, blue crearía dos prefijos, red y blue, y coincidiría con los nombres de artefactos red-team, redis y bluebird.
    • Más antiguo que: es el tiempo mínimo transcurrido desde que se creó la versión de un artefacto en el repositorio. Se especifica como un periodo. Por ejemplo, 30d es de 30 días. Puedes especificar duraciones en segundos, minutos, horas o días añadiendo s, m, h o d respectivamente.
    • Más reciente que: es el tiempo máximo transcurrido desde que se creó la versión de un artefacto en el repositorio, especificado como duración. Por ejemplo, 30d es de 30 días.
  6. Para añadir más políticas de limpieza, haga clic en Añadir una política de limpieza.

  7. Haz clic en Actualizar.

    Tu política de limpieza se aplica al repositorio. Para ver tus políticas de limpieza, ve a la sección Detalles del repositorio y haz clic en Mostrar más.

JSON

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

Una política de eliminación debe incluir un nombre, una acción y al menos una condición.

name
En el fragmento de código para eliminar una política, DELETE_POLICY_NAME es el nombre de la política. El nombre debe ser único en el grupo de políticas que apliques a un repositorio.
action
En el caso de una política de eliminación, el valor es {"type": "Delete"}.
condition
Especifica una o varias de las siguientes condiciones:
  • tagState: TAG_STATUS indica si la política debe buscar artefactos etiquetados o sin etiquetar. Los artefactos se etiquetan al enviar o extraer una imagen a un repositorio o desde él. Los valores admitidos son:

    • tagged: solo se aplica a los artefactos etiquetados.
    • untagged: solo se aplica a los artefactos sin etiquetar.
    • any: ignora el estado de la etiqueta y se aplica tanto a los artefactos etiquetados como a los que no lo están.

    Los formatos que no admiten etiquetas se tratan como untagged. Si un repositorio tiene habilitadas las etiquetas inmutables, los artefactos etiquetados no se pueden eliminar.

    Para obtener más información sobre las etiquetas de Docker, consulta Conceptos de contenedores.

  • tagPrefixes: TAG_PREFIXES es una lista de prefijos de etiquetas separados por comas. Por ejemplo, "test", "staging" coincidiría con las imágenes que tengan las etiquetas "testenv" y "staging-1.5". Para usar prefijos de etiquetas, el valor de tagState debe ser TAGGED.

  • versionNamePrefixes: VERSION_PREFIXES es una lista de prefijos de versiones de artefactos separados por comas. Por ejemplo, "v1", "v2" coincidiría con las versiones "v1.5", "v2.0alpha" y "v10.2".

  • packageNamePrefixes: PACKAGE_PREFIXES es una lista de prefijos de nombres de artefactos separados por comas. Por ejemplo, "red", "blue" coincidiría con los nombres de artefactos "red-team", "redis" y "bluebird".

  • olderThan: OLDER_THAN_DURATION es el tiempo mínimo transcurrido desde que se creó la versión de un artefacto en el repositorio, especificado como duración. Por ejemplo, 30d es de 30 días. Puedes especificar duraciones en segundos, minutos, horas o días añadiendo s, m, h o d respectivamente.

  • newerThan: NEWER_THAN_DURATION es el tiempo máximo transcurrido desde que se creó la versión de un artefacto en el repositorio. Se especifica como una duración. Por ejemplo, 30d es de 30 días.

Artifact Registry realiza pruebas de funcionamiento y ejecuciones activas de las políticas de limpieza mediante un trabajo en segundo plano que se ejecuta periódicamente. Los cambios se aplican en un plazo de un día aproximadamente.

Crear una política de conservación condicional

Una política de conservación condicional especifica los criterios para conservar artefactos. Las políticas de conservación funcionan junto con las políticas de eliminación para conservar los artefactos que se eliminarían según las especificaciones de tu política de eliminación, pero que quieres conservar. Cuando un artefacto cumple los criterios de una política de eliminación y de una política de conservación, se conserva.

consola

Puedes crear una política de conservación para un repositorio nuevo o uno que ya tengas.

Para añadir una política de conservación a un repositorio, sigue estos pasos:

  1. Abre la página Repositorios en la consola de Google Cloud .

    Abre la página Repositorios.

  2. En la lista de repositorios, selecciona el repositorio y haz clic en Editar repositorio.

  3. En la sección Políticas de limpieza, selecciona Prueba para probar tu nueva política antes de eliminar ningún artefacto. Debes definir al menos una política de eliminación para ver los resultados de tu política de conservación. Para obtener más información sobre cómo ver los resultados de la prueba, consulta el artículo sobre la prueba de simulación.

    Cuando te asegures de que tus políticas funcionan correctamente, vuelve a editar la configuración del repositorio y selecciona Eliminar artefactos para aplicar tus políticas de limpieza y eliminar los artefactos seleccionados.

  4. Haz clic en Añadir una política de limpieza y añade lo siguiente:

    • Nombre: asigna un nombre a la política de limpieza. El nombre debe ser único en el grupo de políticas que apliques a un repositorio.
    • Tipo de política: selecciona Conservación condicional.
    • Estado de la etiqueta: indica si la política debe comprobar si hay artefactos etiquetados o sin etiquetar. Los artefactos se etiquetan al enviar o extraer una imagen a un repositorio o desde él. Para obtener más información sobre las etiquetas de Docker, consulta Conceptos de contenedores.

      • Cualquier estado de la etiqueta: ignora el estado de la etiqueta y se aplica tanto a los artefactos etiquetados como a los que no lo están.
      • Etiquetado: solo se aplica a los artefactos etiquetados.
      • Sin etiquetar: solo se aplica a los artefactos sin etiquetar.

      Los formatos que no admiten etiquetas se tratan como untagged. Si un repositorio tiene habilitadas las etiquetas inmutables, los artefactos etiquetados no se pueden eliminar. Para obtener más información sobre el estado de las etiquetas en relación con las políticas de limpieza, consulte la referencia de TagState.

  5. Estas son algunas formas opcionales de definir tu política de conservación:

    • Prefijos de etiquetas: es una lista separada por comas de prefijos de etiquetas. Por ejemplo, los prefijos test y staging coincidirían con las imágenes que tengan las etiquetas testenv y staging-1.5. Para usar prefijos de etiquetas, el valor de tagState debe ser TAGGED.
    • Prefijos de versión: es una lista separada por comas de prefijos de versión de artefacto. Por ejemplo, v1 y v2 coincidirían con las versiones v1.5, v2.0alpha y v10.2.
    • Prefijos de paquetes: es una lista separada por comas de prefijos de nombres de artefactos. Por ejemplo, red, blue coincidiría con los nombres de artefactos red-team, redis y bluebird.
    • Más antiguo que: es el tiempo mínimo transcurrido desde que se creó la versión de un artefacto en el repositorio. Se especifica como un periodo. Por ejemplo, 30d es de 30 días. Puedes especificar duraciones en segundos, minutos, horas o días añadiendo s, m, h o d respectivamente.
    • Más reciente que: es el tiempo máximo transcurrido desde que se creó la versión de un artefacto en el repositorio, especificado como duración. Por ejemplo, 30d es de 30 días.
  6. Para añadir más políticas de limpieza, haga clic en Añadir una política de limpieza.

  7. Haz clic en Actualizar.

    Tu política de limpieza se aplica al repositorio.

JSON

El formato es similar al de una política de eliminación. En el caso de una política de conservación, el valor de action es {"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"
  }
}

Haz los cambios siguientes:

  • KEEP_POLICY_NAME con el nombre de la política de limpieza. El nombre debe ser único en el grupo de políticas que apliques a un repositorio.
  • TAG_STATUS con el estado de la etiqueta, que indica si la política debe buscar artefactos etiquetados o sin etiquetar. Los artefactos se etiquetan al enviar o extraer una imagen a un repositorio o desde él. Para obtener más información sobre las etiquetas de Docker, consulta Conceptos de contenedores.

    Las opciones disponibles son:

    • tagged: solo se aplica a los artefactos etiquetados.
    • untagged: solo se aplica a los artefactos sin etiquetar.
    • any: se aplica a todas las versiones

    Los formatos que no admiten etiquetas se tratan como untagged. Si un repositorio tiene habilitadas las etiquetas inmutables, los artefactos etiquetados no se pueden eliminar. Para obtener más información sobre el estado de las etiquetas en relación con las políticas de limpieza, consulte la referencia de TagState.

  • TAG_PREFIXES con una lista de prefijos de etiquetas separados por comas. Por ejemplo, los prefijos test y staging coincidirían con las imágenes que tengan las etiquetas testenv y staging-1.5. Para usar prefijos de etiquetas, el valor de tagState debe ser TAGGED.

  • VERSION_PREFIXES con una lista de prefijos de versión de artefactos separados por comas. Por ejemplo, v1, v2 coincidiría con las versiones v1.5, v2.0alpha y v10.2.

  • PACKAGE_PREFIXES con una lista de prefijos de nombres de artefactos separados por comas. Por ejemplo, red, blue coincidiría con los nombres de artefactos red-team, redis y bluebird.

  • OLDER_THAN_DURATION con el tiempo mínimo transcurrido desde que se creó la versión de un artefacto en el repositorio, especificado como duración. Por ejemplo, 30d es de 30 días. Puedes especificar duraciones de segundos, minutos, horas o días añadiendo s, m, h o d, respectivamente.
  • NEWER_THAN_DURATION con el tiempo máximo transcurrido desde que se creó la versión de un artefacto en el repositorio, especificado como duración. Por ejemplo, 30d es de 30 días.

Artifact Registry realiza pruebas de funcionamiento y ejecuciones activas de las políticas de limpieza mediante un trabajo en segundo plano que se ejecuta periódicamente. Los cambios se aplican en un plazo de un día aproximadamente.

Crear una política de conservación para las versiones más recientes

Puedes crear una política de conservación para mantener un número específico de versiones. No puedes usar los criterios Conservación condicional y Conservar las versiones más recientes en la misma política de conservación.

Las políticas de conservación funcionan con las políticas de eliminación para conservar los artefactos que se eliminarían según las especificaciones de tu política de eliminación, pero que quieres conservar. Cuando un artefacto cumple los criterios de una política de eliminación y de una política de conservación, se conserva.

consola

Puedes crear una política de conservación de las versiones más recientes para un repositorio nuevo o uno que ya tengas.

Para añadir una política de conservación de las versiones más recientes a un repositorio, sigue estos pasos:

  1. Abre la página Repositorios en la consola de Google Cloud .

    Abre la página Repositorios.

  2. En la lista de repositorios, selecciona el repositorio y haz clic en Editar repositorio.

  3. En la sección Políticas de limpieza, selecciona Prueba para probar tu nueva política antes de eliminar ningún artefacto. Debes definir al menos una política de eliminación para ver los resultados de tu política de conservación. Para obtener más información sobre cómo ver los resultados de la prueba, consulta el artículo sobre la prueba de simulación.

    Cuando te asegures de que tus políticas funcionan correctamente, vuelve a editar la configuración del repositorio y selecciona Eliminar artefactos para aplicar tus políticas de limpieza y eliminar los artefactos seleccionados.

  4. Haz clic en Añadir una política de limpieza y añade lo siguiente:

    • Nombre: asigna un nombre a la política de limpieza. El nombre debe ser único en el grupo de políticas que apliques a un repositorio.
    • Tipo de política: selecciona Conservar las versiones más recientes.
  5. En el campo Mantener recuento, introduce el número de versiones de un artefacto que quieras conservar en tu repositorio.

  6. Opcional: Seleccione Prefijos de paquete para especificar los prefijos de paquete a los que se aplicará la política de conservación. Por ejemplo, red, blue coincidiría con los nombres de artefactos red-team, redis y bluebird.

  7. Para añadir más políticas de limpieza, haga clic en Añadir una política de limpieza.

  8. Haz clic en Actualizar.

    Tu política de limpieza se aplica al repositorio. Para ver tus políticas de limpieza, ve a la sección Detalles del repositorio y haz clic en Mostrar más.

JSON

El formato es similar al de una política de eliminación. En el caso de una política de conservación, el valor de action es {"type": "Keep"}.

Una política de conservación para mantener un número específico de versiones tiene una sección mostRecentVersions en lugar de una sección condition.

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

Haz los cambios siguientes:

  • KEEP_POLICY_NAME con un nombre para la política de conservación. El nombre debe ser único en el grupo de políticas que apliques a un repositorio.
  • PACKAGE_PREFIXES con los prefijos de paquete opcionales a los que se aplicará la política de conservación. Por ejemplo, red, blue coincidiría con los nombres de artefactos red-team, redis y bluebird.
  • MINIMUM_NUMBER con el número de versiones de un artefacto que quieras conservar en tu repositorio.

Para aplicar la política de conservación a todos los paquetes de tu repositorio, omite la condición packageNamePrefixes. Se conservará el número especificado de versiones recientes de cada paquete de tu repositorio.

Artifact Registry realiza pruebas de funcionamiento y ejecuciones activas de las políticas de limpieza mediante un trabajo en segundo plano que se ejecuta periódicamente. Los cambios se aplican en un plazo de un día aproximadamente.

Archivo de política de ejemplo

El siguiente ejemplo de archivo de política tiene una política de eliminación y dos políticas de conservación.

  • La política delete-prerelease elimina las versiones de artefactos 30 días después de la subida si el artefacto empieza por la cadena alpha o v0.
  • La política keep-tagged-release conserva los artefactos etiquetados con el prefijo release que tengan un nombre de archivo que empiece por webapp o mobile.
  • La política keep-minimum-versions conserva las cinco versiones más recientes de los artefactos cuyo nombre de archivo empieza por webapp, mobile o sandbox.
[
  {
    "name": "delete-prerelease",
    "action": {"type": "Delete"},
    "condition": {
      "tagState": "tagged",
      "tagPrefixes": ["alpha", "v0"],
      "olderThan": "30d"
    }
  },
  {
    "name": "keep-tagged-release",
    "action": {"type": "Keep"},
    "condition": {
      "tagState": "tagged",
      "tagPrefixes": ["release"],
      "packageNamePrefixes": ["webapp", "mobile"]
    }
  },
  {
    "name": "keep-minimum-versions",
    "action": {"type": "Keep"},
    "mostRecentVersions": {
      "packageNamePrefixes": ["webapp", "mobile", "sandbox"],
      "keepCount": 5
    }
  }
]

Probar las políticas con una prueba de funcionamiento

Para probar tus políticas de limpieza, puedes configurar la política de limpieza para que se ejecute en modo de prueba en la consola o ejecutar el comando gcloud artifacts set-cleanup-policies con la marca --dry-run.

Para analizar el efecto de tus políticas de limpieza, puedes consultar los registros de auditoría de acceso a datos de Artifact Registry. Para recibir registros de auditoría de acceso a datos de las políticas de limpieza, debe habilitar explícitamente el tipo escritura de datos de los registros de auditoría de acceso a datos del servicio Artifact Registry. Para habilitar los registros de auditoría de acceso a datos, consulta Habilitar registros de auditoría.

consola

  1. Abre la página Repositorios en la consola de Google Cloud .

    Abre la página Repositorios.

  2. En la lista de repositorios, selecciona el repositorio y haz clic en Editar repositorio.

  3. En la sección Políticas de limpieza, selecciona Prueba.

  4. Haz clic en Añadir una política de limpieza y configura las opciones de las políticas Eliminación condicional, Conservación condicional o Conservar las versiones más recientes.

  5. Haz clic en Actualizar.

Cuando una política de eliminación da como resultado una acción BatchDeleteVersions, el parámetro validateOnly se evalúa como "true".

Artifact Registry realiza pruebas de funcionamiento y ejecuciones activas de las políticas de limpieza mediante un trabajo en segundo plano que se ejecuta periódicamente. Los cambios se aplican en un plazo de un día aproximadamente.

Espera al menos un día antes de consultar los registros de auditoría de la prueba de funcionamiento.

Para consultar los registros de auditoría de las pruebas de funcionamiento de tus políticas de limpieza, ejecuta el siguiente comando:

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

La salida es similar a la siguiente:

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 hacer una prueba de funcionamiento con tus políticas de limpieza, ejecuta el siguiente comando:

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

Haz los cambios siguientes:

  • REPOSITORY con el nombre del repositorio.
  • PROJECT_ID por el ID de tu Google Cloud proyecto.
  • LOCATION es la ubicación regional o multirregional del repositorio.

Cuando una política de eliminación da como resultado una acción BatchDeleteVersions, el parámetro validateOnly se evalúa como "true".

Artifact Registry realiza pruebas de funcionamiento y ejecuciones activas de las políticas de limpieza mediante un trabajo en segundo plano que se ejecuta periódicamente. Los cambios se aplican en un plazo de un día aproximadamente.

Espera al menos un día antes de consultar los registros de auditoría de la prueba de funcionamiento.

Para consultar los registros de auditoría de las pruebas de funcionamiento de tus políticas de limpieza, ejecuta el siguiente comando:

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

La salida es similar a la siguiente:

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 un repositorio

Para usar las políticas de limpieza definidas en un archivo JSON local, aplícalas a los repositorios en los que quieras que Artifact Registry gestione la eliminación automática de versiones de artefactos mediante la CLI de gcloud.

Para aplicar las políticas de limpieza definidas como Prueba de funcionamiento en la consola, define la política como Eliminar artefactos.

Solo puedes aplicar políticas de limpieza a repositorios estándar. No puedes aplicar políticas de limpieza a lo siguiente:

  • Un Google Cloud proyecto.

consola

Para aplicar políticas de limpieza, sigue estos pasos:

  1. Abre la página Repositorios en la consola de Google Cloud .

    Abre la página Repositorios.

  2. En la lista de repositorios, selecciona el repositorio y haz clic en Editar repositorio.

  3. En la sección Políticas de limpieza, selecciona Eliminar artefactos.

    Artifact Registry elimina y conserva los artefactos que coinciden con tus políticas mediante un trabajo en segundo plano que se ejecuta periódicamente. Los cambios deberían aplicarse en un plazo de un día aproximadamente.

gcloud

Para aplicar las políticas de limpieza, ejecuta el siguiente comando en el directorio que contiene el archivo de políticas de limpieza.

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

Haz los cambios siguientes:

  • REPOSITORY con el nombre del repositorio.
  • PROJECT_ID por el ID de tu Google Cloud proyecto.
  • LOCATION es la ubicación regional o multirregional del repositorio.
  • POLICY_FILE es el nombre del archivo que contiene la política de limpieza.

La marca --no-dry-run inhabilita la función de prueba en el repositorio.

Por ejemplo, el siguiente comando aplica políticas en policy.json al repositorio my-repo de la región us-west1 del proyecto my-project.

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

Artifact Registry elimina y conserva los artefactos que coinciden con tus políticas mediante un trabajo en segundo plano que se ejecuta periódicamente. Los cambios deberían aplicarse en un plazo de un día aproximadamente.

Actualizar una política

consola

  1. Abre la página Repositorios en la consola de Google Cloud .

    Abre la página Repositorios.

  2. En la lista de repositorios, selecciona el repositorio y haz clic en Editar repositorio.

  3. En la sección Políticas de limpieza, haga clic en el nombre de la política que quiera modificar.

  4. Edita la política de limpieza y haz clic en Actualizar.

    Tu política de limpieza se aplica al repositorio.

gcloud

Para actualizar las políticas, edita los ajustes del archivo de políticas y, a continuación, ejecuta el siguiente comando para volver a aplicar las políticas.

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

Haz los cambios siguientes:

  • REPOSITORY con el nombre del repositorio.
  • PROJECT_ID por el ID de tu Google Cloud proyecto.
  • LOCATION es la ubicación regional o multirregional del repositorio.
  • POLICY_FILE es el nombre del archivo que contiene la política de limpieza.

La marca --no-dry-run inhabilita la función de prueba en el repositorio.

Lista de políticas de limpieza de repositorios

Puedes ver las políticas de limpieza asociadas a un repositorio.

consola

  1. Abre la página Repositorios en la consola de Google Cloud .

    Abre la página Repositorios.

  2. En la lista de repositorios, selecciona el que quieras ver.

  3. En la sección Detalles del repositorio, haga clic en Mostrar más.

    Se muestran los nombres de las políticas de limpieza.

  4. Para ver o editar los detalles de las políticas de limpieza del repositorio, haz clic en Editar repositorio.

    Los detalles de las políticas de limpieza que ya tenga se mostrarán en la sección Políticas de limpieza.

gcloud

Ejecuta el siguiente comando:

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

Haz los cambios siguientes:

  • REPOSITORY con el nombre del repositorio.
  • PROJECT_ID por el ID de tu Google Cloud proyecto.
  • LOCATION es la ubicación regional o multirregional del repositorio.

Quitar una política de un repositorio

Elimina una política de limpieza de un repositorio cuando ya no quieras que Artifact Registry elimine automáticamente las versiones de artefactos.

consola

  1. Abre la página Repositorios en la consola de Google Cloud .

    Abre la página Repositorios.

  2. En la lista de repositorios, selecciona el repositorio y haz clic en Editar repositorio.

  3. En la sección Políticas de limpieza, coloca el cursor sobre el nombre de la política que quieras eliminar.

  4. Haga clic en el icono Eliminar.

  5. Haz clic en Actualizar.

    Se elimina la política de limpieza.

gcloud

Ejecuta el siguiente comando:

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

Haz los cambios siguientes:

  • REPOSITORY es el nombre del repositorio.
  • PROJECT_ID es el ID de tu Google Cloud proyecto.
  • LOCATION es la ubicación regional o multirregional del repositorio.
  • POLICY_NAMES es una lista de nombres de políticas separada por comas que contiene las políticas que quieres quitar.

Por ejemplo, el siguiente comando elimina una política llamada delete-test del repositorio my-repo de la región us-west1 del proyecto my-project:

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

Entradas de registro de auditoría de las políticas de limpieza

Para ver las entradas de registro de la política de limpieza en Cloud Logging, debes habilitar DATA_WRITE el registro.

Cuando defines una política de limpieza en un repositorio, la operación se registra como una actualización del repositorio (operación UpdateRepository).

Cuando Artifact Registry elimina una versión de un artefacto, registra el evento en los registros de acceso a datos de Cloud Logging. Las entradas de registro muestran que la cuenta de servicio de Artifact Registry ha realizado la eliminación. El ID de la cuenta de servicio de Artifact Registry tiene el formato service-PROJECT-NUMBER@gcp-sa-artifactregistry.iam.gserviceaccount.com.