Bereinigungsrichtlinien konfigurieren

In diesem Dokument wird beschrieben, wie Sie Bereinigungsrichtlinien erstellen und verwalten.

Erforderliche Rollen

Bitten Sie Ihren Administrator, Ihnen die IAM-Rolle Artifact Registry Administrator (roles/artifactregistry.admin) für das Repository-Projekt zuzuweisen, um die Berechtigungen zu erhalten, die Sie zum Anwenden oder Entfernen von Bereinigungsrichtlinien benötigen. Weitere Informationen zum Zuweisen von Rollen finden Sie unter Zugriff auf Projekte, Ordner und Organisationen verwalten.

Diese vordefinierte Rolle enthält die Berechtigungen, die zum Anwenden oder Entfernen von Bereinigungsrichtlinien erforderlich sind. Erweitern Sie den Abschnitt Erforderliche Berechtigungen, um die erforderlichen Berechtigungen anzuzeigen:

Erforderliche Berechtigungen

Die folgenden Berechtigungen sind erforderlich, um Bereinigungsrichtlinien anzuwenden oder zu entfernen:

  • artifactregistry.repositories.update
  • So löschen Sie Artefakte, die den Kriterien in einer Bereinigungsrichtlinie entsprechen: artifactregistry.versions.delete

Sie können diese Berechtigungen auch mit benutzerdefinierten Rollen oder anderen vordefinierten Rollen erhalten.

Die Standardrolle für den Artifact Registry-Dienst-Agent enthält die Berechtigung artifactregistry.versions.delete, die zum Löschen von Bildern erforderlich ist, die den Kriterien in einer Bereinigungsrichtlinie entsprechen.

Richtliniendatei erstellen

Eine Richtliniendatei ist eine JSON-Datei, in der Ihre Lösch- und Aufbewahrungsrichtlinien definiert sind. Sie können eine Richtliniendatei erstellen, indem Sie eine JSON-Datei erstellen und bearbeiten. Anschließend können Sie die Richtlinie mit der Google Cloud CLI oder der Google Cloud -Konsole anwenden. Mit Löschrichtlinien werden Bedingungen für das Löschen von Artefakten angegeben. Mit Aufbewahrungsrichtlinien werden Bedingungen für die Aufbewahrung eines Artefakts oder eine Anzahl der letzten Versionen angegeben, die beibehalten werden sollen. Sie können in derselben Aufbewahrungsrichtlinie keine Bedingungen und neuesten Versionen verwenden.

Löschrichtlinie erstellen

Mit einer Löschrichtlinie können Sie das Mindest- oder Höchstalter für das Löschen von Artefakten und zusätzliche Filterkriterien angeben, um die Richtlinie auf bestimmte Artefakte zu beschränken.

Wenn Sie bestimmte Artefakte haben, die aus irgendeinem Grund nicht gelöscht werden sollen, erstellen Sie eine bedingte Aufbewahrungsrichtlinie oder eine Aufbewahrungsrichtlinie für die neuesten Versionen sowie eine Löschrichtlinie. Wenn ein Artefakt den Kriterien sowohl in der Löschrichtlinie als auch in der Aufbewahrungsrichtlinie entspricht, wird es beibehalten.

Console

Sie können eine Löschrichtlinie für ein neues oder vorhandenes Repository erstellen.

