Kontrol akses dengan IAM

Halaman ini menjelaskan kontrol akses dengan Identity and Access Management (IAM) di Artifact Registry.

Izin default untuk Artifact Registry meminimalkan upaya penyiapan saat menerapkan 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 bekerja dengan metadata container, seperti kerentanan yang ditemukan dalam image, lihat dokumentasi Artifact Analysis untuk mengetahui informasi tentang cara memberikan akses untuk melihat atau mengelola metadata.

Sebelum memulai

  1. Aktifkan Artifact Registry, termasuk mengaktifkan API dan menginstal Google Cloud CLI.
  2. Jika Anda ingin menerapkan izin khusus repositori, maka 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 kepada akun utama secara langsung, tetapi Anda dapat memberikan peran kepadanya. Saat Anda 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 defaultGoogle Cloud

Secara default, izin berikut berlaku untuk Google Cloud layanan CI/CD dalam project yang sama dengan Artifact Registry:

  • Izin Cloud Build mencakup izin untuk mengupload dan mendownload artefak.

Jika semua layanan Anda berada di 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. Di project dengan Artifact Registry, berikan kumpulan identitas beban kerja atau akun layanan untuk setiap layanan dengan peran yang diperlukan. Jika terhubung ke Cloud Run, berikan peran Agen Layanan Cloud Run yang diperlukan.
  • Anda menggunakan versi GKE yang tidak memiliki dukungan bawaan untuk menarik 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. Di 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 Google Cloud resource. 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.

Menggunakan Workload Identity Federation:

  1. Buat kumpulan Workload Identity Federation.
  2. Buat penyedia Workload Identity Federation.
  3. Berikan peran Artifact Registry yang sesuai ke workload identity pool untuk mengizinkan akses repositori. Untuk mengetahui informasi selengkapnya, lihat Mengizinkan beban kerja eksternal Anda mengakses resource Google Cloud .
  4. Jika Anda perlu mengakses Artifact Registry dalam jangka waktu yang lebih lama, konfigurasi waktu habis masa berlaku token OIDC ke jangka waktu yang lebih lama dalam konfigurasi kredensial Anda.
  5. Konfigurasi klien pihak ketiga Anda untuk mengautentikasi dengan Artifact Registry.

Menggunakan akun layanan:

  1. Buat akun layanan untuk bertindak atas nama aplikasi Anda, atau pilih akun layanan yang ada yang akan digunakan untuk otomatisasi CI/CD.
  2. Berikan peran Artifact Registry yang sesuai ke akun layanan untuk memberikan akses repositori.
  3. Konfigurasi klien pihak ketiga Anda untuk mengautentikasi dengan Artifact Registry.

GitLab di Google Cloud

Integrasi GitLab on Google Cloud menggunakan Workload Identity Federation untuk otorisasi dan autentikasi bagi workload 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 Google Cloud Workload Identity Federation dan kebijakan IAM.

Untuk menyiapkan Workload Identity Federation dan peran IAM yang diperlukan untuk GitLab di Google Cloud, lihat tutorial GitLab Google Cloud Workload Identity Federation and IAM policies.

Untuk menghubungkan repositori Artifact Registry, ikuti tutorial GitLab Google Artifact Registry.

Peran dan izin

Setiap metode Artifact Registry API mengharuskan principal 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 kepada akun utama pada resource.

Anda dapat memberikan peran di project Google Cloud atau repositori Artifact Registry.

Peran Artifact Registry yang telah ditetapkan

IAM menyediakan peran bawaan 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.
Peran bawaan tambahan berikut berisi izin yang diperlukan untuk bermigrasi dari Container Registry ke Artifact Registry.

Peran Deskripsi
Admin Migrasi Container Registry -> Artifact Registry (roles/artifactregistry.containerRegistryMigrationAdmin) Mencakup semua izin yang diperlukan untuk menjalankan alat migrasi
Penulis Create-on-push Artifact Registry (roles/artifactregistry.createOnPushWriter) Membaca dan menulis artefak. Buat repositori gcr.io saat Anda melakukan push ke URL gcr.io.
Administrator Repositori Buat-saat-push Artifact Registry (roles/artifactregistry.createOnPushRepoAdmin) Membaca, menulis, dan menghapus artefak. Buat repositori gcr.io.
Untuk mengetahui daftar lengkap masing-masing izin 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 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 agar 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 pada 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 telah 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 memberikan peran Artifact Registry kepada mereka:

