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 dan mengonfigurasi izin serta autentikasi yang diperlukan untuk mengakses repositori.
Jika Anda menggunakan Artifact Analysis untuk menangani metadata penampung, seperti kerentanan yang ditemukan dalam image, lihat dokumentasi Artifact Analysis untuk mengetahui 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 akun utama secara langsung; sebagai gantinya, Anda dapat memberikan peran kepada mereka. Saat memberikan peran kepada akun utama, Anda memberikan semua izin yang dimiliki oleh peran tersebut. 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 Anda berada dalam project Google Cloud yang sama dan izin default memenuhi kebutuhan Anda, 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. Dalam project dengan Artifact Registry, berikan kumpulan identitas beban kerja 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. Dalam project dengan Artifact Registry, berikan peran yang diperlukan ke 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.
Workload Identity Federation memungkinkan Anda menggunakan Identity and Access Management untuk memberikan peran IAM kepada identitas 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:
- Buat kumpulan Workload Identity Federation.
- Buat penyedia Workload Identity Federation.
- Berikan peran Artifact Registry yang sesuai ke workload identity pool untuk mengizinkan akses repositori.
Konfigurasikan klien pihak ketiga Anda untuk melakukan autentikasi dengan Artifact Registry.
Gunakan 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 bagi beban kerja GitLab di Google Cloud tanpa memerlukan akun layanan atau kunci akun layanan. Untuk mengetahui informasi selengkapnya tentang cara Workload Identity Federation digunakan dalam kemitraan ini, lihat Kebijakan IAM dan Workload Identity Federation Google Cloud.
Untuk menyiapkan Workload Identity Federation dan peran IAM yang diperlukan untuk GitLab di Google Cloud, lihat tutorial GitLab Kebijakan IAM dan Workload Identity Federation Google Cloud.
Untuk menghubungkan repositori Artifact Registry, ikuti tutorial GitLab Google Artifact Registry.
Peran dan izin
Setiap metode Artifact Registry API mengharuskan akun utama yang membuat permintaan memiliki izin yang diperlukan untuk menggunakan resource. Izin diberikan kepada akun utama dengan menetapkan kebijakan yang memberikan peran yang telah ditentukan sebelumnya pada resource kepada akun utama.
Anda dapat memberikan peran di project Google Cloud atau repositori Artifact Registry.
Peran Artifact Registry yang telah ditetapkan
IAM menyediakan peran yang telah ditetapkan yang memberikan akses ke resource Google Cloud tertentu.
Gunakan peran standar berikut untuk repositori 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. |
gcr.io
. Peran tersebut tidak mencakup izin untuk membuat format repositori lain di Artifact Registry di domain pkg.dev
. Peran ini mendukung kompatibilitas
mundur dengan Container Registry, karena Container Registry menggunakan push pertama
image container untuk membuat setiap registry multi-regional.
Peran | Deskripsi |
---|---|
Penulis Create-on-push Artifact Registry
(roles/artifactregistry.createOnPushWriter ) |
Membaca dan menulis artefak. Buat repositori gcr.io. |
Administrator Repositori Create-on-push Artifact Registry
(roles/artifactregistry.createOnPushRepoAdmin ) |
Membaca, menulis, dan menghapus artefak. Buat repositori gcr.io. |
gcloud iam roles describe
untuk melihat daftar izin di setiap peran.
Peran IAM dasar
Peran dasar adalah peran yang sangat permisif yang sudah ada sebelum pengantar IAM. Anda tidak boleh memberikan peran dasar dalam lingkungan produksi, tetapi Anda dapat memberikannya dalam lingkungan pengembangan atau pengujian.
Gunakan peran bawaan untuk akses repositori jika memungkinkan sehingga pengguna dan akun layanan hanya memiliki izin yang diperlukan.
Untuk mengetahui informasi selengkapnya tentang peran dasar, lihat Referensi peran dasar dan bawaan IAM.
Memberikan peran
Berikan peran di level project jika peran yang sama berlaku untuk semua repositori dalam project. Jika beberapa akun memerlukan tingkat akses yang berbeda, berikan peran di tingkat repositori.
Jika Anda memberikan peran di repositori virtual, peran tersebut akan 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 membuat perubahan kebijakan berskala besar dengan
mendapatkan kebijakan izin resource, mengubahnya, lalu menetapkan kebijakan izin
yang diubah. Untuk mengetahui informasi selengkapnya, lihat
Memberi atau mencabut beberapa peran secara terprogram.
Memberikan peran 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 paling sedikit yang diperlukan untuk mengakses resource Artifact Registry yang diperlukan. Untuk mengetahui informasi tentang peran dan izin bawaan Artifact Registry, lihat Peran Artifact Registry yang telah ditetapkan.
Klik Simpan.
gcloud
-
In the Google Cloud console, activate Cloud Shell.
At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.
Untuk memberikan peran ke satu akun utama, jalankan perintah berikut:
gcloud projects add-iam-policy-binding PROJECT \ --member=PRINCIPAL \ --role=ROLE
di mana
- PROJECT adalah ID project tempat Artifact Registry berjalan.
PRINCIPAL adalah akun utama yang akan ditambahkan binding-nya. Gunakan bentuk
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, lihat Memberikan atau mencabut beberapa peran secara terprogram
Memberikan peran khusus repositori
Berikan peran 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 menu bar.
Di 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. Sesuai dengan prinsip keamanan hak istimewa terendah, pertimbangkan untuk memberikan jumlah hak istimewa paling sedikit yang diperlukan untuk mengakses resource Artifact Registry yang diperlukan. Untuk mengetahui informasi tentang peran dan izin bawaan Artifact Registry, lihat Peran Artifact Registry yang telah ditetapkan.
Klik Simpan.
gcloud
-
In the Google Cloud console, activate Cloud Shell.
At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.
Anda dapat menetapkan kumpulan IAM untuk setiap 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
di mana
- REPOSITORY adalah ID repositori.
PRINCIPAL adalah akun utama yang akan ditambahkan binding-nya. Gunakan bentuk
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 repositori regional atau multi-regional.
Misalnya, untuk menambahkan binding kebijakan IAM untuk peran
roles/artifactregistry.writer
bagi penggunawrite@gmail.com
dengan repositorimy-repo
di lokasi--us-west1
, jalankan:gcloud artifacts repositories add-iam-policy-binding my-repo \ --location=us-west1 --member=user:write@gmail.com --role=roles/artifactregistry.writer
Untuk memberikan peran menggunakan file kebijakan, gunakan prosedur yang dijelaskan dalam artikel Memberikan atau mencabut beberapa peran secara terprogram dengan perintah gcloud artifacts repositories get-iam-policy dan gcloud artifacts repositories set-iam-policy.
Terraform
Gunakan resource google_artifact_registry_repository_iam untuk
mengonfigurasi kebijakan IAM. Contoh berikut menentukan akun layanan
dengan nama resource repo-account
dan memberikan akses baca ke
repositori dengan nama resource my-repo
.
Jika Anda baru menggunakan Terraform untuk Google Cloud, lihat halaman Mulai - 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 Anda sediakan untuk siapa saja di internet tanpa autentikasi, simpan artefak tersebut di repositori yang Anda publikasikan.
Untuk mengonfigurasi repositori untuk akses hanya baca publik, berikan
peran Pembaca Artifact Registry ke akun utama allUsers
. Sebaiknya Anda juga
menetapkan batas kuota permintaan pengguna sehingga 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 menu bar.
Di 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 mendapatkan petunjuk.
gcloud
-
In the Google Cloud console, activate Cloud Shell.
At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.
Jalankan perintah berikut:
gcloud artifacts repositories add-iam-policy-binding REPOSITORY \ --location=LOCATION --member=allUsers --role=ROLE
di mana
REPOSITORY adalah ID repositori.
ROLE adalah peran yang ingin Anda berikan.
LOCATION adalah lokasi repositori regional atau multi-regional.
Misalnya, konfigurasikan repositori
my-repo
di lokasi--us-west1
sebagai publik, jalankan:gcloud artifacts repositories add-iam-policy-binding my-repo \ --location=us-west1 --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 mendapatkan petunjuk.
Mencabut peran
Untuk mencabut akses ke repositori, hapus akun utama dari daftar akun utama yang diberi otorisasi.
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 menu bar.
Di tab Izin, luaskan akun utama yang sesuai. Jika Anda membuat repositori publik menjadi pribadi, luaskan akun utama
allUsers
.Klik Hapus akun utama untuk mencabut akses.
gcloud
-
In the Google Cloud console, activate Cloud Shell.
At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.
Untuk mencabut peran di tingkat project, jalankan perintah berikut:
gcloud projects remove-iam-policy-binding PROJECT \ --member=PRINCIPAL \ --role=ROLE
- PROJECT adalah project ID.
PRINCIPAL adalah akun utama yang akan dihapus binding-nya. Gunakan bentuk
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
di mana
- REPOSITORY adalah ID repositori.
PRINCIPAL adalah akun utama yang akan dihapus binding-nya. Gunakan bentuk
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 akun utama
allUsers
.ROLE adalah peran yang ingin Anda cabut.
Misalnya, untuk menghapus binding kebijakan untuk peran
roles/artifactregistry.writer
bagi penggunawrite@gmail.com
dengan repositorimy-repo
di lokasi--us-west1
, jalankan:gcloud artifacts repositories remove-iam-policy-binding my-repo \ --location=us-west1 \ --member=user:write@gmail.com \ --role=roles/artifactregistry.writer
Untuk mencabut akses publik ke
my-repo
di lokasi--us-west1
, jalankan:gcloud artifacts repositories remove-iam-policy-binding my-repo \ --location=us-west1 \ --member=allUsers \ --role=roles/artifactregistry.reader
Memberikan akses bersyarat dengan tag
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 setiap artefak.
Untuk informasi selengkapnya, lihat dokumentasi berikut:
- Administrator menyiapkan tag dan kontrol akses
- Developer yang melampirkan tag ke repositori
Mengintegrasikan dengan layanan Google Cloud
Untuk sebagian besar akun layanan Google Cloud, mengonfigurasi akses ke registry hanya memerlukan pemberian peran IAM yang sesuai.
Akun layanan default untuk layanan Google Cloud
Layanan Google Cloud seperti Cloud Build atau Google Kubernetes Engine menggunakan akun layanan default atau agen layanan 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.
- Anda menggunakan akun layanan yang disediakan pengguna untuk berinteraksi dengan Artifact Registry, bukan akun layanan default.
- Konfigurasi kebijakan organisasi Anda mencegah pemberian peran otomatis ke akun layanan default.
Akun layanan berikut biasanya mengakses Artifact Registry. Alamat email untuk akun layanan mencakup project ID atau nomor project Google Cloud dari project tempat layanan berjalan.
Layanan | Akun layanan | Alamat email |
---|---|---|
Lingkungan fleksibel App Engine | Akun layanan App Engine | PROJECT-ID@appspot.gserviceaccount.com |
Compute Engine | Akun layanan default Compute Engine | PROJECT-NUMBER-compute@developer.gserviceaccount.com |
Cloud Build | Akun layanan Compute Engine atau Akun layanan Cloud Build lama |
Bergantung pada setelan organisasi Anda, alamat email akun layanan default adalah salah satu dari berikut:
|
Cloud Run |
Cloud Run service agent Agen layanan untuk run.googleapis.com . |
service-PROJECT-NUMBER@serverless-robot-prod.iam.gserviceaccount.com |
GKE |
Akun layanan default Compute Engine Akun layanan default untuk node. |
PROJECT-NUMBER-compute@developer.gserviceaccount.com |
Bergantung pada konfigurasi kebijakan organisasi Anda, akun layanan default mungkin
secara otomatis diberi peran Editor di project
Anda. Sebaiknya Anda menonaktifkan pemberian peran otomatis dengan
menerapkan batasan kebijakan organisasi
iam.automaticIamGrantsForDefaultServiceAccounts
. Jika Anda membuat organisasi setelah 3 Mei 2024, batasan ini akan diterapkan secara default.
Jika Anda menonaktifkan pemberian peran otomatis, Anda harus menentukan peran mana yang akan diberikan ke akun layanan default, lalu memberikan peran tersebut secara manual.
Jika akun layanan default sudah memiliki peran Editor, sebaiknya ganti peran Editor dengan peran yang kurang permisif. Untuk mengubah peran akun layanan dengan aman, gunakan Policy Simulator untuk melihat dampak perubahan, lalu berikan dan cabut peran yang sesuai.
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 di 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 mengautentikasi dengan Kredensial Default Aplikasi.
Compute Engine menggunakan setelan 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 Editor dasar IAM, 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
menulis, 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 di VM yang perlu
mengirim image atau menjalankan perintah
gcloud
Artifact Registry.
Untuk mengonfigurasi peran dan menetapkan cakupan akses:
Di project dengan instance VM Anda, dapatkan nama akun layanan default Compute Engine. Alamat email akun layanan memiliki akhiran @developer.gserviceaccount.com.
Di project dengan repositori, berikan izin agar akun layanan dapat mengakses repositori.
Tetapkan cakupan akses dengan opsi --scopes.
Hentikan instance VM. Lihat 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 didukung:
storage-ro
- Memberikan izin baca hanya untuk mengambil gambar.storage-rw
- Memberikan izin baca dan tulis untuk mengirim atau menarik image.cloud-platform
- Melihat dan mengelola data, termasuk metadata, di seluruh layanan Google Cloud.
Untuk format lainnya, Anda harus menggunakan cakupan
cloud-platform
.
Mulai ulang instance VM. Lihat Memulai instance yang dihentikan.
Memberikan akses ke cluster Google Kubernetes Engine
Cluster dan node pool GKE 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, yaitu 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 GKE versi 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 disediakan pengguna sebagai identitas untuk node Anda.
- Akun layanan default
Persyaratan konfigurasi berikut berlaku untuk akun layanan default Compute Engine:
Jika GKE berada dalam project yang berbeda dengan Artifact Registry, berikan izin yang diperlukan ke akun layanan.
Untuk mengirim image, berinteraksi dengan repositori untuk format selain container, atau menjalankan perintah
gcloud
dari cluster, Anda harus menetapkan cakupan akses untuk akun layanan saat membuat cluster atau node pool.Jika Anda tidak menggunakan versi GKE yang didukung, konfigurasikan imagePullSecrets.
- Akun layanan yang disediakan pengguna
Jika ingin menggunakan akun layanan yang disediakan pengguna sebagai identitas untuk cluster, Anda harus:
Berikan izin yang diperlukan ke akun layanan dari project Google Cloud tempat Artifact Registry berjalan.
Secara default, membuat cluster atau node pool dengan akun layanan yang disediakan pengguna akan memberikan cakupan akses
cloud-platform
.Jika 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 image dari repositori Artifact Registry, node GKE harus memiliki cakupan akses hanya baca penyimpanan atau cakupan akses penyimpanan lain yang menyertakan akses baca penyimpanan.
Anda hanya dapat menetapkan cakupan akses saat membuat cluster atau node pool. Anda tidak dapat mengubah cakupan akses di 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 node pool, jalankan perintah berikut:
gcloud container node-pools create NAME --scopes=SCOPES
Ganti nilai berikut:
- NAME adalah nama cluster atau node pool.
SCOPES adalah daftar cakupan akses yang dipisahkan koma untuk 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 image.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, lihat dokumentasi untuk gcloud container clusters create atau gcloud container node-pools create.
Untuk mengetahui informasi selengkapnya tentang cakupan yang dapat Anda tetapkan saat membuat cluster baru, baca dokumentasi untuk perintah gcloud container clusters create.
Mengonfigurasi imagePullSecret
Untuk mengonfigurasi imagePullSecret
:
Di project dengan GKE, temukan akun layanan default Compute Engine. Alamat email akun memiliki akhiran @developer.gserviceaccount.com.
Download kunci akun layanan untuk akun layanan.
Dalam project dengan repositori, pastikan Anda telah memberikan izin ke repositori.
Dalam project dengan cluster Anda, buat secret
imagePullSecret
yang disebutartifact-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)"
Ganti kode berikut:
- LOCATION adalah lokasi repositori regional atau multi-regional.
- 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 mengambil 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 secret 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 menggunakan artefak.
Anda juga dapat membatasi download artefak dengan aturan download.