So fügen Sie einem vorhandenen Repository eine Löschrichtlinie hinzu:

  1. Öffnen Sie in der Google Cloud Console die Seite Repositories.

    Zur Seite „Repositories“

  2. Wählen Sie in der Repository-Liste das Repository aus und klicken Sie auf Repository bearbeiten.

  3. Wählen Sie im Abschnitt Bereinigungsrichtlinien die Option Probelauf aus, um die neue Richtlinie zu testen, bevor Sie Artefakte löschen. Weitere Informationen zum Anzeigen der Testergebnisse finden Sie unter Probelauf.

    Wenn Sie sicher sind, dass Ihre Richtlinie wie vorgesehen funktioniert, bearbeiten Sie die Repository-Einstellungen noch einmal und wählen Sie Artefakte löschen aus, um die Bereinigungsrichtlinie anzuwenden und die ausgewählten Artefakte zu löschen.

  4. Klicken Sie auf Bereinigungsrichtlinie hinzufügen und fügen Sie Folgendes hinzu:

    • Name: Geben Sie der Bereinigungsrichtlinie einen Namen. Der Name muss innerhalb der Gruppe von Richtlinien, die Sie auf ein Repository anwenden, eindeutig sein.
    • Richtlinientyp: Wählen Sie Bedingte Löschung aus.
    • Tag-Status: Gibt an, ob die Richtlinie nach Artefakten mit oder ohne Tag suchen soll. Artefakte werden getaggt, wenn ein Image in ein Repository übertragen oder aus einem Repository abgerufen wird. Weitere Informationen zu Docker-Tags finden Sie unter Containerkonzepte.

      • Beliebiger Tag-Status: Der Tag-Status wird ignoriert. Die Option gilt sowohl für Artefakte mit als auch ohne Tag.
      • Getaggt: Gilt nur für getaggte Artefakte.
      • Nicht getaggt: Gilt nur für nicht getaggte Artefakte.

      Formate, die keine Tags unterstützen, werden als untagged behandelt. Wenn für ein Repository unveränderliche Tags aktiviert sind, können getaggte Artefakte nicht gelöscht werden.

      Weitere Informationen zum Tag-Status in Bezug auf Bereinigungsrichtlinien finden Sie in der TagState-Referenz.

  5. Sie haben folgende optionale Möglichkeiten, Ihre Löschrichtlinie zu definieren:

    • Tag-Präfixe: Eine durch Kommas getrennte Liste von Tag-Präfixen. Die Präfixe test und staging würden beispielsweise mit Bildern mit den Tags testenv und staging-1.5 übereinstimmen. tagState muss auf TAGGED gesetzt sein, damit Tag-Präfixe verwendet werden können.
    • Versionspräfixe: - ist eine durch Kommas getrennte Liste von Artefaktversionspräfixen. Beispiel: v1, v2 würde mit den Versionen v1.5, v2.0alpha und v10.2 übereinstimmen.
    • Paketpräfixe: Eine Liste mit Präfixen für Artefaktnamen. Sie können mehrere Präfixe eingeben, indem Sie zwischen den Präfixen Enter oder , drücken. Mit red, blue werden beispielsweise die beiden Präfixe red und blue erstellt. Sie stimmen mit den Artefaktnamen red-team, redis und bluebird überein.
    • Älter als: Die Mindestzeit seit der Erstellung der Version eines Artefakts im Repository, angegeben als Dauer. Beispiel: 30d entspricht 30 Tagen. Sie können die Dauer in Sekunden, Minuten, Stunden oder Tagen angeben, indem Sie s, m, h oder d anhängen.
    • Newer than (Jünger als): Die maximale Zeit seit der Erstellung der Version eines Artefakts im Repository, angegeben als Dauer. Beispiel: 30d entspricht 30 Tagen.
  6. Sie können weitere Bereinigungsrichtlinien hinzufügen, indem Sie auf Bereinigungsrichtlinie hinzufügen klicken.

  7. Klicken Sie auf Aktualisieren.

    Ihre Bereinigungsrichtlinie wird auf Ihr Repository angewendet. Ihre Bereinigungsrichtlinien können Sie im Bereich Repository details (Repository-Details) aufrufen, indem Sie auf Show more (Mehr anzeigen) klicken.

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

Eine Löschrichtlinie muss einen Namen, eine Aktion und mindestens eine Bedingung enthalten.