Konsol

  1. Buka halaman IAM di konsol Google Cloud .

    Buka halaman IAM

  2. Klik Select a project, pilih project tempat Artifact Registry berjalan, lalu klik Open.

  3. Klik Tambahkan.

  4. Masukkan alamat email. Anda dapat menambahkan individu, akun layanan, atau Google Grup sebagai akun utama.

  5. 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 bawaan.

  6. Klik Simpan.

gcloud

  1. In the Google Cloud console, activate Cloud Shell.

    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.

  2. Untuk memberikan peran kepada 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 formulir user|group|serviceAccount:email atau domain:domain.

      Contoh: user:test-user@gmail.com, group:admins@example.com, serviceAccount:test123@example.domain.com, atau domain:example.domain.com.

    • ROLE adalah peran yang ingin Anda berikan.

    Untuk mengetahui 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:

  1. Buka halaman Repositories di konsol Google Cloud .

    Buka halaman Repositori

  2. Pilih repositori yang sesuai.

  3. Jika panel info tidak ditampilkan, klik Tampilkan Panel Info di menu bar.

  4. Di tab Izin, klik Tambahkan Akun Utama.

  5. Masukkan alamat email. Anda dapat menambahkan individu, akun layanan, atau Google Grup sebagai akun utama.

  6. 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 bawaan.

  7. Klik Simpan.

gcloud

  1. In the Google Cloud console, activate Cloud Shell.

    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.

  2. Anda dapat menetapkan set IAM dari binding kebijakan individual atau menggunakan file kebijakan.

    Untuk memberikan peran kepada 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 formulir user|group|serviceAccount:email atau domain:domain.

      Contoh: user:test-user@gmail.com, group:admins@example.com, serviceAccount:test123@example.domain.com, atau domain: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 pengguna write@gmail.com dengan repositori my-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 Memberikan atau mencabut beberapa peran secara terprogram dengan perintah gcloud artifacts repositories get-iam-policy dan gcloud artifacts repositories set-iam-policy.

  3. 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 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 buat publik.

Untuk mengonfigurasi repositori agar dapat diakses baca saja oleh publik, berikan peran Artifact Registry Reader kepada pokok allUsers. Sebaiknya Anda juga membatasi kuota permintaan pengguna agar satu pengguna tidak dapat menggunakan kuota keseluruhan project Anda.

Konsol

  1. Buka halaman Repositories di konsol Google Cloud .

    Buka halaman Repositori

  2. Pilih repositori yang sesuai.

  3. Jika panel info tidak ditampilkan, klik Tampilkan Panel Info di menu bar.

  4. Di tab Izin, klik Tambahkan Akun Utama.

  5. Di kolom New principals, masukkan allUsers.

  6. Pilih peran Artifact Registry Reader.

  7. Tetapkan batas per pengguna pada permintaan Artifact Registry API untuk mencegah penyalahgunaan oleh pengguna yang tidak diautentikasi. Lihat Membatasi penggunaan untuk mengetahui petunjuknya.

gcloud

  1. In the Google Cloud console, activate Cloud Shell.

    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.

  2. 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, untuk mengonfigurasi 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

  3. Tetapkan batas per pengguna pada permintaan Artifact Registry API untuk mencegah penyalahgunaan oleh pengguna yang tidak diautentikasi. Lihat Membatasi penggunaan untuk mengetahui petunjuknya.

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:

  1. Buka halaman Repositories di konsol Google Cloud .

    Buka halaman Repositori

  2. Pilih repositori yang sesuai.

  3. Jika panel info tidak ditampilkan, klik Tampilkan Panel Info di menu bar.

  4. Di tab Izin, luaskan akun utama yang sesuai. Jika Anda membuat repositori publik menjadi pribadi, perluas prinsipal allUsers.

  5. Klik Hapus akun utama untuk mencabut akses.

