Dokumen ini menunjukkan cara memetakan peran Container Registry ke peran Artifact Registry dan menerapkannya ke repositori Artifact Registry. Anda dapat menyelesaikan langkah-langkah yang sama menggunakan alat migrasi otomatis.
Container Registry dan Artifact Registry menggunakan peran Identity and Access Management (IAM) yang berbeda untuk mengontrol akses ke image container yang disimpan di registry.
Untuk membantu Anda bertransisi dari Container Registry ke Artifact Registry, Anda dapat menjalankan perintah Google Cloud CLI yang:
- Mengidentifikasi kebijakan izin yang berlaku untuk bucket penyimpanan Cloud Storage yang menyimpan gambar untuk Container Registry
- Menampilkan kebijakan dengan peran Artifact Registry yang serupa sehingga Anda dapat memberikan akses kepada pengguna Container Registry yang ada ke repositori Artifact Registry.
Perintah ini menggunakan Penganalisis Kebijakan IAM untuk menganalisis kebijakan izin IAM.
Sebelum memulai
Buat repositori Artifact Registry. Jika Anda telah memilih metode manual untuk melakukan transisi, ikuti langkah-langkah untuk bermigrasi secara manual ke repositori
gcr.io
di Artifact Registry atau bermigrasi secara manual ke repositoripkg.dev
.Enable the Cloud Asset API.
Anda harus mengaktifkan API di project tempat Anda ingin menganalisis kebijakan izin yang ada.
Instal dan lakukan inisialisasi gcloud CLI. Untuk penginstalan yang sudah ada, update ke versi terbaru dengan perintah:
gcloud components update
Peran yang diperlukan
Untuk mendapatkan izin yang Anda perlukan untuk menganalisis kebijakan yang diizinkan dan memberikan akses ke repositori Artifact Registry, minta administrator untuk memberi Anda peran IAM berikut pada project, folder, atau organisasi yang ingin Anda analisis izinnya:
-
Cloud Asset Viewer (
roles/cloudasset.viewer
) -
Untuk menganalisis kebijakan dengan peran IAM kustom:
Role Viewer (
roles/iam.roleViewer
) -
Untuk menggunakan Google Cloud CLI guna menganalisis kebijakan:
Pengguna Penggunaan Layanan (
roles/serviceusage.serviceUsageConsumer
) - Untuk memberikan peran pada repositori Artifact Registry: Administrator Artifact Registry
Untuk mengetahui informasi selengkapnya tentang cara memberikan peran, lihat Mengelola akses ke project, folder, dan organisasi.
Peran bawaan ini berisi izin yang diperlukan untuk menganalisis kebijakan izin dan memberikan akses ke repositori Artifact Registry. Untuk melihat izin yang benar-benar diperlukan, luaskan bagian Izin yang diperlukan:
Izin yang diperlukan
Izin berikut diperlukan untuk menganalisis kebijakan izin dan memberikan akses ke repositori Artifact Registry:
-
cloudasset.assets.analyzeIamPolicy
-
cloudasset.assets.searchAllResources
-
cloudasset.assets.searchAllIamPolicies
-
Untuk menganalisis kebijakan dengan peran IAM khusus:
iam.roles.get
-
Untuk menggunakan Google Cloud CLI guna menganalisis kebijakan:
serviceusage.services.use
-
Untuk memberikan peran pada repositori Artifact Registry:
artifactregistry.repositories.setIamPolicy
Anda mungkin juga bisa mendapatkan izin ini dengan peran khusus atau peran bawaan lainnya.
Menggunakan alat pemetaan
Alat pemetaan memeriksa kebijakan izinkan untuk nama host Container Registry yang ditentukan, seperti gcr.io
.
Alat ini memeriksa kumpulan izin yang ada dalam peran Cloud Storage bawaan dan memetakannya ke peran Artifact Registry. Untuk perbandingan izin Cloud Storage dengan peran Artifact Registry, lihat Pemetaan peran.
Untuk menggunakan alat pemetaan peran:
Jalankan alat pemetaan:
gcloud beta artifacts docker upgrade print-iam-policy HOSTNAME \ --project=PROJECT_ID > POLICY_FILENAME
Ganti nilai berikut:
HOSTNAME adalah nama host Container Registry yang ingin dianalisis oleh alat:
gcr.io
asia.gcr.io
eu.gcr.io
us.gcr.io
PROJECT_ID adalah ID project Google Cloud dengan host registry yang Anda analisis.
POLICY_FILE adalah nama file untuk kebijakan, dalam format YAML, yang akan ditampilkan oleh alat.
Contoh perintah berikut menganalisis bucket penyimpanan untuk
gcr.io
di projectmy-project
untuk kebijakan izin yang diterapkan langsung ke bucket atau diwarisi dari ID organisasi induk101231231231
dan turunannya.gcloud beta artifacts docker upgrade print-iam-policy gcr.io \ --project=my-project > gcr-io-policy.yaml
Perintah ini menampilkan file kebijakan dalam format YAML dengan binding peran Artifact Registry, berdasarkan kebijakan izin yang ada untuk bucket penyimpanan. Jika project induk untuk bucket penyimpanan berada dalam organisasi, file kebijakan mencakup akun utama yang memiliki akses yang diberikan di level folder atau organisasi.
Misalnya, contoh berikut mencakup binding peran Artifact Registry untuk:
- Agen layanan Cloud Build, Compute Engine, dan Container Registry. Agen layanan bertindak atas nama layananGoogle Cloud .
- Akun pengguna
user@example.com
- Akun layanan yang dikelola pengguna
deploy@my-project.iam.gserviceaccount.com
.
bindings: - members: - service-3213213213213@gcp-sa-cloudbuild.iam.gserviceaccount.com - user:user@example.com role: roles/artifactregistry.repoAdmin - members: - serviceAccount:deploy@my-project.iam.gserviceaccount.com - serviceAccount:service-1231231231231@@compute-system.iam.gserviceaccount.com - serviceAccount:service-1231231231231@containerregistry.iam.gserviceaccount.com role: roles/artifactregistry.reader
Hapus baris untuk agen layanan Container Registry dari file kebijakan karena akun layanan tersebut tidak memerlukan akses ke repositori Artifact Registry Anda. Sufiks alamat email agen layanan adalah
containerregistry.iam.gserviceaccount.com
.Dalam contoh kebijakan dari langkah sebelumnya, baris dengan agen layanan Container Registry adalah:
- serviceAccount:service-1231231231231@containerregistry.iam.gserviceaccount.com
Tinjau binding peran lainnya untuk mengonfirmasi bahwa binding tersebut sudah sesuai.
Artifact Registry memiliki peran bawaan tambahan yang mungkin ingin Anda pertimbangkan untuk beberapa akun utama. Misalnya, Administrator Repositori Buat-saat-push Artifact Registry memungkinkan pokok membuat repositori gcr.io di Artifact Registry, tetapi tidak mengizinkannya membuat repositori Artifact Registry lainnya.
Tambahkan binding peran untuk akun utama yang tidak ada dalam file kebijakan.
Akun utama berikut mungkin tidak ada dalam file kebijakan yang ditampilkan:
- Akun utama dengan peran khusus, dan peran khusus tersebut tidak memiliki kumpulan izin yang digunakan alat untuk memetakan peran.
- Principal yang diberi akses di folder atau organisasi induk jika Anda tidak memiliki izin untuk melihat folder atau organisasi induk.
Terapkan binding kebijakan ke repositori Artifact Registry Anda.
gcloud artifacts repositories set-iam-policy REPOSITORY FILENAME \ --project=PROJECT_ID \ --location=LOCATION
Ganti nilai berikut:
- REPOSITORY adalah nama repositori.
- POLICY_FILENAME adalah nama file kebijakan yang Anda terapkan ke repositori.
- PROJECT_ID adalah project ID.
- LOCATION adalah lokasi repositori regional atau multi-regional.
Contoh berikut untuk project
my-project
menerapkan kebijakan dalam filegcr-io-policy.yaml
ke repositori bernamagcr.io
di multi-regionus
:gcloud artifacts repositories set-iam-policy gcr.io gcr-io-policy.yaml \ --project=my-project \ --location=us
Jika Anda ingin menerapkan binding peran ke resource tingkat yang lebih tinggi, edit kebijakan project, folder, atau organisasi yang ada dengan binding yang ingin Anda tambahkan.
Pemetaan peran
Tabel berikut menunjukkan peran Artifact Registry bawaan yang harus diberikan kepada pengguna Container Registry yang ada, bergantung pada izin Cloud Storage yang mereka miliki.
Izin yang diperlukan dalam peran | Peran Artifact Registry |
---|---|
storage.objects.get storage.objects.list |
Pembaca Artifact Registry |
storage.buckets.get storage.objects.get storage.objects.list storage.objects.create |
Penulis Artifact Registry |
storage.buckets.get storage.objects.get storage.objects.list storage.objects.create storage.objects.delete |
Administrator Repositori Artifact Registry |
storage.buckets.get storage.objects.get storage.objects.list storage.objects.create storage.buckets.create |
Administrator Artifact Registry |