name
Im Snippet für die Löschrichtlinie ist DELETE_POLICY_NAME der Name der Richtlinie. Der Name muss innerhalb der Gruppe von Richtlinien, die Sie auf ein Repository anwenden, eindeutig sein.
action
Bei einer Löschrichtlinie ist der Wert {"type": "Delete"}.
condition
Geben Sie eine oder mehrere der folgenden Bedingungen an:
  • tagState: TAG_STATUS gibt an, ob die Richtlinie nach getaggten oder nicht getaggten Artefakten suchen soll. Artefakte werden getaggt, wenn ein Image in ein Repository übertragen oder aus einem Repository abgerufen wird. Unterstützte Werte:

    • tagged: Gilt nur für getaggte Artefakte.
    • untagged: Gilt nur für Artefakte ohne Tag.
    • any: Der Tag-Status wird ignoriert und gilt sowohl für getaggte als auch für nicht getaggte Artefakte.

    Formate, die keine Tags unterstützen, werden als untagged behandelt. Wenn für ein Repository unveränderliche Tags aktiviert sind, können getaggte Artefakte nicht gelöscht werden.

    Weitere Informationen zu Docker-Tags finden Sie unter Containerkonzepte.

  • tagPrefixes: TAG_PREFIXES ist eine durch Kommas getrennte Liste von Tag-Präfixen. Beispielsweise würde "test", "staging" mit Bildern mit den Tags "testenv" und "staging-1.5" übereinstimmen. tagState muss auf TAGGED gesetzt sein, damit Tag-Präfixe verwendet werden können.

  • versionNamePrefixes: VERSION_PREFIXES ist eine durch Kommas getrennte Liste von Artefaktversionspräfixen. Beispiel: "v1", "v2" würde mit den Versionen "v1.5", "v2.0alpha" und "v10.2" übereinstimmen.

  • packageNamePrefixes: PACKAGE_PREFIXES ist eine durch Kommas getrennte Liste von Artefaktnamenpräfixen. Beispiel: "red", "blue" würde mit den Artefaktnamen "red-team", "redis" und "bluebird" übereinstimmen.

  • olderThan: OLDER_THAN_DURATION ist die Mindestzeit seit der Erstellung der Version eines Artefakts im Repository, angegeben als Dauer. Beispiel: 30d entspricht 30 Tagen. Sie können die Dauer in Sekunden, Minuten, Stunden oder Tagen angeben, indem Sie s, m, h oder d anhängen.

  • newerThan: NEWER_THAN_DURATION ist die maximale Zeit seit der Erstellung der Version eines Artefakts im Repository, angegeben als Dauer. Beispiel: 30d entspricht 30 Tagen.

In Artifact Registry werden Probeläufe und aktive Läufe von Bereinigungsrichtlinien mit einem Hintergrundjob durchgeführt, der regelmäßig ausgeführt wird. Änderungen werden innerhalb von etwa einem Tag wirksam.

Bedingte Aufbewahrungsrichtlinie erstellen

Eine bedingte Aufbewahrungsrichtlinie gibt Kriterien für die Aufbewahrung von Artefakten an. Mit Aufbewahrungsrichtlinien können Sie Artefakte beibehalten, die gemäß den Spezifikationen Ihrer Löschrichtlinie gelöscht würden. Wenn ein Artefakt die Kriterien für eine Löschrichtlinie und eine Aufbewahrungsrichtlinie erfüllt, wird es beibehalten.

Console

Sie können eine Aufbewahrungsrichtlinie für ein neues oder vorhandenes Repository erstellen.

