Auf dieser Seite wird beschrieben, wie Sie den Download von Artefakten aus Ihren Artifact Registry-Repositories einschränken, indem Sie Downloadregeln erstellen und verwalten.
Mit Regeln herunterladen können Sie Artefaktdownloads aus Ihrem Repositories und Pakete. Sie können auch Bedingungen festlegen, damit die Regel auf bestimmte Tags oder Versionen angewendet wird.
Weitere Informationen zur Funktionsweise von Downloadregeln finden Sie unter Artefaktdownloads einschränken. im Abschnitt „Artefakte Zugriff steuern und Artefakte schützen“.
Hinweis
- Falls Sie noch keines haben, Standard-Repository im Docker-Format erstellen
- (Optional) Konfigurieren Sie die Standardeinstellungen für Google Cloud CLI-Befehle.
Erforderliche Rollen
Bitten Sie Ihren Administrator, Ihnen die folgenden IAM-Rollen für das Repository zuzuweisen, um die Berechtigungen zu erhalten, die Sie zum Erstellen und Verwalten von Downloadregeln benötigen:
-
Regeln erstellen, aktualisieren, abrufen, auflisten und löschen:
Artifact Registry-Repository-Administrator (
roles/artifactregistry.repoAdmin
) -
Regeln abrufen und auflisten:
Artifact Registry-Leser (
roles/artifactregistry.reader
)
Weitere Informationen zum Zuweisen von Rollen finden Sie unter Zugriff auf Projekte, Ordner und Organisationen verwalten.
Sie können die erforderlichen Berechtigungen auch über benutzerdefinierte Rollen oder andere vordefinierte Rollen erhalten.
Downloadregeln erstellen
gcloud
Ersetzen Sie folgende Werte, bevor sie einen der Befehlsdaten verwenden:
RULE_NAME
: der Name der Regel. Name muss in Ihrem Repository eindeutig sein, darf maximal 256 Zeichen lang sein und muss aus folgenden Elementen bestehen: alphanumerische Zeichen, prozentcodierte Zeichen oder Zeichen in der Liste [-
,.
,_
,~
,:
,@
,+
,^
].ACTION
: die auf einen Download angewendete Aktion die mit dieser Regel übereinstimmt. Wähle eine der folgenden Optionen aus:ALLOW
, für die die Regel übereinstimmende Downloads zulässt undDENY
, wobei die Regel verhindert, dass übereinstimmende Downloads ausgeführt werden.PACKAGE
: (Optional) Der Name des Pakets. Wenn angegeben, gilt die Regel nur für das angegebene Paket und nicht für das gesamte Repository.CONDITION
: (optional) ein CEL-Ausdruck, der einen Abgleich definiert Regel. Wenn angegeben, wird die Regel nur auf Downloads angewendet, die die angegebene Bedingung erfüllen. Beispiel:pkg.version.id < '3.0'
PROJECT
: Ihr Google Cloud-Team Projekt-ID. Wenn die Projekt-ID einen Doppelpunkt (:
) enthält, finden Sie weitere Informationen unter Auf Domains beschränkte Projekte.LOCATION
: der regionale oder multiregionale Speicherort des Repositories.REPOSITORY
: die Repository-ID.
Führen Sie folgenden Befehl aus:
Linux, macOS oder Cloud Shell
gcloud artifacts rules create RULE_NAME \ --action=ACTION \ --project=PROJECT \ --location=LOCATION \ --repository=REPOSITORY \ --package=PACKAGE \ --condition="CONDITION"
Windows (PowerShell)
gcloud artifacts rules create RULE_NAME ` --action=ACTION ` --project=PROJECT ` --location=LOCATION ` --repository=REPOSITORY ` --package=PACKAGE ` --condition="CONDITION"
Windows (cmd.exe)
gcloud artifacts rules create RULE_NAME ^ --action=ACTION ^ --project=PROJECT ^ --location=LOCATION ^ --repository=REPOSITORY ^ --package=PACKAGE ^ --condition="CONDITION"
Created rule [RULE_NAME].
gcloud artifacts rules create
.
API
Ersetzen Sie diese Werte in den folgenden Anfragedaten:
RULE_NAME
: der Name der Regel. Name muss in Ihrem Repository eindeutig sein, darf maximal 256 Zeichen lang sein und muss aus folgenden Elementen bestehen: alphanumerische Zeichen, prozentcodierte Zeichen oder Zeichen in der Liste [-
,.
,_
,~
,:
,@
,+
,^
].ACTION
: die auf einen Download angewendete Aktion die mit dieser Regel übereinstimmt. Wähle eine der folgenden Optionen aus:ALLOW
, für die die Regel übereinstimmende Downloads zulässt undDENY
, wobei die Regel verhindert, dass übereinstimmende Downloads ausgeführt werden.PACKAGE
: (Optional) Der Name des Pakets. Wenn angegeben, gilt die Regel nur für das angegebene Paket und nicht für das gesamte Repository.CONDITION
: (optional) ein CEL-Ausdruck, der einen Abgleich definiert Regel. Wenn angegeben, gilt die Regel nur für Downloads, die der angegebenen Bedingung entsprechen. Beispiel:pkg.version.id < '3.0'
PROJECT
: Ihre Google Cloud-Projekt-ID. Wenn die Projekt-ID einen Doppelpunkt (:
) enthält, finden Sie weitere Informationen unter Auf Domains beschränkte Projekte.LOCATION
: der regionale oder multiregionale Speicherort des Repositories.REPOSITORY
: die Repository-ID.
HTTP-Methode und URL:
POST https://artifactregistry.googleapis.com/v1/projects/PROJECT/locations/LOCATION/repositories/REPOSITORY/rules?ruleID=RULE_NAME
JSON-Text anfordern:
{ "action":"ACTION", "packageId":"PACKAGE", "condition": { "expression":"CONDITION" } }
Wenn Sie die Anfrage senden möchten, maximieren Sie eine der folgenden Optionen:
Es wird eine neue Regel mit der folgenden Ausgabe erstellt:{ "name": "projects/PROJECT/locations/LOCATION/repositories/REPOSITORY/rules/RULE_NAME", "action": ACTION, "operation": "DOWNLOAD" }
Downloadregeln auflisten
gcloud
Ersetzen Sie folgende Werte, bevor sie einen der Befehlsdaten verwenden:
PROJECT
: Ihre Google Cloud-Projekt-ID. Wenn die Projekt-ID einen Doppelpunkt (:
) enthält, finden Sie weitere Informationen unter Auf Domains beschränkte Projekte.LOCATION
: der regionale oder multiregionale Speicherort des Repositories.REPOSITORY
: Name des Repositorys.
Führen Sie folgenden Befehl aus:
Linux, macOS oder Cloud Shell
gcloud artifacts rules list \ --project=PROJECT \ --location=LOCATION \ --repository=REPOSITORY
Windows (PowerShell)
gcloud artifacts rules list ` --project=PROJECT ` --location=LOCATION ` --repository=REPOSITORY
Windows (cmd.exe)
gcloud artifacts rules list ^ --project=PROJECT ^ --location=LOCATION ^ --repository=REPOSITORY
RULE: my-rule PACKAGE: example.com/foo ACTION: DENY OPERATION: DOWNLOAD CONDITION: pkg.version.id < '3.0'
gcloud artifacts rules list
.
API
Ersetzen Sie diese Werte in den folgenden Anfragedaten:
PROJECT
: Ihre Google Cloud-Projekt-ID. Wenn die Projekt-ID einen Doppelpunkt (:
) enthält, finden Sie weitere Informationen unter Auf Domains beschränkte Projekte.LOCATION
: der regionale oder multiregionale Speicherort des Repositories.REPOSITORY
: Name des Repositorys.
HTTP-Methode und URL:
GET https://artifactregistry.googleapis.com/v1/projects/PROJECT/locations/LOCATION/repositories/REPOSITORY/rules
Wenn Sie die Anfrage senden möchten, maximieren Sie eine der folgenden Optionen:
Eine Liste der Regeln für das angegebene Projekt, den angegebenen Speicherort und das angegebene Repository wird angezeigt, die in etwa so aussieht:{ "rules": [ { "name": "projects/my-project/locations/us-central1/repositories/my-repo/rules/my-rule", "action": "DENY", "operation": "DOWNLOAD", "condition": { "expression": "pkg.version.id \u003c '3.0'" }, "packageId": "example.com/foo" } ] }
Downloadregeln beschreiben
gcloud
Ersetzen Sie folgende Werte, bevor sie einen der Befehlsdaten verwenden:
RULE_NAME
: der Name der Regel. Name muss in Ihrem Repository eindeutig sein.PROJECT
: Ihr Google Cloud-Team Projekt-ID. Wenn die Projekt-ID einen Doppelpunkt (:
) enthält, finden Sie weitere Informationen unter Auf Domains beschränkte Projekte.LOCATION
: der regionale oder multiregionale Speicherort des Repositorys.REPOSITORY
: Name des Repositorys.
Führen Sie folgenden Befehl aus:
Linux, macOS oder Cloud Shell
gcloud artifacts rules describe RULE_NAME \ --project=PROJECT \ --location=LOCATION \ --repository=REPOSITORY
Windows (PowerShell)
gcloud artifacts rules describe RULE_NAME ` --project=PROJECT ` --location=LOCATION ` --repository=REPOSITORY
Windows (cmd.exe)
gcloud artifacts rules describe RULE_NAME ^ --project=PROJECT ^ --location=LOCATION ^ --repository=REPOSITORY
RULE: my-rule PACKAGE: example.com/foo ACTION: DENY OPERATION: DOWNLOAD CONDITION: pkg.version.id < '3.0'
gcloud artifacts rules describe
.
API
Ersetzen Sie diese Werte in den folgenden Anfragedaten:
RULE_NAME
: der Name der Regel. Der Name muss innerhalb Ihres Repositories eindeutig sein.PROJECT
: Ihr Google Cloud-Team Projekt-ID. Wenn die Projekt-ID einen Doppelpunkt (:
) enthält, finden Sie weitere Informationen unter Auf Domains beschränkte Projekte.LOCATION
: der regionale oder multiregionale Speicherort des Repositories.REPOSITORY
: Name des Repositorys.
HTTP-Methode und URL:
GET https://artifactregistry.googleapis.com/v1/projects/PROJECT/locations/LOCATION/repositories/REPOSITORY/rules/RULE_NAME
Wenn Sie die Anfrage senden möchten, maximieren Sie eine der folgenden Optionen:
Regeldetails werden in etwa so angezeigt:{ "rules": [ { "name": "projects/my-project/locations/us-central1/repositories/my-repo/rules/my-rule", "action": "DENY", "operation": "DOWNLOAD", "condition": { "expression": "pkg.version.id \u003c '3.0'" }, "packageId": "example.com/foo" } ] }
Downloadregeln aktualisieren
gcloud
Entfernen Sie alle Variablen, die nicht aktualisiert werden sollen.
Ersetzen Sie folgende Werte, bevor sie einen der Befehlsdaten verwenden:
RULE_NAME
: der Name der Regel. Der Name muss innerhalb Ihres Repositories eindeutig sein.ACTION
: die Aktion, die auf einen Download angewendet wird, der dieser Regel entspricht. Wähle zwischenALLOW
undDENY
.PACKAGE
: der Name des Paket. Wenn nicht angegeben, gilt die Regel für das gesamte Repository.CONDITION
: a CEL-Ausdruck, der einen Abgleich definiert Regel. Wenn angegeben, gilt die Regel nur für Downloads, die der angegebenen Bedingung entsprechen. Beispiel:pkg.version.id < '3.0'
PROJECT
: Ihre Google Cloud-Projekt-ID. Wenn die Projekt-ID einen Doppelpunkt (:
) enthält, finden Sie weitere Informationen unter Auf Domains beschränkte Projekte.LOCATION
: der regionale oder multiregionale Speicherort des Repositories.REPOSITORY
: Name des Repositorys.
Führen Sie folgenden Befehl aus:
Linux, macOS oder Cloud Shell
gcloud artifacts rules update RULE_NAME \ --action=ACTION \ --project=PROJECT \ --location=LOCATION \ --repository=REPOSITORY \ --package=PACKAGE \ --condition="CONDITION"
Windows (PowerShell)
gcloud artifacts rules update RULE_NAME ` --action=ACTION ` --project=PROJECT ` --location=LOCATION ` --repository=REPOSITORY ` --package=PACKAGE ` --condition="CONDITION"
Windows (cmd.exe)
gcloud artifacts rules update RULE_NAME ^ --action=ACTION ^ --project=PROJECT ^ --location=LOCATION ^ --repository=REPOSITORY ^ --package=PACKAGE ^ --condition="CONDITION"
Updated rule [RULE_NAME]. action: ACTION condition: expression: CONDITION name: projects/PROJECT/locationsLOCATION/repositories/REPOSITORY/rules/RULE_NAME operation: DOWNLOAD
gcloud artifacts rules update
.
API
Entfernen Sie alle Variablen, die nicht aktualisiert werden sollen.
Ersetzen Sie diese Werte in den folgenden Anfragedaten:
RULE_NAME
: der Name der Regel. Der Name muss innerhalb Ihres Repositories eindeutig sein.ACTION
: die Aktion, die auf einen Download angewendet wird, der dieser Regel entspricht. Wähle zwischenALLOW
undDENY
.PACKAGE
: der Name des Paket. Wenn keine Angabe gemacht wird, gilt die Regel für das gesamte Repository.CONDITION
: Ein CEL-Ausdruck, der eine Abgleichregel definiert. Wenn angegeben, gilt die Regel nur für Downloads, die der angegebenen Bedingung entsprechen. Beispiel:pkg.version.id < '3.0'
PROJECT
: Ihr Google Cloud-Team Projekt-ID. Wenn die Projekt-ID einen Doppelpunkt (:
) enthält, finden Sie weitere Informationen unter Auf Domains beschränkte Projekte.LOCATION
: der regionale oder multiregionale Speicherort des Repositorys.REPOSITORY
: Name des Repositorys.
HTTP-Methode und URL:
PATCH https://artifactregistry.googleapis.com/v1/projects/PROJECT/locations/LOCATION/repositories/REPOSITORY/rules/RULE_NAME
JSON-Text anfordern:
{ "action":"ACTION", "packageId":"PACKAGE", "condition": { "expression":"CONDITION" } }
Wenn Sie die Anfrage senden möchten, maximieren Sie eine der folgenden Optionen:
Die aktualisierten Regeldetails werden in etwa so angezeigt:{ "name": "projects/PROJECT/locations/LOCATION/repositories/REPOSITORY/rules/RULE_NAME", "action": ACTION, "operation": "DOWNLOAD" }
Downloadregeln löschen
gcloud
Ersetzen Sie folgende Werte, bevor sie einen der Befehlsdaten verwenden:
RULE_NAME
: der Name der Regel. Der Name muss innerhalb Ihres Repositories eindeutig sein.PROJECT
: Ihre Google Cloud-Projekt-ID. Wenn die Projekt-ID einen Doppelpunkt (:
) enthält, finden Sie weitere Informationen unter Auf Domains beschränkte Projekte.LOCATION
: der regionale oder multiregionale Speicherort des Repositories.REPOSITORY
: Name des Repositorys.
Führen Sie folgenden Befehl aus:
Linux, macOS oder Cloud Shell
gcloud artifacts rules describe RULE_NAME \ --project=PROJECT \ --location=LOCATION \ --repository=REPOSITORY
Windows (PowerShell)
gcloud artifacts rules describe RULE_NAME ` --project=PROJECT ` --location=LOCATION ` --repository=REPOSITORY
Windows (cmd.exe)
gcloud artifacts rules describe RULE_NAME ^ --project=PROJECT ^ --location=LOCATION ^ --repository=REPOSITORY
You are about to delete rule [RULE_NAME] Do you want to continue (Y/n)? Y Deleted rule [RULE_NAME].
gcloud artifacts rules delete
.
API
Ersetzen Sie diese Werte in den folgenden Anfragedaten:
RULE_NAME
: der Name der Regel. Der Name muss innerhalb Ihres Repositories eindeutig sein.PROJECT
: Ihre Google Cloud-Projekt-ID. Wenn die Projekt-ID einen Doppelpunkt (:
) enthält, finden Sie weitere Informationen unter Auf Domains beschränkte Projekte.LOCATION
: der regionale oder multiregionale Speicherort des Repositorys.REPOSITORY
: Name des Repositorys.
HTTP-Methode und URL:
DELETE https://artifactregistry.googleapis.com/v1/projects/PROJECT/locations/LOCATION/repositories/REPOSITORY/rules/RULE_NAME
Wenn Sie die Anfrage senden möchten, maximieren Sie eine der folgenden Optionen:
Weitere Informationen finden Sie in der REST-Referenz.CEL zum Definieren von Bedingungen verwenden
Sie können Bedingungen für Ihre Downloadregeln mit der Common Expression Language (CEL) definieren, einer Open-Source-Sprache zur Ausdrucksbewertung. Artifact Registry bietet das pkg
-Objekt mit den folgenden Attributen:
pkg.id
: Ein String, der den Paketnamen des Artefakts darstellt. Kann mit Regeln auf Repositoryebene verwendet werden.pkg.version.id
: Ein String, der die Version des Artefakts darstellt.pkg.version.tag
: Ein String, der das Tag des Artefakts darstellt. Nur verwenden in einem Docker-Repository.
Mit CEL können Sie logische Operatoren und integrierte Funktionen verwenden. Im Folgenden finden Sie einige Beispiele für CEL-Ausdrücke, die in Ihren Downloadregeln nützlich sein könnten:
Nützlich für Regeln, die auf Repositoryebene festgelegt sind:
pkg.id == 'myPackage' #Artifact package matches 'myPackage' pkg.id.startsWith('my') #Artifact package must start with 'my'
Nützlich für Regeln, die für Pakete festgelegt sind:
pkg.version.id != '1.0.0' #Artifact version is not '1.0.0' pkg.version.id > '1.0.1' || pkg.version.id < '0.0.1' #Artifact version is greater than '1.0.1' or less than '0.0.1' pkg.version.id.startsWith('1.0.') #Artifact version must start with '1.0.' pkg.version.id in ['1.0.0', '1.2.0'] #Artifact version must be a member of the list ['1.0.0', '1.2.0'] pkg.version.tag == 'tag1' #Artifact tag must be 'tag1' pkg.version.tag.startsWith('tag') #Artifact tag must start with 'tag' pkg.version.tag in ['tag1', 'tag2'] #Artifact tag must be a member of the list ['tag1', 'tag2']
Beim Hinzufügen von Regeln mit Tag-basierten Bedingungen wie pkg.version.tag == 'latest'
in Ihren Docker-Repositories:
- Beim Abrufen per Digest gibt der Client kein Tag an. Bedingungen mit -Tags werden mit einem leeren Tag abgeglichen, was zu unerwartetem Verhalten führen kann.
- Bei Container-Images mit mehreren Architekturen funktionieren Bedingungen mit Tags möglicherweise nicht wie erwartet und sollten vermieden werden.