gcloud

  1. In the Google Cloud console, activate Cloud Shell.

    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.

  2. 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 bindingnya. Gunakan formulir user|group|serviceAccount:email atau domain:domain.

      Contoh: user:test-user@gmail.com, group:admins@example.com, serviceAccount:test123@example.domain.com, atau domain:example.domain.com.

    • ROLE adalah peran yang ingin Anda cabut.

    Untuk mencabut peran untuk 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 bindingnya. Gunakan formulir user|group|serviceAccount:email atau domain:domain.

      Contoh: user:test-user@gmail.com, group:admins@example.com, serviceAccount:test123@example.domain.com, atau domain:example.domain.com.

      Untuk mencabut akses publik ke repositori, tentukan pokok allUsers.

    • ROLE adalah peran yang ingin Anda cabut.

    Misalnya, untuk menghapus binding kebijakan untuk peran roles/artifactregistry.writer bagi pengguna write@gmail.com dengan repositori my-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 tersebut dengan kondisi IAM untuk memberikan akses bersyarat ke repositori.

Anda tidak dapat melampirkan tag ke artefak individual.

Untuk mengetahui informasi selengkapnya, lihat dokumentasi berikut:

Mengintegrasikan dengan layanan Google Cloud

Untuk sebagian besar akun layanan, mengonfigurasi akses ke registry hanya memerlukan pemberian peran IAM yang sesuai. Google Cloud

Akun layanan default untuk layanan Google Cloud

LayananGoogle 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:

  • Google Cloud Layanan 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 Google Cloud project ID atau nomor project 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 alamat berikut:
  • Compute Engine: PROJECT-NUMBER-compute@developer.gserviceaccount.com
  • Cloud Build: PROJECT-NUMBER@cloudbuild.gserviceaccount.com
Cloud Run Agen layanan Cloud Run
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 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 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 mengautentikasi 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 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 tulis, cakupan akses penyimpanan read-only membatasi akun layanan instance untuk mendownload artefak hanya dari repositori mana pun dalam project yang sama.

Anda harus mengonfigurasi cakupan akses akun layanan jika:

  • Akun layanan VM perlu mengakses repositori di project lain.
  • Akun layanan VM perlu melakukan tindakan selain membaca artefak dari repositori. Hal ini biasanya menerapkan alat pihak ketiga pada VM yang perlu mengirim image atau menjalankan perintah gcloud Artifact Registry.

Untuk mengonfigurasi peran dan menetapkan cakupan akses:

  1. Di project dengan instance VM Anda, dapatkan nama akun layanan default Compute Engine. Alamat email akun layanan memiliki akhiran @developer.gserviceaccount.com.

  2. Di project dengan repositori, berikan izin agar akun layanan dapat mengakses repositori.

  3. Tetapkan cakupan akses dengan opsi --scopes.

    1. Hentikan instance VM. Lihat Menghentikan instance.

    2. 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 menarik image.
        • 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.

    3. 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:

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:

  1. Jika GKE berada di project yang berbeda dengan Artifact Registry, berikan izin yang diperlukan ke akun layanan.

  2. 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.

  3. Jika Anda tidak menggunakan GKE versi yang didukung, konfigurasikan imagePullSecrets.

Akun layanan yang disediakan pengguna

Jika ingin menggunakan akun layanan yang disediakan pengguna sebagai identitas untuk cluster, Anda harus:

  1. Berikan izin yang diperlukan ke akun layanan dari projectGoogle Cloud tempat Artifact Registry berjalan.

  2. Secara default, membuat cluster atau node pool 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 untuk menentukan otorisasi bagi VM Compute Engine. Untuk menarik image 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 node pool. 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 layananGoogle 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 menarik image.

    • 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, lihat dokumentasi untuk perintah gcloud container clusters create.

Mengonfigurasi imagePullSecret

Untuk mengonfigurasi imagePullSecret:

  1. Di project dengan GKE, temukan akun layanan default Compute Engine. Alamat email akun memiliki sufiks @developer.gserviceaccount.com.

  2. Download kunci akun layanan untuk akun layanan.

  3. Di project dengan repositori, pastikan Anda telah memberikan izin ke repositori.

  4. Di project dengan cluster Anda, buat secret imagePullSecret bernama artifact-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`.
  5. 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.

  6. Tambahkan rahasia 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 CloudUntuk mengetahui informasi selengkapnya tentang akun dan izinnya, lihat Akun layanan Artifact Registry.

Langkah berikutnya

Setelah Anda menyiapkan izin, pelajari lebih lanjut cara bekerja dengan artefak Anda.

Anda juga dapat membatasi download artefak dengan aturan download.