So fügen Sie einem vorhandenen Repository eine Aufbewahrungsrichtlinie hinzu:

  1. Öffnen Sie in der Google Cloud Console die Seite Repositories.

    Zur Seite „Repositories“

  2. Wählen Sie in der Repository-Liste das Repository aus und klicken Sie auf Repository bearbeiten.

  3. Wählen Sie im Abschnitt Bereinigungsrichtlinien die Option Probelauf aus, um die neue Richtlinie zu testen, bevor Sie Artefakte löschen. Sie müssen mindestens eine Löschrichtlinie festlegen, um die Ergebnisse Ihrer Aufbewahrungsrichtlinie zu sehen. Weitere Informationen zum Anzeigen der Testergebnisse finden Sie unter Probelauf.

    Wenn Sie sicher sind, dass Ihre Richtlinien wie vorgesehen funktionieren, bearbeiten Sie die Repository-Einstellungen noch einmal und wählen Sie Artefakte löschen aus, um Ihre Bereinigungsrichtlinien anzuwenden und die ausgewählten Artefakte zu löschen.

  4. Klicken Sie auf Bereinigungsrichtlinie hinzufügen und fügen Sie Folgendes hinzu:

    • Name: Geben Sie der Bereinigungsrichtlinie einen Namen. Der Name muss innerhalb der Gruppe von Richtlinien, die Sie auf ein Repository anwenden, eindeutig sein.
    • Richtlinientyp: Wählen Sie Bedingtes Beibehalten aus.
    • Tag-Status: Gibt an, ob die Richtlinie nach Artefakten mit oder ohne Tag suchen soll. Artefakte werden getaggt, wenn ein Image in ein Repository übertragen oder aus einem Repository abgerufen wird. Weitere Informationen zu Docker-Tags finden Sie unter Containerkonzepte.

      • Beliebiger Tag-Status: Der Tag-Status wird ignoriert. Die Option gilt sowohl für Artefakte mit als auch ohne Tag.
      • Getaggt: Gilt nur für getaggte Artefakte.
      • Nicht getaggt: Gilt nur für nicht getaggte Artefakte.

      Formate, die keine Tags unterstützen, werden als untagged behandelt. Wenn für ein Repository unveränderliche Tags aktiviert sind, können getaggte Artefakte nicht gelöscht werden. Weitere Informationen zum Tag-Status in Bezug auf Bereinigungsrichtlinien finden Sie in der TagState-Referenz.

  5. Sie haben folgende optionale Möglichkeiten, Ihre Aufbewahrungsrichtlinie zu definieren:

    • Tag-Präfixe: Eine durch Kommas getrennte Liste von Tag-Präfixen. Die Präfixe test und staging würden beispielsweise mit Bildern mit den Tags testenv und staging-1.5 übereinstimmen. tagState muss auf TAGGED gesetzt sein, damit Tag-Präfixe verwendet werden können.
    • Versionspräfixe: - ist eine durch Kommas getrennte Liste von Artefaktversionspräfixen. Beispiel: v1, v2 würde mit den Versionen v1.5, v2.0alpha und v10.2 übereinstimmen.
    • Paketpräfixe: Eine durch Kommas getrennte Liste von Artefaktnamenpräfixen. Beispiel: red, blue würde mit den Artefaktnamen red-team, redis und bluebird übereinstimmen.
    • Älter als: Die Mindestzeit seit der Erstellung der Version eines Artefakts im Repository, angegeben als Dauer. Beispiel: 30d entspricht 30 Tagen. Sie können die Dauer in Sekunden, Minuten, Stunden oder Tagen angeben, indem Sie s, m, h oder d anhängen.
    • Newer than (Jünger als): Die maximale Zeit seit der Erstellung der Version eines Artefakts im Repository, angegeben als Dauer. Beispiel: 30d entspricht 30 Tagen.
  6. Sie können weitere Bereinigungsrichtlinien hinzufügen, indem Sie auf Bereinigungsrichtlinie hinzufügen klicken.

  7. Klicken Sie auf Aktualisieren.

    Ihre Bereinigungsrichtlinie wird auf Ihr Repository angewendet.

JSON

Das Format ähnelt dem einer Löschrichtlinie. Bei einer Aufbewahrungsrichtlinie ist der Wert für 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"
  }
}

Ersetzen Sie Folgendes:

  • Ersetzen Sie KEEP_POLICY_NAME durch den Namen der Bereinigungsrichtlinie. Der Name muss innerhalb der Gruppe von Richtlinien, die Sie auf ein Repository anwenden, eindeutig sein.
  • TAG_STATUS mit dem Tag-Status, der angibt, ob die Richtlinie nach getaggten oder nicht getaggten Artefakten suchen soll. Artefakte werden beim Push oder Pull eines Images in bzw. aus einem Repository getaggt. Weitere Informationen zu Docker-Tags finden Sie unter Containerkonzepte.

    Folgende Optionen sind verfügbar:

    • tagged: Gilt nur für getaggte Artefakte.
    • untagged: Gilt nur für Artefakte ohne Tag.
    • any: Gilt für alle Versionen

    Formate, die keine Tags unterstützen, werden als untagged behandelt. Wenn für ein Repository unveränderliche Tags aktiviert sind, können getaggte Artefakte nicht gelöscht werden. Weitere Informationen zum Tag-Status in Bezug auf Bereinigungsrichtlinien finden Sie in der TagState-Referenz.

  • TAG_PREFIXES durch eine durch Kommas getrennte Liste von Tag-Präfixen ersetzen. Die Präfixe test und staging würden beispielsweise mit Bildern mit den Tags testenv und staging-1.5 übereinstimmen. tagState muss auf TAGGED gesetzt sein, damit Tag-Präfixe verwendet werden können.

  • VERSION_PREFIXES durch eine durch Kommas getrennte Liste von Präfixen für Artefaktversionen. Beispiel: v1, v2 würde mit den Versionen v1.5, v2.0alpha und v10.2 übereinstimmen.

  • PACKAGE_PREFIXES durch eine durch Kommas getrennte Liste von Präfixen für Artefaktnamen. Beispiel: red, blue würde mit den Artefaktnamen red-team, redis und bluebird übereinstimmen.

  • OLDER_THAN_DURATION mit der Mindestzeit seit der Erstellung der Version eines Artefakts im Repository, angegeben als Dauer. Beispiel: 30d entspricht 30 Tagen. Sie können Zeiträume in Sekunden, Minuten, Stunden oder Tagen angeben, indem Sie s, m, h oder d anhängen.
  • NEWER_THAN_DURATION mit der maximalen Zeit seit der Erstellung der Version eines Artefakts im Repository, angegeben als Dauer. Beispiel: 30d entspricht 30 Tagen.

