Halaman ini menjelaskan cara membatasi download artefak dari repositori Artifact Registry Anda dengan membuat dan mengelola aturan download.
Aturan download memungkinkan Anda mengizinkan atau menolak download artefak dari repositori dan paket Anda. Anda juga dapat menetapkan kondisi agar aturan berlaku untuk tag atau versi tertentu.
Untuk mengetahui detail tentang cara kerja aturan download, lihat bagian Membatasi download artefak dalam ringkasan Mengontrol akses dan melindungi artefak.
Sebelum memulai
- Jika Anda belum memilikinya, buat repositori standar berformat Docker.
- (Opsional) Mengonfigurasi setelan default untuk perintah Google Cloud CLI.
Peran yang diperlukan
Untuk mendapatkan izin yang Anda perlukan untuk Membuat dan mengelola aturan download, minta administrator untuk memberi Anda peran IAM berikut di repositori:
-
Membuat, memperbarui, mendapatkan, mencantumkan, dan menghapus aturan:
Artifact Registry Repository Administrator (
roles/artifactregistry.repoAdmin
) -
Mendapatkan dan mencantumkan aturan:
Pembaca Artifact Registry (
roles/artifactregistry.reader
)
Untuk mengetahui informasi selengkapnya tentang cara memberikan peran, lihat Mengelola akses ke project, folder, dan organisasi.
Anda mungkin juga bisa mendapatkan izin yang diperlukan melalui peran khusus atau peran bawaan lainnya.
Membuat aturan download
gcloud
Sebelum menggunakan salah satu data perintah di bawah, lakukan penggantian berikut:
RULE_NAME
: nama aturan. Nama harus unik dalam repositori Anda, memiliki panjang maksimal 256 karakter, dan terdiri dari karakter alfanumerik, karakter yang dienkode persen, atau karakter dalam daftar [-
,.
,_
,~
,:
,@
,+
,^
].ACTION
: tindakan yang diterapkan ke download yang cocok dengan aturan ini. Pilih antaraALLOW
, yang memungkinkan aturan mengizinkan download yang cocok terjadi, danDENY
, yang memblokir aturan agar download yang cocok tidak terjadi.PACKAGE
: (opsional) nama paket. Jika disediakan, aturan hanya berlaku untuk paket yang ditentukan, bukan seluruh repositori.CONDITION
: (opsional) ekspresi CEL yang menentukan aturan yang cocok. Jika disediakan, hanya terapkan aturan ke download yang cocok dengan kondisi yang ditentukan. Misalnya,pkg.version.id < '3.0'
.PROJECT
: project ID Google Cloud Anda. Jika project ID Anda berisi titik dua (:
), lihat Project cakupan domain.LOCATION
: lokasi regional atau multi-regional repositori.REPOSITORY
: ID repositori.
Jalankan perintah berikut:
Linux, macOS, atau 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
Sebelum menggunakan salah satu data permintaan, lakukan penggantian berikut:
RULE_NAME
: nama aturan. Nama harus unik dalam repositori Anda, memiliki panjang maksimal 256 karakter, dan terdiri dari karakter alfanumerik, karakter yang dienkode persen, atau karakter dalam daftar [-
,.
,_
,~
,:
,@
,+
,^
].ACTION
: tindakan yang diterapkan ke download yang cocok dengan aturan ini. Pilih antaraALLOW
, yang memungkinkan aturan mengizinkan download yang cocok terjadi, danDENY
, yang memblokir aturan agar download yang cocok tidak terjadi.PACKAGE
: (opsional) nama paket. Jika disediakan, aturan hanya berlaku untuk paket yang ditentukan, bukan seluruh repositori.CONDITION
: (opsional) ekspresi CEL yang menentukan aturan yang cocok. Jika disediakan, hanya terapkan aturan ke download yang cocok dengan kondisi yang ditentukan. Misalnya,pkg.version.id < '3.0'
.PROJECT
: project ID Google Cloud Anda. Jika project ID Anda berisi titik dua (:
), lihat Project cakupan domain.LOCATION
: lokasi regional atau multi-regional repositori.REPOSITORY
: ID repositori.
Metode HTTP dan URL:
POST https://artifactregistry.googleapis.com/v1/projects/PROJECT/locations/LOCATION/repositories/REPOSITORY/rules?ruleID=RULE_NAME
Meminta isi JSON:
{ "action":"ACTION", "packageId":"PACKAGE", "condition": { "expression":"CONDITION" } }
Untuk mengirim permintaan Anda, perluas salah satu opsi berikut:
Aturan baru dibuat dengan output berikut:{ "name": "projects/PROJECT/locations/LOCATION/repositories/REPOSITORY/rules/RULE_NAME", "action": ACTION, "operation": "DOWNLOAD" }
Mencantumkan aturan download
gcloud
Sebelum menggunakan salah satu data perintah di bawah, lakukan penggantian berikut:
PROJECT
: project ID Google Cloud Anda. Jika project ID Anda berisi titik dua (:
), lihat Project cakupan domain.LOCATION
: lokasi regional atau multi-regional repositori.REPOSITORY
: nama repositori.
Jalankan perintah berikut:
Linux, macOS, atau 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
Sebelum menggunakan salah satu data permintaan, lakukan penggantian berikut:
PROJECT
: project ID Google Cloud Anda. Jika project ID Anda berisi titik dua (:
), lihat Project cakupan domain.LOCATION
: lokasi regional atau multi-regional repositori.REPOSITORY
: nama repositori.
Metode HTTP dan URL:
GET https://artifactregistry.googleapis.com/v1/projects/PROJECT/locations/LOCATION/repositories/REPOSITORY/rules
Untuk mengirim permintaan, perluas salah satu opsi berikut:
Daftar aturan untuk project, lokasi, dan repositori yang ditentukan ditampilkan mirip dengan berikut:{ "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" } ] }
Menjelaskan aturan download
gcloud
Sebelum menggunakan salah satu data perintah di bawah, lakukan penggantian berikut:
RULE_NAME
: nama aturan. Nama tersebut harus unik dalam repositori Anda.PROJECT
: project ID Google Cloud Anda. Jika project ID Anda berisi titik dua (:
), lihat Project cakupan domain.LOCATION
: lokasi regional atau multi-regional repositori.REPOSITORY
: nama repositori.
Jalankan perintah berikut:
Linux, macOS, atau 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
Sebelum menggunakan salah satu data permintaan, lakukan penggantian berikut:
RULE_NAME
: nama aturan. Nama tersebut harus unik dalam repositori Anda.PROJECT
: project ID Google Cloud Anda. Jika project ID Anda berisi titik dua (:
), lihat Project cakupan domain.LOCATION
: lokasi regional atau multi-regional repositori.REPOSITORY
: nama repositori.
Metode HTTP dan URL:
GET https://artifactregistry.googleapis.com/v1/projects/PROJECT/locations/LOCATION/repositories/REPOSITORY/rules/RULE_NAME
Untuk mengirim permintaan, perluas salah satu opsi berikut:
Detail aturan ditampilkan mirip dengan yang berikut ini:{ "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" } ] }
Memperbarui aturan download
gcloud
Hapus variabel yang tidak ingin Anda perbarui.
Sebelum menggunakan salah satu data perintah di bawah, lakukan penggantian berikut:
RULE_NAME
: nama aturan. Nama tersebut harus unik dalam repositori Anda.ACTION
: tindakan yang diterapkan ke download yang cocok dengan aturan ini. Pilih antaraALLOW
danDENY
.PACKAGE
: nama paket. Jika tidak diberikan, aturan akan berlaku untuk seluruh repositori.CONDITION
: Ekspresi CEL yang menentukan aturan pencocokan. Jika disediakan, hanya terapkan aturan ke download yang cocok dengan kondisi yang ditentukan. Misalnya,pkg.version.id < '3.0'
.PROJECT
: project ID Google Cloud Anda. Jika project ID Anda berisi titik dua (:
), lihat Project cakupan domain.LOCATION
: lokasi regional atau multi-regional repositori.REPOSITORY
: nama repositori.
Jalankan perintah berikut:
Linux, macOS, atau 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
Hapus variabel yang tidak ingin Anda perbarui.
Sebelum menggunakan salah satu data permintaan, lakukan penggantian berikut:
RULE_NAME
: nama aturan. Nama tersebut harus unik dalam repositori Anda.ACTION
: tindakan yang diterapkan ke download yang cocok dengan aturan ini. Pilih antaraALLOW
danDENY
.PACKAGE
: nama paket. Jika tidak diberikan, aturan akan berlaku untuk seluruh repositori.CONDITION
: Ekspresi CEL yang menentukan aturan pencocokan. Jika disediakan, hanya terapkan aturan ke download yang cocok dengan kondisi yang ditentukan. Misalnya,pkg.version.id < '3.0'
.PROJECT
: project ID Google Cloud Anda. Jika project ID Anda berisi titik dua (:
), lihat Project cakupan domain.LOCATION
: lokasi regional atau multi-regional repositori.REPOSITORY
: nama repositori.
Metode HTTP dan URL:
PATCH https://artifactregistry.googleapis.com/v1/projects/PROJECT/locations/LOCATION/repositories/REPOSITORY/rules/RULE_NAME
Meminta isi JSON:
{ "action":"ACTION", "packageId":"PACKAGE", "condition": { "expression":"CONDITION" } }
Untuk mengirim permintaan Anda, perluas salah satu opsi berikut:
Detail aturan yang diperbarui ditampilkan mirip dengan berikut:{ "name": "projects/PROJECT/locations/LOCATION/repositories/REPOSITORY/rules/RULE_NAME", "action": ACTION, "operation": "DOWNLOAD" }
Menghapus aturan download
gcloud
Sebelum menggunakan salah satu data perintah di bawah, lakukan penggantian berikut:
RULE_NAME
: nama aturan. Nama tersebut harus unik dalam repositori Anda.PROJECT
: project ID Google Cloud Anda. Jika project ID Anda berisi titik dua (:
), lihat Project cakupan domain.LOCATION
: lokasi regional atau multi-regional repositori.REPOSITORY
: nama repositori.
Jalankan perintah berikut:
Linux, macOS, atau 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
Sebelum menggunakan salah satu data permintaan, lakukan penggantian berikut:
RULE_NAME
: nama aturan. Nama tersebut harus unik dalam repositori Anda.PROJECT
: project ID Google Cloud Anda. Jika project ID Anda berisi titik dua (:
), lihat Project cakupan domain.LOCATION
: lokasi regional atau multi-regional repositori.REPOSITORY
: nama repositori.
Metode HTTP dan URL:
DELETE https://artifactregistry.googleapis.com/v1/projects/PROJECT/locations/LOCATION/repositories/REPOSITORY/rules/RULE_NAME
Untuk mengirim permintaan, perluas salah satu opsi berikut:
Untuk informasi selengkapnya, lihat referensi REST.Menggunakan CEL untuk menentukan kondisi
Anda dapat menentukan kondisi untuk aturan download dengan
Common Expression Language (CEL), yang merupakan bahasa open source
untuk evaluasi ekspresi. Artifact Registry menyediakan objek pkg
yang
berisi atribut berikut:
pkg.id
: string yang mewakili nama paket artefak. Dapat digunakan dengan aturan yang ditetapkan di tingkat repositori.pkg.version.id
: string yang mewakili versi artefak.pkg.version.tag
: string yang mewakili tag artefak. Hanya gunakan di repositori Docker.
Anda dapat menggunakan operator logika dan fungsi bawaan dengan CEL. Berikut adalah beberapa contoh ekspresi CEL yang mungkin berguna dalam aturan download Anda:
Berguna untuk aturan yang ditetapkan di tingkat repositori:
pkg.id == 'myPackage' #Artifact package matches 'myPackage' pkg.id.startsWith('my') #Artifact package must start with 'my'
Berguna untuk aturan yang ditetapkan pada paket:
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']
Saat menambahkan aturan dengan kondisi berbasis tag seperti pkg.version.tag == 'latest'
di repositori Docker, perhatikan hal-hal berikut:
- Saat menarik dengan ringkasan, klien tidak memberikan tag. Kondisi yang menggunakan tag akan dicocokkan dengan tag kosong dan dapat menyebabkan perilaku yang tidak terduga.
- Untuk image container multi-arch, kondisi yang menggunakan tag mungkin tidak berfungsi seperti yang diharapkan dan harus dihindari.