Memetakan peran IAM dari Container Registry ke Artifact Registry

Container Registry dan Artifact Registry menggunakan peran Identity and Access Management yang berbeda untuk mengontrol akses ke image container yang disimpan di registry.

Untuk membantu transisi dari Container Registry ke Artifact Registry, Anda dapat menjalankan perintah Google Cloud CLI yang:

  • Mengidentifikasi kebijakan yang mengizinkan yang berlaku pada bucket penyimpanan Cloud Storage yang menyimpan image untuk Container Registry
  • Menampilkan kebijakan dengan peran Artifact Registry yang serupa, sehingga Anda dapat memberikan akses ke repositori Artifact Registry kepada pengguna Container Registry yang ada.

Perintah ini menggunakan IAM Policy Analyzer untuk menganalisis kebijakan izinkan IAM.

Sebelum memulai

  1. Enable the Cloud Asset API.

    Enable the API

    Anda harus mengaktifkan API di project atau organisasi tempat Anda ingin menganalisis kebijakan izin yang sudah ada.

  2. Menginstal dan melakukan 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 di project, folder, atau organisasi yang ingin Anda analisis izinnya:

  • Viewer Aset Cloud (roles/cloudasset.viewer)
  • Untuk menganalisis kebijakan dengan peran IAM kustom: Role Viewer (roles/iam.roleViewer)
  • Untuk menggunakan Google Cloud CLI guna menganalisis kebijakan: Service Usage Consumer (roles/serviceusage.serviceUsageConsumer)
  • Untuk memberikan peran pada repositori Artifact Registry: Administrator Artifact Registry

Untuk mengetahui informasi selengkapnya tentang pemberian peran, lihat Mengelola akses.

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, perluas bagian Izin yang diperlukan:

Izin yang diperlukan

Izin berikut diperlukan untuk menganalisis kebijakan yang diizinkan dan memberikan akses ke repositori Artifact Registry:

  • cloudasset.assets.analyzeIamPolicy
  • cloudasset.assets.searchAllResources
  • cloudasset.assets.searchAllIamPolicies
  • Untuk menganalisis kebijakan dengan peran IAM kustom: 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 mung juga bisa mendapatkan izin ini dengan peran khusus atau peran bawaanlainnya.

Menggunakan alat pemetaan

Pemeriksaan alat pemetaan mengizinkan kebijakan untuk nama host Container Registry yang ditetapkan, seperti gcr.io.

Alat ini memeriksa kumpulan izin yang ada dalam peran Cloud Storage yang telah ditetapkan dan memetakannya ke peran Artifact Registry. Untuk membandingkan izin Cloud Storage dengan peran Artifact Registry, lihat Pemetaan peran.

Untuk menggunakan alat pemetaan peran:

  1. 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 Anda inginkan untuk 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 tersebut.

    Contoh perintah berikut menganalisis bucket penyimpanan pada gcr.io di project my-project untuk kebijakan izin yang diterapkan langsung ke bucket atau diwarisi dari ID organisasi induk 101231231231 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 di organisasi, file kebijakan akan menyertakan akun utama yang memiliki akses yang diberikan di tingkat folder atau organisasi.

    Misalnya, contoh berikut menyertakan binding peran Artifact Registry untuk:

    • agen layanan Cloud Build, Compute Engine, dan Container Registry. Agen layanan adalah akun layanan yang dikelola Google yang bertindak atas nama layanan Google 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
    
  2. Hapus baris untuk agen layanan Container Registry dari file kebijakan karena akun layanan tersebut tidak memerlukan akses ke repositori Artifact Registry Anda. Akhiran 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
    
  3. Tinjau binding peran lainnya untuk mengonfirmasi bahwa binding tersebut sudah sesuai.

    Artifact Registry memiliki peran bawaan tambahan yang mungkin perlu Anda pertimbangkan untuk beberapa akun utama. Misalnya, Administrator Repositori Create-on-push Artifact Registry mengizinkan akun utama membuat repositori gcr.io di Artifact Registry, tetapi tidak mengizinkannya membuat repositori Artifact Registry lainnya.

  4. Tambahkan binding peran untuk akun utama yang tidak ada di file kebijakan.

    Akun utama berikut mungkin tidak ada di file kebijakan yang ditampilkan:

    • Akun utama dengan peran khusus, dan peran khusus tersebut tidak memiliki kumpulan izin yang digunakan alat tersebut untuk memetakan peran.
    • Kepala sekolah yang diberi akses di folder induk atau organisasi jika Anda tidak memiliki izin untuk melihat folder induk atau organisasi.
  5. 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 regional atau multi-regional dari repositori.

    Contoh berikut untuk project my-project menerapkan kebijakan dalam file gcr-io-policy.yaml ke repositori bernama gcr.io di multi-region us:

    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 level 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 ke 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