In Artifact Registry werden Probeläufe und aktive Läufe von Bereinigungsrichtlinien mit einem Hintergrundjob durchgeführt, der regelmäßig ausgeführt wird. Änderungen werden innerhalb von etwa einem Tag wirksam.

Aufbewahrungsrichtlinie für die neuesten Versionen erstellen

Sie können eine Aufbewahrungsrichtlinie erstellen, um eine bestimmte Anzahl von Versionen beizubehalten. Sie können die Kriterien Bedingt beibehalten und Neueste Versionen beibehalten nicht in derselben Aufbewahrungsrichtlinie verwenden.

Mit Aufbewahrungsrichtlinien können Sie Artefakte beibehalten, die gemäß den Spezifikationen Ihrer Löschrichtlinie gelöscht würden. Wenn ein Artefakt die Kriterien für eine Löschrichtlinie und eine Aufbewahrungsrichtlinie erfüllt, wird es beibehalten.

Console

Sie können eine Richtlinie zum Beibehalten der neuesten Versionen für ein neues oder vorhandenes Repository erstellen.

So fügen Sie einem vorhandenen Repository eine Richtlinie zum Beibehalten der neuesten Versionen hinzu:

  1. Öffnen Sie in der Google Cloud Console die Seite Repositories.

    Zur Seite „Repositories“

  2. Wählen Sie in der Repository-Liste das Repository aus und klicken Sie auf Repository bearbeiten.

  3. Wählen Sie im Abschnitt Bereinigungsrichtlinien die Option Probelauf aus, um die neue Richtlinie zu testen, bevor Sie Artefakte löschen. Sie müssen mindestens eine Löschrichtlinie festlegen, um die Ergebnisse Ihrer Aufbewahrungsrichtlinie zu sehen. Weitere Informationen zum Anzeigen der Testergebnisse finden Sie unter Probelauf.

    Wenn Sie sicher sind, dass Ihre Richtlinien wie vorgesehen funktionieren, bearbeiten Sie die Repository-Einstellungen noch einmal und wählen Sie Artefakte löschen aus, um Ihre Bereinigungsrichtlinien anzuwenden und die ausgewählten Artefakte zu löschen.

  4. Klicken Sie auf Bereinigungsrichtlinie hinzufügen und fügen Sie Folgendes hinzu:

    • Name: Geben Sie der Bereinigungsrichtlinie einen Namen. Der Name muss innerhalb der Gruppe von Richtlinien, die Sie auf ein Repository anwenden, eindeutig sein.
    • Richtlinientyp: Wählen Sie Neueste Versionen beibehalten aus.
  5. Geben Sie im Feld Anzahl beibehalten die Anzahl der Versionen eines Artefakts ein, die in Ihrem Repository beibehalten werden sollen.

  6. Optional: Wählen Sie Paketpräfixe aus, um Paketpräfixe anzugeben, auf die die Aufbewahrungsrichtlinie angewendet werden soll. Beispiel: red, blue würde mit den Artefaktnamen red-team, redis und bluebird übereinstimmen.

  7. Sie können weitere Bereinigungsrichtlinien hinzufügen, indem Sie auf Bereinigungsrichtlinie hinzufügen klicken.

  8. Klicken Sie auf Aktualisieren.

    Ihre Bereinigungsrichtlinie wird auf Ihr Repository angewendet. Ihre Bereinigungsrichtlinien können Sie im Bereich Repository details (Repository-Details) aufrufen, indem Sie auf Show more (Mehr anzeigen) klicken.

JSON

