Halaman ini menjelaskan kontrol akses dengan Identity and Access Management (IAM) di Artifact Registry.
Izin default untuk Artifact Registry meminimalkan upaya penyiapan saat mengimplementasikan pipeline CI/CD. Anda juga dapat mengintegrasikan Artifact Registry dengan alat CI/CD pihak ketiga serta mengonfigurasi izin dan autentikasi yang diperlukan untuk mengakses repositori.
Jika Anda menggunakan Artifact Analysis untuk menangani metadata container, seperti kerentanan yang ditemukan dalam image, lihat dokumentasi Analisis Artefak untuk mendapatkan informasi tentang cara memberikan akses untuk melihat atau mengelola metadata.
Sebelum memulai
- Aktifkan Artifact Registry, termasuk mengaktifkan API dan menginstal Google Cloud CLI.
- Jika Anda ingin menerapkan izin khusus repositori, buat repositori Artifact Registry untuk paket Anda.
Ringkasan
Izin dan peran IAM menentukan kemampuan Anda untuk membuat, melihat, mengedit, atau menghapus data di repositori Artifact Registry.
Peran adalah kumpulan izin. Anda tidak dapat memberikan izin utama secara langsung, tetapi berikan peran kepada akun utama. Saat peran diberikan ke akun utama, semua izin pada peran tersebut juga diberikan. Anda dapat memberikan beberapa peran ke akun utama yang sama.
Izin default Google Cloud
Secara default, izin berikut berlaku untuk layanan CI/CD Google Cloud dalam project yang sama dengan Artifact Registry:
- Izin Cloud Build mencakup izin untuk mengupload dan mendownload artefak.
- Compute Engine, versi Google Kubernetes Engine yang didukung, dan Cloud Run menggunakan akun layanan default Compute Engine, yang memiliki akses hanya baca ke penyimpanan.
Jika semua layanan berada dalam project Google Cloud yang sama dan izin default memenuhi kebutuhan, Anda tidak perlu mengonfigurasi izin.
Anda harus mengonfigurasi izin Artifact Registry untuk layanan ini jika:
- Anda ingin menggunakan layanan ini untuk mengakses Artifact Registry di project lain. Pada project dengan Artifact Registry, berikan kumpulan identitas workload atau akun layanan untuk setiap layanan peran yang diperlukan. Jika terhubung ke Cloud Run, berikan peran yang diperlukan kepada Agen Layanan Cloud Run.
- Anda menggunakan versi GKE yang tidak memiliki dukungan bawaan untuk mengambil image dari Artifact Registry. Lihat bagian GKE untuk mengetahui petunjuk konfigurasi.
- Anda ingin akun layanan default memiliki akses baca dan tulis ke repositori. Lihat informasi berikut untuk mengetahui detailnya:
- Anda menggunakan akun layanan yang disediakan pengguna untuk lingkungan runtime, bukan akun layanan default. Pada project dengan Artifact Registry, beri peran yang diperlukan kepada akun layanan Anda.
Integrasi pihak ketiga
Untuk klien pihak ketiga, Anda harus mengonfigurasi izin dan autentikasi.
Secara tradisional, aplikasi yang berjalan di luar Google Cloud menggunakan kunci akun layanan untuk mengakses resource Google Cloud. Namun, kunci akun layanan adalah kredensial yang andal, dan dapat menimbulkan risiko keamanan jika tidak dikelola dengan benar.
Dengan Workload Identity Federation, Anda dapat menggunakan Identity and Access Management untuk memberikan peran IAM kepada eksternal, termasuk kemampuan untuk meniru identitas akun layanan. Pendekatan ini menghilangkan beban pemeliharaan dan keamanan yang terkait dengan kunci akun layanan.
Gunakan Workload Identity Federation:
- Membuat kumpulan Workload Identity Federation.
- Buat penyedia Workload Identity Federation.
- Berikan peran Artifact Registry yang sesuai ke kumpulan identitas workload untuk mengizinkan akses repositori.
Konfigurasikan klien pihak ketiga Anda untuk melakukan autentikasi dengan Artifact Registry.
Menggunakan akun layanan:
- Buat akun layanan untuk bertindak atas nama aplikasi Anda, atau pilih akun layanan yang ada yang digunakan untuk otomatisasi CI/CD Anda.
- Berikan peran Artifact Registry yang sesuai ke akun layanan untuk memberikan akses repositori.
Konfigurasikan klien pihak ketiga Anda untuk melakukan autentikasi dengan Artifact Registry.
GitLab di Google Cloud
Integrasi GitLab di Google Cloud menggunakan Workload Identity Federation untuk otorisasi dan autentikasi beban kerja GitLab di Google Cloud tanpa memerlukan akun layanan atau kunci akun layanan. Untuk mengetahui informasi selengkapnya tentang cara penggunaan Workload Identity Federation dalam kemitraan ini, lihat Ringkasan autentikasi.
Untuk menyiapkan Workload Identity Federation dan peran IAM yang diperlukan untuk GitLab di Google Cloud, lihat tutorial GitLab Kebijakan IAM dan Workload Identity Google Cloud.
Untuk menghubungkan repositori Artifact Registry, ikuti tutorial GitLab Google Artifact Registry.
Peran dan izin
Setiap metode Artifact Registry API mengharuskan akun utama (pengguna, grup, atau akun layanan) yang membuat permintaan memiliki izin yang diperlukan untuk menggunakan resource. Izin diberikan ke akun utama dengan menetapkan kebijakan yang memberikan peran yang telah ditetapkan kepada akun utama pada resource tersebut.
Anda dapat memberikan peran pada project Google Cloud atau repositori Artifact Registry.
Peran Artifact Registry yang telah ditentukan sebelumnya
IAM menyediakan peran yang telah ditetapkan yang memberikan akses ke resource Google Cloud tertentu dan mencegah akses tidak sah ke resource lain.
Gunakan peran yang telah ditetapkan berikut untuk repositori standar, virtual, dan jarak jauh
di domain pkg.dev
:
Peran | Deskripsi |
---|---|
Pembaca Artifact Registry ( roles/artifactregistry.reader ) |
Melihat dan mendapatkan artefak, melihat metadata repositori. |
Penulis Artifact Registry ( roles/artifactregistry.writer ) |
Membaca dan menulis artefak. |
Administrator Repositori Artifact Registry ( roles/artifactregistry.repoAdmin ) |
Membaca, menulis, dan menghapus artefak. |
Administrator Artifact Registry ( roles/artifactregistry.admin ) |
Membuat dan mengelola repositori dan artefak. |
Peran tambahan yang telah ditetapkan berikut ini mencakup izin untuk membuat
repositori gcr.io guna menghosting image untuk domain gcr.io
. Peran tersebut tidak mencakup izin untuk membuat format repositori lain di Artifact Registry pada domain pkg.dev
. Peran ini mendukung kompatibilitas mundur dengan Container Registry, karena Container Registry menggunakan push pertama dari image container untuk membuat setiap registry multi-regional.
Peran | Deskripsi |
---|---|
Penulis Create-on-push Artifact Registry
(roles/artifactregistry.createOnPushWriter ) |
Membaca dan menulis artefak. Membuat repositori gcr.io. |
Administrator Repositori Create-on-push Artifact Registry (roles/artifactregistry.createOnPushRepoAdmin ) |
Membaca, menulis, dan menghapus artefak. Membuat repositori gcr.io. |
Untuk mengetahui daftar lengkap izin individual dalam setiap peran, lihat peran Artifact Registry.
Anda juga dapat menggunakan perintah
gcloud iam roles describe
untuk melihat daftar izin di setiap peran.
Peran IAM dasar
Peran IAM dasar memberi pengguna akses global level project ke semua resource Google Cloud. Gunakan peran yang telah ditetapkan untuk akses repositori jika memungkinkan sehingga pengguna dan akun layanan hanya memiliki izin yang diperlukan.
Tabel berikut mencantumkan peran dasar yang ada sebelum IAM, dan peran IAM Artifact Registry yang ada:
Peran | Nama Peran | Sertakan peran |
---|---|---|
roles/viewer |
Pengakses lihat saja | roles/artifactregistry.reader |
roles/editor
|
Editor |
|
roles/owner |
Pemilik | roles/artifactregistry.admin |
Memberikan izin
Berikan izin di level project jika izin yang sama berlaku untuk semua repositori dalam project. Jika beberapa akun memerlukan tingkat akses yang berbeda, berikan peran di tingkat repositori.
Jika Anda memberikan izin pada repositori virtual, izin tersebut berlaku untuk semua repositori upstream yang tersedia melalui repositori virtual, terlepas dari izin repositori individual.
Jika memberikan peran menggunakan perintah gcloud
, Anda dapat menentukan satu
binding peran untuk akun utama atau menggunakan file kebijakan untuk menentukan beberapa binding.
Template kebijakan referensi berikut digunakan untuk contoh di halaman ini.
File kebijakan referensi diberi nama policy.yaml
. Template berisi contoh
nama pengguna dan akun layanan. Ganti contoh pengguna dan akun layanan ini dengan cara yang sesuai untuk project Anda.
Untuk mengetahui detail tentang format kebijakan, baca dokumentasi kebijakan IAM.
bindings:
- members:
- user: user@gmail.com
role: roles/owner
- members:
- serviceAccount: repo-readonly@iam.gserviceaccount.com
- user: user2@gmail.com
role: roles/artifactregistry.reader
- members:
- serviceAccount: repo-write@iam.gserviceaccount.com
role: roles/artifactregistry.writer
- members:
- serviceAccount: repo-admin@iam.gserviceaccount.com
role: roles/artifactregistry.repoAdmin
- members:
- serviceAccount: ar-admin@iam.gserviceaccount.com
role: roles/artifactregistry.admin
Memberikan izin di seluruh project
Berikan peran di level project jika izin yang sama berlaku untuk semua repositori dalam project.
Untuk menambahkan pengguna atau akun layanan ke project dan memberinya peran Artifact Registry:
Konsol
Buka halaman IAM di konsol Google Cloud.
Klik Select a project, pilih project tempat Artifact Registry berjalan, lalu klik Open.
Klik Tambahkan.
Masukkan alamat email. Anda dapat menambahkan individu, akun layanan, atau Google Grup sebagai akun utama.
Pilih peran untuk akun utama. Sesuai dengan prinsip keamanan hak istimewa terendah, pertimbangkan untuk memberikan jumlah hak istimewa terendah yang diperlukan untuk mencegah akses yang tidak diinginkan ke resource lain.
Klik Save.
gcloud
-
Di konsol Google Cloud, aktifkan Cloud Shell.
Di bagian bawah Google Cloud Console, Cloud Shell sesi akan terbuka dan menampilkan perintah command line. Cloud Shell adalah lingkungan shell dengan Google Cloud CLI yang sudah terinstal, dan dengan nilai yang sudah ditetapkan untuk project Anda saat ini. Diperlukan waktu beberapa detik untuk melakukan inisialisasi sesi.
Untuk memberikan peran ke satu akun utama, jalankan perintah berikut:
gcloud projects add-iam-policy-binding PROJECT \ --member=PRINCPAL \ --role=ROLE
dengan
- PROJECT adalah ID project tempat Artifact Registry dijalankan.
PRINCIPAL adalah akun utama yang akan ditambahkan binding. Gunakan format
user|group|serviceAccount:email
ataudomain:domain
.Contoh:
user:test-user@gmail.com
,group:admins@example.com
,serviceAccount:test123@example.domain.com
, ataudomain:example.domain.com
.ROLE adalah peran yang ingin Anda berikan.
Untuk informasi selengkapnya, lihat dokumentasi add-iam-policy-binding.
Untuk memberikan peran menggunakan file kebijakan, jalankan perintah berikut:
gcloud projects set-iam-policy PROJECT /PATH/TO/policy.yaml
Dari mana
- PROJECT adalah ID project atau ID yang sepenuhnya memenuhi syarat untuk project tempat Artifact Registry berjalan.
- /PATH/TO/policy.yaml adalah jalur dan nama file file kebijakan.
Untuk mendapatkan kebijakan yang saat ini dikonfigurasi, jalankan perintah berikut:
gcloud projects get-iam-policy PROJECT
Dengan PROJECT adalah ID project atau ID yang sepenuhnya memenuhi syarat untuk project.
Untuk informasi selengkapnya, lihat dokumentasi set-iam-policy.
Memberikan izin khusus repositori
Berikan izin tingkat repositori jika Anda ingin pengguna atau akun layanan memiliki tingkat akses yang berbeda untuk setiap repositori dalam project Anda.
Konsol
Untuk memberikan akses ke repositori tertentu:
Buka halaman Repositories di Konsol Google Cloud.
Pilih repositori yang sesuai.
Jika panel info tidak ditampilkan, klik Tampilkan Panel Info di panel menu.
Pada tab Permissions, klik Add Principal.
Masukkan alamat email. Anda dapat menambahkan individu, akun layanan, atau Google Grup sebagai akun utama.
Pilih peran untuk akun utama. Sebaiknya berikan jumlah hak istimewa terendah yang diperlukan kepada akun utama.
Klik Save.
gcloud
-
Di konsol Google Cloud, aktifkan Cloud Shell.
Di bagian bawah Google Cloud Console, Cloud Shell sesi akan terbuka dan menampilkan perintah command line. Cloud Shell adalah lingkungan shell dengan Google Cloud CLI yang sudah terinstal, dan dengan nilai yang sudah ditetapkan untuk project Anda saat ini. Diperlukan waktu beberapa detik untuk melakukan inisialisasi sesi.
Anda dapat menetapkan serangkaian IAM masing-masing binding kebijakan atau menggunakan file kebijakan.
Untuk memberikan peran ke satu akun utama, jalankan perintah berikut:
gcloud artifacts repositories add-iam-policy-binding REPOSITORY \ --location=LOCATION \ --member=PRINCIPAL \ --role=ROLE
dengan
- REPOSITORY adalah ID repositori.
PRINCIPAL adalah akun utama yang akan ditambahkan binding. Gunakan format
user|group|serviceAccount:email
ataudomain:domain
.Contoh:
user:test-user@gmail.com
,group:admins@example.com
,serviceAccount:test123@example.domain.com
, ataudomain:example.domain.com
.ROLE adalah peran yang ingin Anda berikan.
LOCATION adalah lokasi regional atau multi-regional dari repositori.
Misalnya, guna menambahkan binding kebijakan IAM untuk peran
roles/artifactregistry.writer
bagi penggunawrite@gmail.com
dengan repositorimy-repo
di lokasi--us-central1
, jalankan:gcloud artifacts repositories add-iam-policy-binding my-repo \ --location=us-central1 --member=user:write@gmail.com --role=roles/artifactregistry.writer
Untuk memberikan peran menggunakan file kebijakan, jalankan perintah berikut:
gcloud artifacts repositories set-iam-policy REPOSITORY /PATH/TO/policy.yaml --location=LOCATION
Dari mana
- REPOSITORY adalah ID repositori.
- /PATH/TO/policy.yaml adalah jalur dan nama file file kebijakan.
- LOCATION adalah lokasi regional atau multi-regional dari repositori.
Misalnya, guna menetapkan kebijakan IAM untuk repositori
my-repo
di lokasi--us-central1
dengan kebijakan yang ditentukan dipolicy.yaml
, jalankan:gcloud artifacts repositories set-iam-policy my-repo policy.yaml --location=us-central1
Terraform
Gunakan resource google_artifact_registry_repository_iam untuk mengonfigurasi kebijakan IAM. Contoh berikut menentukan akun
layanan dengan nama resource repo-account
dan memberinya akses baca ke
repositori dengan nama resource my-repo
.
Jika Anda baru menggunakan Terraform untuk Google Cloud, lihat halaman Memulai - Google Cloud di situs HashiCorp.
provider "google" {
project = "PROJECT-ID"
}
resource "google_artifact_registry_repository" "my-repo" {
provider = google-beta
location = "LOCATION"
repository_id = "REPOSITORY"
description = "DESCRIPTION"
format = "FORMAT"
}
resource "google_service_account" "repo-account" {
provider = google-beta
account_id = "ACCOUNT-ID"
display_name = "Repository Service Account"
}
resource "google_artifact_registry_repository_iam_member" "repo-iam" {
provider = google-beta
location = google_artifact_registry_repository.my-repo.location
repository = google_artifact_registry_repository.my-repo.name
role = "roles/artifactregistry.reader"
member = "serviceAccount:${google_service_account.repo-account.email}"
}
ACCOUNT-ID adalah ID akun layanan. Ini adalah bagian dari kolom email akun layanan sebelum simbol @
.
Untuk contoh tambahan, lihat dokumentasi untuk resource google_artifact_registry_repository_iam.
Mengonfigurasi akses publik ke repositori
Jika Anda memiliki artefak yang ingin tersedia untuk siapa saja di internet tanpa autentikasi, simpan artefak tersebut di repositori yang Anda tampilkan kepada publik.
Guna mengonfigurasi repositori untuk akses hanya baca publik, berikan peran Pembaca Artifact Registry ke allUsers
utama. Sebaiknya batasi kuota permintaan pengguna agar satu pengguna tidak dapat menghabiskan kuota keseluruhan project Anda.
Konsol
Buka halaman Repositories di Konsol Google Cloud.
Pilih repositori yang sesuai.
Jika panel info tidak ditampilkan, klik Tampilkan Panel Info di panel menu.
Pada tab Permissions, klik Add Principal.
Di kolom New principals, masukkan
allUsers
.Pilih peran Artifact Registry Reader.
Tetapkan batas per pengguna pada permintaan Artifact Registry API untuk mencegah penyalahgunaan oleh pengguna yang tidak diautentikasi. Lihat Membatasi penggunaan untuk mengetahui petunjuknya.
gcloud
-
Di konsol Google Cloud, aktifkan Cloud Shell.
Di bagian bawah Google Cloud Console, Cloud Shell sesi akan terbuka dan menampilkan perintah command line. Cloud Shell adalah lingkungan shell dengan Google Cloud CLI yang sudah terinstal, dan dengan nilai yang sudah ditetapkan untuk project Anda saat ini. Diperlukan waktu beberapa detik untuk melakukan inisialisasi sesi.
Jalankan perintah berikut:
gcloud artifacts repositories add-iam-policy-binding REPOSITORY \ --location=LOCATION --member=allUsers --role=ROLE
dengan
REPOSITORY adalah ID repositori.
ROLE adalah peran yang ingin Anda berikan.
LOCATION adalah lokasi regional atau multi-regional dari repositori.
Misalnya, konfigurasikan repositori
my-repo
di lokasi--us-central1
sebagai publik, jalankan:gcloud artifacts repositories add-iam-policy-binding my-repo \ --location=us-central1 --member=allUsers --role=roles/artifactregistry.reader
Tetapkan batas per pengguna pada permintaan Artifact Registry API untuk mencegah penyalahgunaan oleh pengguna yang tidak diautentikasi. Lihat Membatasi penggunaan untuk mengetahui petunjuknya.
Mencabut izin
Untuk mencabut akses ke repositori, hapus akun utama dari daftar akun utama yang diotorisasi.
Untuk menghapus akses publik dari repositori, hapus akun utama allUsers
.
Konsol
Untuk mencabut izin:
Buka halaman Repositories di Konsol Google Cloud.
Pilih repositori yang sesuai.
Jika panel info tidak ditampilkan, klik Tampilkan Panel Info di panel menu.
Pada tab Permissions, luaskan akun utama yang sesuai. Jika Anda mengubah repositori publik menjadi pribadi, luaskan akun utama
allUsers
.Klik Hapus akun utama untuk mencabut akses.
gcloud
-
Di konsol Google Cloud, aktifkan Cloud Shell.
Di bagian bawah Google Cloud Console, Cloud Shell sesi akan terbuka dan menampilkan perintah command line. Cloud Shell adalah lingkungan shell dengan Google Cloud CLI yang sudah terinstal, dan dengan nilai yang sudah ditetapkan untuk project Anda saat ini. Diperlukan waktu beberapa detik untuk melakukan inisialisasi sesi.
Untuk mencabut peran di level project, jalankan perintah berikut:
gcloud projects remove-iam-policy-binding PROJECT \ --member=PRINCIPAL \ --role=ROLE
- PROJECT adalah project ID.
PRINCIPAL adalah akun utama yang bindingnya akan dihapus. Gunakan format
user|group|serviceAccount:email
ataudomain:domain
.Contoh:
user:test-user@gmail.com
,group:admins@example.com
,serviceAccount:test123@example.domain.com
, ataudomain:example.domain.com
.ROLE adalah peran yang ingin Anda cabut.
Untuk mencabut peran repositori, jalankan perintah berikut:
gcloud artifacts repositories remove-iam-policy-binding REPOSITORY --location=LOCATION \ --member=PRINCIPAL \ --role=ROLE
dengan
- REPOSITORY adalah ID repositori.
PRINCIPAL adalah akun utama yang bindingnya akan dihapus. Gunakan format
user|group|serviceAccount:email
ataudomain:domain
.Contoh:
user:test-user@gmail.com
,group:admins@example.com
,serviceAccount:test123@example.domain.com
, ataudomain:example.domain.com
.Untuk mencabut akses publik ke repositori, tentukan
allUsers
utama.ROLE adalah peran yang ingin Anda cabut.
Misalnya, guna menghapus binding kebijakan untuk peran
roles/artifactregistry.writer
bagi penggunawrite@gmail.com
dengan repositorimy-repo
di lokasi--us-central1
, jalankan:gcloud artifacts repositories remove-iam-policy-binding my-repo \ --location=us-central1 \ --member=user:write@gmail.com \ --role=roles/artifactregistry.writer
Untuk mencabut akses publik ke
my-repo
di lokasi--us-central1
, jalankan:gcloud artifacts repositories remove-iam-policy-binding my-repo \ --location=us-central1 \ --member=allUsers \ --role=roles/artifactregistry.reader
Memberikan akses bersyarat dengan tag
Fitur ini berada dalam Pratinjau.
Administrator project dapat membuat tag untuk resource di seluruh Google Cloud dan mengelolanya di Resource Manager. Saat Anda melampirkan tag ke repositori Artifact Registry, administrator dapat menggunakan tag dengan kondisi IAM untuk memberikan akses bersyarat ke repositori.
Anda tidak dapat melampirkan tag ke artefak individual.
Untuk mengetahui informasi selengkapnya, lihat dokumentasi berikut:
- Administrator yang menyiapkan tag dan kontrol akses
- Developer melampirkan tag ke repositori
Mengintegrasikan dengan layanan Google Cloud
Untuk sebagian besar akun layanan Google Cloud, mengonfigurasi akses ke registry hanya memerlukan pemberian izin IAM yang sesuai.
Izin default untuk layanan Google Cloud
Layanan Google Cloud seperti Cloud Build atau Google Kubernetes Engine menggunakan akun layanan default atau yang dikelola Google untuk berinteraksi dengan resource dalam project yang sama.
Anda harus mengonfigurasi atau mengubah izin sendiri jika:
- Layanan Google Cloud berada di project yang berbeda dengan Artifact Registry.
- Izin default tidak memenuhi kebutuhan Anda. Misalnya, akun layanan Compute Engine default memiliki akses hanya baca ke penyimpanan dalam project yang sama. Jika ingin mengirim image dari VM ke Artifact Registry, Anda dapat mengubah izin untuk akun layanan VM atau menggunakan akun lain dengan izin yang diperlukan.
- Anda menggunakan akun layanan yang disediakan pengguna untuk berinteraksi dengan Artifact Registry, bukan akun layanan default.
Akun layanan berikut biasanya mengakses Artifact Registry. Alamat email untuk akun layanan berisi project ID atau nomor project Google Cloud untuk project tempat layanan dijalankan.
Layanan | Akun layanan | Alamat email | Izin |
---|---|---|---|
Lingkungan fleksibel App Engine | Akun layanan App Engine | PROJECT-ID@appspot.gserviceaccount.com | Peran editor, dapat membaca dan menulis ke repositori |
Compute Engine | Akun layanan default Compute Engine | PROJECT-NUMBER-compute@developer.gserviceaccount.com | Peran editor, terbatas untuk akses hanya baca ke repositori |
Cloud Build | Akun layanan Cloud Build | PROJECT-NUMBER@cloudbuild.gserviceaccount.com |
Izin default mencakup akses baca dan tulis ke repositori serta kemampuan untuk membuat repositori gcr.io. |
Cloud Run |
Agen layanan Cloud Run Agen layanan untuk run.googleapis.com . |
service-PROJECT-NUMBER@serverless-robot-prod.iam.gserviceaccount.com | Izin pembaca, terbatas pada akses hanya baca ke repositori |
GKE |
Akun layanan default Compute Engine Akun layanan default untuk node. |
PROJECT-NUMBER-compute@developer.gserviceaccount.com | Peran editor, terbatas untuk akses hanya baca ke repositori |
Memberikan akses ke instance Compute Engine
Instance VM yang mengakses repositori harus memiliki izin Artifact Registry dan cakupan akses penyimpanan yang dikonfigurasi.
Meskipun tingkat akses akun layanan ditentukan oleh peran IAM yang diberikan ke akun layanan, cakupan akses pada instance VM menentukan cakupan OAuth default untuk permintaan yang dibuat melalui gcloud CLI dan library klien pada instance. Akibatnya, cakupan akses berpotensi membatasi akses lebih lanjut ke metode API saat melakukan autentikasi dengan Kredensial Default Aplikasi.
Compute Engine menggunakan default berikut:
- Akun layanan default Compute Engine adalah identitas untuk instance VM. Alamat email akun layanan memiliki akhiran @developer.gserviceaccount.com.
- Akun layanan default memiliki peran IAM dasar Editor jika Anda belum menonaktifkan perilaku ini.
- Instance yang Anda buat dengan akun layanan default memiliki cakupan akses default Compute Engine, termasuk akses hanya baca ke penyimpanan. Meskipun peran Editor umumnya memberikan akses
tulis, cakupan akses penyimpanan
read-only
membatasi akun layanan instance untuk mendownload artefak hanya dari repositori apa pun dalam project yang sama.
Anda harus mengonfigurasi cakupan akses akun layanan jika:
- Akun layanan VM perlu mengakses repositori di project yang berbeda.
- Akun layanan VM perlu melakukan tindakan selain membaca artefak
dari repositori. Hal ini biasanya berlaku untuk alat pihak ketiga pada VM yang perlu mengirim image atau menjalankan perintah
gcloud
Artifact Registry.
Untuk mengonfigurasi izin dan menetapkan cakupan akses:
Pada project dengan instance VM Anda, dapatkan nama akun layanan default Compute Engine. Alamat email akun layanan memiliki akhiran @developer.gserviceaccount.com.
Pada project yang memiliki repositori, berikan izin agar akun layanan dapat mengakses repositori.
Tetapkan cakupan akses dengan opsi --scopes.
Hentikan instance VM. Baca bagian Menghentikan instance.
Tetapkan cakupan akses dengan perintah berikut:
gcloud compute instances set-service-account INSTANCE --scopes=SCOPE
Ganti SCOPE dengan nilai yang sesuai.
Untuk Docker, opsi berikut ini didukung:
storage-ro
- Memberikan izin baca hanya untuk mengambil gambar.storage-rw
- Memberikan izin baca dan tulis untuk mengirim atau menarik gambar.cloud-platform
- Melihat dan mengelola data, termasuk metadata, di seluruh layanan Google Cloud.
Untuk format lain, Anda harus menggunakan cakupan
cloud-platform
.
Mulai ulang instance VM. Lihat Memulai instance yang dihentikan.
Memberikan akses ke cluster Google Kubernetes Engine
Cluster GKE dan node pool dapat menarik container tanpa konfigurasi tambahan jika semua persyaratan berikut terpenuhi:
- GKE berada dalam project yang sama dengan Artifact Registry
- Node menggunakan akun layanan default, akun layanan default Compute Engine
- Node dibuat dengan akses baca ke penyimpanan dengan:
- Menggunakan cakupan akses default Compute Engine.
- Memberikan cakupan akses
cloud-platform
atau cakupan lain yang mencakup akses baca ke penyimpanan.
- Anda menjalankan versi GKE yang didukung
Jika lingkungan GKE Anda tidak memenuhi persyaratan ini, petunjuk untuk memberikan akses bergantung pada apakah Anda menggunakan akun layanan default Compute Engine atau akun layanan yang diberikan pengguna sebagai identitas untuk node Anda.
- Akun layanan default
Persyaratan konfigurasi berikut berlaku untuk akun layanan default Compute Engine:
Jika GKE berada di project yang berbeda dengan Artifact Registry, beri izin yang diperlukan ke akun layanan.
Untuk mengirim gambar, berinteraksi dengan repositori untuk format selain penampung, atau menjalankan perintah
gcloud
dari cluster, Anda harus menetapkan cakupan akses untuk akun layanan saat membuat kumpulan cluster atau node.Jika Anda tidak menggunakan versi GKE yang didukung, konfigurasikan imagePullSecrets.
- Akun layanan yang disediakan pengguna
Jika ingin menggunakan akun layanan yang diberikan pengguna sebagai identitas untuk cluster, Anda harus:
Berikan izin yang diperlukan ke akun layanan dari project Google Cloud tempat Artifact Registry dijalankan.
Secara default, membuat cluster atau kumpulan node dengan akun layanan yang disediakan pengguna akan memberikan cakupan akses
cloud-platform
.Jika Anda menggunakan flag
--scopes
dengan perintah gcloud container clusters create atau gcloud container node-pools create, Anda harus menyertakan cakupan akses yang sesuai untuk digunakan dengan Artifact Registry.
Menetapkan cakupan akses
Cakupan akses adalah metode lama dalam menentukan otorisasi untuk VM Compute Engine. Untuk mengambil gambar dari repositori Artifact Registry, node GKE harus memiliki cakupan akses hanya baca penyimpanan atau cakupan akses penyimpanan lain yang mencakup akses baca penyimpanan.
Anda hanya dapat menetapkan cakupan akses saat membuat cluster atau kumpulan node. Anda tidak dapat mengubah cakupan akses pada node yang ada.
- Jika Anda menggunakan akun layanan default Compute Engine, GKE akan membuat node dengan cakupan akses default Compute Engine, yang mencakup akses hanya baca ke penyimpanan.
- Jika Anda menggunakan akun layanan yang disediakan pengguna, GKE akan membuat node dengan cakupan
cloud-platform
, cakupan yang diperlukan untuk sebagian besar layanan Google Cloud.
Untuk menentukan cakupan akses saat membuat cluster, jalankan perintah berikut:
gcloud container clusters create NAME --scopes=SCOPES
Untuk menentukan cakupan akses saat membuat kumpulan node, jalankan perintah berikut:
gcloud container node-pools create NAME --scopes=SCOPES
Ganti nilai berikut:
- NAME adalah nama cluster atau kumpulan node.
SCOPES adalah daftar cakupan akses yang dipisahkan koma yang akan diberikan.
Untuk mengakses repositori Docker, gunakan salah satu cakupan berikut:
storage-ro
- Memberikan izin hanya baca untuk mengambil gambar.storage-rw
- Memberikan izin baca dan tulis untuk mengirim atau menarik gambar.cloud-platform
- Melihat dan mengelola data, termasuk metadata, di seluruh layanan Google Cloud.Untuk mengakses repositori lain, Anda harus menggunakan cakupan
cloud-platform
.
Untuk mengetahui daftar lengkap cakupan, baca dokumentasi untuk gcloud container clusters create atau gcloud container node-pools create.
Untuk mengetahui informasi lebih lanjut tentang cakupan yang dapat ditetapkan saat membuat cluster baru, baca dokumentasi untuk perintah gcloud container clusters create.
Mengonfigurasi imagePullSecret
Untuk mengonfigurasi imagePullSecret
:
Pada project dengan GKE, temukan akun layanan default Compute Engine. Alamat email akun memiliki akhiran @developer.gserviceaccount.com.
Download kunci akun layanan untuk akun layanan.
Di project dengan repositori, pastikan Anda telah diberi izin ke repositori.
Pada project dengan cluster Anda, buat rahasia
imagePullSecret
bernamaartifact-registry
dengan kunci akun layanan.kubectl create secret docker-registry artifact-registry \ --docker-server=https://LOCATION-docker.pkg.dev \ --docker-email=SERVICE-ACCOUNT-EMAIL \ --docker-username=_json_key \ --docker-password="$(cat KEY-FILE)"
Dari mana
- LOCATION adalah lokasi regional atau multi-regional dari repositori.
- SERVICE-ACCOUNT-EMAIL adalah alamat email akun layanan Compute Engine.
- KEY-FILE adalah nama file kunci akun layanan Anda. Misalnya,
key.json
.
Buka akun layanan default Anda:
kubectl edit serviceaccount default --namespace default
Setiap namespace di cluster Kubernetes Anda memiliki akun layanan default yang disebut
default
. Akun layanan default ini digunakan untuk menarik image container Anda.Tambahkan secret
imagePullSecret
yang baru dibuat ke akun layanan default Anda:imagePullSecrets: - name: artifact-registry
Akun layanan Anda sekarang akan terlihat seperti ini:
apiVersion: v1 kind: ServiceAccount metadata: name: default namespace: default ... secrets: - name: default-token-zd84v # The secret you created: imagePullSecrets: - name: artifact-registry
Sekarang, setiap pod baru yang dibuat di namespace default
saat ini akan memiliki rahasia imagePullSecret
yang ditentukan.
Akun layanan Artifact Registry
Agen Layanan Artifact Registry adalah akun layanan yang dikelola Google yang bertindak atas nama Artifact Registry saat berinteraksi dengan layanan Google Cloud. Untuk mengetahui informasi selengkapnya tentang akun dan izinnya, lihat akun layanan Artifact Registry.
Langkah selanjutnya
Setelah menyiapkan izin, pelajari lebih lanjut cara menangani artefak.
- Container images: Docker, Helm
- Language packages: Java, Node.js, Python, Go
- OS packages: Debian, RPM