Das Format ähnelt dem einer Löschrichtlinie. Bei einer Aufbewahrungsrichtlinie ist der Wert für action {"type": "Keep"}.

Eine Aufbewahrungsrichtlinie zum Beibehalten einer bestimmten Anzahl von Versionen hat einen mostRecentVersions-Abschnitt anstelle eines condition-Abschnitts.

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

Ersetzen Sie Folgendes:

  • KEEP_POLICY_NAME mit einem Namen für die Aufbewahrungsrichtlinie. Der Name muss innerhalb der Gruppe von Richtlinien, die Sie auf ein Repository anwenden, eindeutig sein.
  • PACKAGE_PREFIXES mit den optionalen Paketpräfixen, auf die die Keep-Richtlinie angewendet werden soll. Beispiel: red, blue würde mit den Artefaktnamen red-team, redis und bluebird übereinstimmen.
  • MINIMUM_NUMBER durch die Anzahl der Versionen eines Artefakts, die in Ihrem Repository beibehalten werden sollen.

Wenn Sie die Aufbewahrungsrichtlinie auf alle Pakete in Ihrem Repository anwenden möchten, lassen Sie die Bedingung packageNamePrefixes weg. Die angegebene Anzahl der letzten Versionen jedes Pakets in Ihrem Repository wird beibehalten.

In Artifact Registry werden Probeläufe und aktive Läufe von Bereinigungsrichtlinien mit einem Hintergrundjob durchgeführt, der regelmäßig ausgeführt wird. Änderungen werden innerhalb von etwa einem Tag wirksam.

Beispiel für eine Richtliniendatei

Das folgende Beispiel für eine Richtliniendatei enthält eine Löschrichtlinie und zwei Aufbewahrungsrichtlinien.

  • Gemäß der delete-prerelease-Richtlinie werden Artefaktversionen 30 Tage nach dem Upload entfernt, wenn das Artefakt mit dem String alpha oder v0 beginnt.
  • Mit der Richtlinie keep-tagged-release werden Artefakte mit dem Präfix release beibehalten, deren Dateiname mit webapp oder mobile beginnt.
  • Gemäß der Richtlinie keep-minimum-versions werden die fünf neuesten Versionen von Artefakten beibehalten, deren Dateiname mit webapp, mobile oder sandbox beginnt.
[
  {
    "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
    }
  }
]

Richtlinien mit einem Probelauf testen

Wenn Sie Ihre Bereinigungsrichtlinien testen möchten, können Sie sie in der Konsole auf „Probelauf“ festlegen oder den Befehl gcloud artifacts set-cleanup-policies mit dem Flag --dry-run ausführen.

Um die Auswirkungen Ihrer Bereinigungsrichtlinien zu analysieren, können Sie die Audit-Logs für den Datenzugriff auf Artifact Registry ansehen. Wenn Sie Audit-Logs zum Datenzugriff für Bereinigungsrichtlinien erhalten möchten, müssen Sie den Typ Datenschreiben von Audit-Logs zum Datenzugriff für den Artifact Registry-Dienst explizit aktivieren. Informationen zum Aktivieren von Audit-Logs zum Datenzugriff finden Sie unter Audit-Logs aktivieren.

Console

  1. Öffnen Sie in der Google Cloud Console die Seite Repositories.

    Zur Seite „Repositories“

  2. Wählen Sie in der Repository-Liste das Repository aus und klicken Sie auf Repository bearbeiten.

  3. Wählen Sie im Abschnitt Bereinigungsrichtlinien die Option Probelauf aus.

  4. Klicken Sie auf Bereinigungsrichtlinie hinzufügen und konfigurieren Sie die Optionen für die Richtlinien Bedingtes Löschen, Bedingtes Beibehalten oder Neueste Versionen beibehalten.

  5. Klicken Sie auf Aktualisieren.

Wenn eine Löschrichtlinie zu einer BatchDeleteVersions-Aktion führt, wird der Parameter validateOnly als "true" ausgewertet.

In Artifact Registry werden Probeläufe und aktive Läufe von Bereinigungsrichtlinien mit einem Hintergrundjob durchgeführt, der regelmäßig ausgeführt wird. Änderungen werden innerhalb von etwa einem Tag wirksam.

Warten Sie mindestens einen Tag, bevor Sie Audit-Logs für den Probelauf abfragen.

Führen Sie den folgenden Befehl aus, um Audit-Logs für Probeläufe Ihrer Bereinigungsrichtlinien abzufragen:

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

Die Ausgabe sollte so aussehen:

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

Führen Sie den folgenden Befehl aus, um einen Probelauf mit Ihren Bereinigungsrichtlinien durchzuführen:

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

Ersetzen Sie Folgendes:

  • REPOSITORY durch den Namen des Repositorys.
  • PROJECT_ID durch die ID Ihres Google Cloud -Projekts.
  • LOCATION ist der regionale oder multiregionale Speicherort des Repositorys.

Wenn eine Löschrichtlinie zu einer BatchDeleteVersions-Aktion führt, wird der Parameter validateOnly als "true" ausgewertet.

In Artifact Registry werden Probeläufe und aktive Läufe von Bereinigungsrichtlinien mit einem Hintergrundjob durchgeführt, der regelmäßig ausgeführt wird. Änderungen werden innerhalb von etwa einem Tag wirksam.

Warten Sie mindestens einen Tag, bevor Sie Audit-Logs für den Probelauf abfragen.

Führen Sie den folgenden Befehl aus, um Audit-Logs für Probeläufe Ihrer Bereinigungsrichtlinien abzufragen:

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

Die Ausgabe sollte so aussehen:

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'

Richtlinien auf ein Repository anwenden

Wenn Sie Ihre in einer lokalen JSON-Datei definierten Bereinigungsrichtlinien verwenden möchten, wenden Sie sie mit der gcloud CLI auf die Repositories an, in denen Artifact Registry das automatische Löschen von Artefaktversionen übernehmen soll.

Wenn Sie Bereinigungsrichtlinien, die in der Console auf Probelauf festgelegt sind, anwenden möchten, legen Sie die Richtlinie auf Artefakte löschen fest.

Sie können Bereinigungsrichtlinien nur auf Standard-Repositories anwenden. Sie können keine Bereinigungsrichtlinien auf Folgendes anwenden:

  • Ein Google Cloud -Projekt.

Console

So wenden Sie Bereinigungsrichtlinien an:

  1. Öffnen Sie in der Google Cloud Console die Seite Repositories.

    Zur Seite „Repositories“

  2. Wählen Sie in der Repository-Liste das Repository aus und klicken Sie auf Repository bearbeiten.

  3. Wählen Sie im Abschnitt Bereinigungsrichtlinien die Option Artefakte löschen aus.

    Artefakte, die Ihren Richtlinien entsprechen, werden in Artifact Registry mit einem Hintergrundjob gelöscht und beibehalten, der regelmäßig ausgeführt wird. Änderungen sollten innerhalb von etwa einem Tag wirksam werden.

gcloud

Führen Sie den folgenden Befehl im Verzeichnis mit der Bereinigungsrichtliniendatei aus, um Bereinigungsrichtlinien anzuwenden.

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

Ersetzen Sie Folgendes:

  • REPOSITORY durch den Namen des Repositorys.
  • PROJECT_ID durch die ID Ihres Google Cloud -Projekts.
  • LOCATION ist der regionale oder multiregionale Speicherort des Repositorys.
  • POLICY_FILE ist der Name der Datei mit der Bereinigungsrichtlinie.

Das Flag --no-dry-run deaktiviert die Dry-Run-Funktion für das Repository.

Mit dem folgenden Befehl werden beispielsweise Richtlinien in policy.json auf das Repository my-repo in der Region us-west1 im Projekt my-project angewendet.

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

Artifact Registry löscht und behält Artefakte, die Ihren Richtlinien entsprechen, mithilfe eines Hintergrundjobs, der regelmäßig ausgeführt wird. Änderungen sollten innerhalb von etwa einem Tag wirksam werden.

Richtlinie aktualisieren

Console

  1. Öffnen Sie in der Google Cloud Console die Seite Repositories.

    Zur Seite „Repositories“

  2. Wählen Sie in der Repository-Liste das Repository aus und klicken Sie auf Repository bearbeiten.

  3. Klicken Sie im Bereich Bereinigungsrichtlinien auf den Namen der Richtlinie, die Sie ändern möchten.

  4. Bearbeiten Sie die Bereinigungsrichtlinie und klicken Sie auf Aktualisieren.

    Ihre Bereinigungsrichtlinie wird auf Ihr Repository angewendet.

gcloud

Wenn Sie vorhandene Richtlinien aktualisieren möchten, bearbeiten Sie die Einstellungen in Ihrer Richtliniendatei und führen Sie dann den folgenden Befehl aus, um die Richtlinien noch einmal anzuwenden.

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

Ersetzen Sie Folgendes:

  • REPOSITORY durch den Namen des Repositorys.
  • PROJECT_ID durch die ID Ihres Google Cloud -Projekts.
  • LOCATION ist der regionale oder multiregionale Speicherort des Repositorys.
  • POLICY_FILE ist der Name der Datei mit der Bereinigungsrichtlinie.

Das Flag --no-dry-run deaktiviert die Dry-Run-Funktion für das Repository.

Bereinigungsrichtlinien für Repositorys auflisten

Sie können die mit einem Repository verknüpften Bereinigungsrichtlinien ansehen.

Console

  1. Öffnen Sie in der Google Cloud Console die Seite Repositories.

    Zur Seite „Repositories“

  2. Wählen Sie in der Liste der Repositories das Repository aus, das Sie aufrufen möchten.

  3. Klicken Sie im Bereich Repository-Details auf Mehr anzeigen.

    Die Namen der Bereinigungsrichtlinien werden angezeigt.

  4. Wenn Sie die Details der Bereinigungsrichtlinien des Repositorys aufrufen oder bearbeiten möchten, klicken Sie auf Repository bearbeiten.

    Die Details Ihrer vorhandenen Bereinigungsrichtlinien sind im Abschnitt Bereinigungsrichtlinien aufgeführt.

gcloud

Führen Sie dazu diesen Befehl aus:

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

Ersetzen Sie Folgendes:

  • REPOSITORY durch den Namen des Repositorys.
  • PROJECT_ID durch die ID Ihres Google Cloud -Projekts.
  • LOCATION ist der regionale oder multiregionale Speicherort des Repositorys.

Richtlinie aus einem Repository entfernen

Entfernen Sie eine Bereinigungsrichtlinie aus einem Repository, wenn Artifact Registry Artefaktversionen nicht mehr automatisch löschen soll.

Console

  1. Öffnen Sie in der Google Cloud Console die Seite Repositories.

    Zur Seite „Repositories“

  2. Wählen Sie in der Repository-Liste das Repository aus und klicken Sie auf Repository bearbeiten.

  3. Bewegen Sie den Mauszeiger im Bereich Bereinigungsrichtlinien auf den Namen der Richtlinie, die Sie löschen möchten.

  4. Klicken Sie auf das Symbol Löschen.

  5. Klicken Sie auf Aktualisieren.

    Die Bereinigungsrichtlinie wird gelöscht.

gcloud

Führen Sie dazu diesen Befehl aus:

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

Ersetzen Sie Folgendes:

  • REPOSITORY ist der Name des Repositorys.
  • PROJECT_IDist die ID Ihres Google Cloud Projekts.
  • LOCATION ist der regionale oder multiregionale Speicherort des Repositorys.
  • POLICY_NAMES ist eine durch Kommas getrennte Liste der Namen der Richtlinien, die Sie entfernen möchten.

Mit dem folgenden Befehl wird beispielsweise eine Richtlinie namens delete-test aus dem Repository my-repo in der Region us-west1 im Projekt my-project entfernt:

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

Audit-Log-Einträge für Bereinigungsrichtlinien

Wenn Sie Logeinträge für die Bereinigungsrichtlinie in Cloud Logging aufrufen möchten, müssen Sie die DATA_WRITE-Protokollierung aktivieren.

Wenn Sie eine Bereinigungsrichtlinie für ein Repository festlegen, wird der Vorgang als Aktualisierung des Repository protokolliert (UpdateRepository-Vorgang).

Wenn in Artifact Registry eine Version eines Artefakts gelöscht wird, wird das Ereignis in den Cloud Logging-Audit-Logs zum Datenzugriff protokolliert. Die Logeinträge zeigen, dass das Artifact Registry-Dienstkonto die Löschung durchgeführt hat. Die Artifact Registry-Dienstkonto-ID hat das Format service-PROJECT-NUMBER@gcp-sa-artifactregistry.iam.gserviceaccount.com.