Mengelola akses ke gambar kustom


Agar pengguna dapat membuat, menghapus, menggunakan, atau membagikan gambar kustom, Anda harus memberi mereka peran Identity and Access Management (IAM) yang sesuai. Dokumen ini menjelaskan izin IAM yang diperlukan untuk membuat dan mengelola gambar kustom serta cara memberikannya kepada pengguna.

Untuk informasi umum tentang cara memberikan akses ke resource Compute Engine, lihat Mengelola akses ke resource Compute Engine. Untuk informasi tentang IAM, baca dokumentasi IAM.

Sebelum memulai

  • Baca dokumentasi IAM.
  • Baca tentang peran IAM Compute Engine, khususnya, peran Pengguna Image Compute (roles/compute.imageUser).
  • Jika Anda belum melakukannya, siapkan autentikasi. Autentikasi adalah proses yang digunakan untuk memverifikasi identitas Anda agar dapat mengakses Google Cloud layanan dan API. Untuk menjalankan kode atau contoh dari lingkungan pengembangan lokal, Anda dapat mengautentikasi ke Compute Engine dengan memilih salah satu opsi berikut:

    Select the tab for how you plan to use the samples on this page:

    Consolegcloud

    When you use the Google Cloud console to access Google Cloud services and APIs, you don't need to set up authentication.

    1. Install the Google Cloud CLI, then initialize it by running the following command:

      gcloud init
    2. Set a default region and zone.
    3. REST

      Untuk menggunakan contoh REST API di halaman ini dalam lingkungan pengembangan lokal, gunakan kredensial yang Anda berikan ke gcloud CLI.

        Install the Google Cloud CLI, then initialize it by running the following command:

        gcloud init

      Untuk informasi selengkapnya, lihat Mengautentikasi untuk menggunakan REST dalam Google Cloud dokumentasi autentikasi.

Peran yang diperlukan

Untuk mendapatkan izin yang diperlukan untuk mengelola akses ke image kustom, minta administrator untuk memberi Anda peran IAM berikut:

Untuk mengetahui informasi selengkapnya tentang cara memberikan peran, lihat Mengelola akses ke project, folder, dan organisasi.

Peran bawaan ini berisi izin yang diperlukan untuk mengelola akses ke image kustom. Untuk melihat izin yang benar-benar diperlukan, luaskan bagian Izin yang diperlukan:

Izin berikut diperlukan untuk mengelola akses ke gambar kustom:

  • Untuk memberi pengguna atau akun layanan izin yang diperlukan untuk membuat, bagikan gambar kustom:
    • resourcemanager.projects.getIamPolicy pada project
    • resourcemanager.projects.setIamPolicy pada project
  • Untuk memberi pengguna atau akun layanan izin yang diperlukan untuk menghapus image kustom:
    • resourcemanager.projects.getIamPolicy pada project
    • resourcemanager.projects.setIamPolicy pada project
    • compute.images.getIamPolicypada gambar
    • compute.images.setIamPolicy pada gambar
  • Untuk mencabut akses akun pengguna atau akun layanan ke image kustom:
    • resourcemanager.projects.getIamPolicy pada project
    • resourcemanager.projects.setIamPolicy pada project
  • Untuk membuat instance menggunakan image bersama:
    • compute.instances.create pada project
    • Untuk menggunakan image kustom guna membuat VM: compute.images.useReadOnly pada image
    • Untuk menggunakan snapshot guna membuat VM: compute.snapshots.useReadOnly pada snapshot
    • Untuk menggunakan template instance guna membuat VM: compute.instanceTemplates.useReadOnly di template instance
    • Untuk menetapkan jaringan lama ke VM: compute.networks.use di project
    • Untuk menentukan alamat IP statis untuk VM: compute.addresses.use pada project
    • Untuk menetapkan alamat IP eksternal ke VM saat menggunakan jaringan lama: compute.networks.useExternalIp di project
    • Untuk menentukan subnet bagi VM: compute.subnetworks.use di project atau di subnet yang dipilih
    • Untuk menetapkan alamat IP eksternal ke VM saat menggunakan jaringan VPC: compute.subnetworks.useExternalIp di project atau di subnet yang dipilih
    • Untuk menetapkan metadata instance VM untuk VM: compute.instances.setMetadata di project
    • Untuk menetapkan tag untuk VM: compute.instances.setTags di VM
    • Untuk menetapkan label untuk VM: compute.instances.setLabels di VM
    • Untuk menetapkan akun layanan yang akan digunakan VM: compute.instances.setServiceAccount di VM
    • Untuk membuat disk baru bagi VM: compute.disks.create pada project
    • Untuk memasang disk yang ada dalam mode hanya baca atau baca-tulis: compute.disks.use pada disk
    • Untuk memasang disk yang ada dalam mode hanya baca: compute.disks.useReadOnly pada disk

Anda mungkin juga bisa mendapatkan izin ini dengan peran khusus atau peran bawaan lainnya.

Batasan

Pada gambar, Anda tidak dapat memberikan peran ke jenis anggota khusus allUsers.

Memberikan izin untuk membuat gambar kustom

Anda dapat memberi pengguna kemampuan untuk membuat image kustom di organisasi atau project Anda.

Compute Engine menawarkan peran Compute Storage Admin (roles/compute.storageAdmin) yang telah ditetapkan dan dapat Anda tetapkan kepada pengguna sehingga mereka dapat membuat, menghapus, dan mengelola resource terkait penyimpanan, termasuk image, disk, dan snapshot. Jika memerlukan peran yang hanya mengizinkan pembuatan gambar, Anda harus membuat peran kustom. Dalam peran kustom Anda, sertakan izin berikut:

  • compute.images.create untuk membuat gambar baru
  • compute.images.list untuk mencantumkan image dalam project
  • compute.disks.use jika image dibuat dari disk
  • compute.disks.list jika pengguna perlu mencantumkan semua disk dalam project

Jika Anda memberi pengguna kemampuan untuk membuat image kustom di tingkat organisasi, pengguna tersebut dapat membuat image kustom untuk project apa pun dalam organisasi.

  1. Di konsol Google Cloud, buka halaman IAM untuk project atau organisasi.

    Buka IAM

  2. Untuk menambahkan anggota baru, klik Berikan akses.

  3. Di kolom New principals, masukkan alamat email identitas yang ingin Anda beri akses.

    Contoh:

    • Email Google Account: test-user@gmail.com
    • Grup Google: admins@googlegroups.com
    • Akun layanan: server@example.gserviceaccount.com
    • Domain Google Workspace: example.com
  4. Dalam daftar Select a role, pilih Compute Engine > Compute Storage Admin, atau pilih peran kustom jika Anda membuatnya.

  5. Opsional: Untuk mengontrol lebih lanjut akses pengguna ke resource Google Cloud , tambahkan binding peran kondisional.

  6. Simpan perubahan.

Untuk memberikan peran roles/compute.storageAdmin di tingkat organisasi, gunakan perintah gcloud organizations add-iam-policy-binding:

gcloud organizations add-iam-policy-binding ORGANIZATION_ID \
    --member='MEMBER' \
    --role='roles/compute.storageAdmin'

Untuk memberikan peran roles/compute.storageAdmin di level project, gunakan perintah gcloud projects add-iam-policy-binding:

gcloud projects add-iam-policy-binding PROJECT_ID \
    --member='MEMBER' \
    --role='roles/compute.storageAdmin'

Ganti kode berikut:

  • ORGANIZATION_ID atau PROJECT_ID: ID organisasi atau project ID—misalnya, my-organization-1 atau my-project-1
  • MEMBER: identitas valid yang ingin Anda berikan peran

    Contoh:

    • Email Google Account: user:user@gmail.com
    • Grup Google: group:admins@googlegroups.com
    • Akun layanan: serviceAccount:server@example.gserviceaccount.com
    • Domain Google Workspace: domain:example.com
  1. Baca kebijakan yang ada dengan metode getIamPolicy resource. Untuk project, gunakan metode projects.getIamPolicy.

    POST https://cloudresourcemanager.googleapis.com/v1/projects/PROJECT_ID:getIamPolicy
    

    Ganti PROJECT_ID dengan project ID, misalnya, my-project-1.

    Untuk organisasi, gunakan metode organizations.getIamPolicy.

    POST https://cloudresourcemanager.googleapis.com/v1/organizations/ORGANIZATION_ID:getIamPolicy
    

    Ganti ORGANIZATION_ID dengan ID organisasi, misalnya, 123456578920.

    Compute Engine menampilkan kebijakan saat ini dalam respons.

  2. Untuk menambahkan atau menghapus anggota dan peran terkait, edit kebijakan dengan editor teks. Gunakan format berikut untuk menambahkan anggota:

    • user:test-user@gmail.com
    • group:admins@example.com
    • serviceAccount:test123@example.domain.com
    • domain:example.domain.com

    Misalnya, untuk memberikan peran roles/compute.storageAdmin ke group:admins@example.com, tambahkan binding berikut ke kebijakan:

    {
     "members": [
       "group:admins@example.com"
     ],
     "role":"roles/compute.storageAdmin"
    }
    
  3. Tulis kebijakan yang telah diperbarui menggunakan metode setIamPolicy.

    Misalnya, untuk menetapkan kebijakan di level project, gunakan metode project.setIamPolicy. Dalam isi permintaan, berikan kebijakan IAM yang telah diperbarui dari langkah sebelumnya.

    POST https://cloudresourcemanager.googleapis.com/v1/projects/PROJECT_ID:setIamPolicy
    

    Ganti PROJECT_ID dengan project ID.

Memberikan izin untuk menghapus gambar kustom

Bergantung pada kebutuhan Anda, Anda dapat memberi pengguna izin untuk melakukan hal berikut:

  • Menghapus gambar tertentu
  • Menghapus gambar yang dimiliki oleh project tertentu
  • Menghapus gambar untuk project apa pun di organisasi

Memberikan izin di tingkat project memungkinkan pengguna menghapus semua gambar yang dimiliki oleh project tersebut. Memberikan izin di tingkat organisasi memungkinkan pengguna menghapus gambar apa pun yang dimiliki oleh organisasi tersebut, terlepas dari project-nya.

Compute Engine menawarkan peran Compute Storage Admin (roles/compute.storageAdmin) yang telah ditetapkan sebelumnya yang dapat Anda tetapkan kepada pengguna sehingga mereka dapat membuat, menghapus, dan mengelola resource terkait penyimpanan, termasuk image, disk, dan snapshot. Jika memerlukan peran yang hanya mengizinkan penghapusan gambar, Anda harus membuat peran kustom. Dalam peran khusus Anda, sertakan izin berikut:

  • compute.images.delete untuk menghapus gambar
  • compute.images.list jika pengguna perlu mencantumkan gambar dalam project atau organisasi
  • compute.images.get untuk mendapatkan gambar

Untuk memberikan izin menghapus gambar tertentu, lakukan hal berikut:

  1. Di Konsol Google Cloud, buka halaman Images.

    Buka Images

  2. Pilih gambar yang ingin Anda beri izin.

  3. Untuk meluaskan kolom izin, klik Tampilkan panel info.

  4. Untuk menambahkan satu atau beberapa anggota, klik Tambahkan akun utama.

  5. Di kolom New principals, masukkan alamat email identitas yang ingin Andaajak berbagi gambar.

    Contoh:

    • Email Google Account: test-user@gmail.com
    • Grup Google: admins@googlegroups.com
    • Akun layanan: server@example.gserviceaccount.com
    • Domain Google Workspace: example.com
  6. Dalam daftar Role, tahan kursor ke Compute Engine dan pilih Storage Admin, atau pilih peran kustom dari daftar Custom.

  7. Opsional: Untuk mengontrol lebih lanjut akses pengguna ke resource Google Cloud , tambahkan binding peran kondisional.

  8. Simpan perubahan.

Untuk memberikan izin menghapus gambar untuk project atau organisasi, lakukan hal berikut:

  1. Buka halaman IAM untuk project atau organisasi.

    Buka IAM

  2. Klik Berikan akses.

  3. Di kolom New principals, masukkan alamat email identitas yang ingin Anda beri akses. Contoh:

    • Email Google Account: test-user@gmail.com
    • Grup Google: admins@googlegroups.com
    • Akun layanan: server@example.gserviceaccount.com
    • Domain Google Workspace: example.com
  4. Dalam daftar Role, tahan kursor ke Compute Engine dan pilih Storage Admin, atau pilih peran kustom dari daftar Custom.

  5. Opsional: Untuk mengontrol lebih lanjut akses pengguna ke resource Google Cloud , tambahkan binding peran kondisional.

  6. Simpan perubahan.

Untuk memberikan izin menghapus image di tingkat organisasi, gunakan perintah gcloud organizations add-iam-policy-binding:

gcloud organizations add-iam-policy-binding ORGANIZATION_ID \
    --member='MEMBER' \
    --role='ROLE'

Untuk memberikan izin menghapus image di tingkat project, gunakan perintah gcloud projects add-iam-policy-binding:

gcloud projects add-iam-policy-binding PROJECT_ID \
    --member='MEMBER' \
    --role='ROLE'

Untuk memberikan izin guna menghapus image tertentu, gunakan perintah gcloud compute images add-iam-policy-binding:

gcloud compute images add-iam-policy-binding IMAGE_NAME \
    --member='MEMBER' \
    --role='ROLE'

Ganti kode berikut:

  • ORGANIZATION_ID atau PROJECT_ID atau IMAGE_NAME: ID organisasi numerik 12 digit, project ID, atau nama image—misalnya, 123456578920, my-project-1, atau my-custom-image
  • MEMBER: identitas valid yang ingin Anda berikan peran

    Contoh:

    • Email Google Account: user:user@gmail.com
    • Grup Google: group:admins@googlegroups.com
    • Akun layanan: serviceAccount:server@example.gserviceaccount.com
    • Domain Google Workspace: domain:example.com
  • ROLE: peran yang akan ditetapkan ke identitas ini—misalnya, peran roles/compute.storageAdmin, atau peran kustom seperti roles/customImageDeletionRole

  1. Baca kebijakan yang ada dengan metode getIamPolicy masing-masing resource. Untuk project, gunakan metode projects.getIamPolicy:

    POST https://cloudresourcemanager.googleapis.com/v1/projects/PROJECT_ID:getIamPolicy
    

    Ganti PROJECT_ID dengan project ID.

    Untuk organisasi, gunakan metode organizations.getIamPolicy:

    POST https://cloudresourcemanager.googleapis.com/v1/organizations/ORGANIZATION_ID:getIamPolicy
    

    Ganti ORGANIZATION_ID dengan ID organisasi numerik 12 digit.

    Untuk gambar tertentu, gunakan metode images.getIamPolicy:

    POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/images/IMAGE_NAME:getIamPolicy
    

    Ganti kode berikut:

    • PROJECT_ID: the project ID
    • IMAGE_NAME: nama image

    Compute Engine menampilkan kebijakan saat ini dalam respons.

  2. Untuk menambahkan atau menghapus anggota dan peran terkait, Anda dapat mengedit kebijakan dengan editor teks. Gunakan format berikut untuk menambahkan anggota:

    • user:test-user@gmail.com
    • group:admins@example.com
    • serviceAccount:test123@example.domain.com
    • domain:example.domain.com

    Misalnya, untuk memberikan peran roles/compute.storageAdmin ke user:test-email@example.com, tambahkan binding berikut ke kebijakan:

    {
     "members": [
       "user:test-email@example.com"
     ],
     "role":"roles/compute.storageAdmin"
    }
    
  3. Tulis kebijakan yang telah diperbarui menggunakan metode setIamPolicy.

    Misalnya, untuk menetapkan kebijakan di level project, gunakan metode project.setIamPolicy. Dalam isi permintaan, berikan kebijakan IAM yang telah diperbarui dari langkah sebelumnya.

    POST https://cloudresourcemanager.googleapis.com/v1/projects/PROJECT_ID:setIamPolicy
    

    Ganti PROJECT_ID dengan project ID.

Memberikan izin untuk membagikan gambar kustom dalam organisasi

Jika project Anda termasuk dalam organisasi, organisasi tersebut dapat memiliki beberapa project lain dengan tingkat akses yang bervariasi ke project lain. Saat membuat image kustom, Anda dapat membagikan image ini kepada pengguna lain dari project lain dalam organisasi.

Compute Engine menawarkan peran IAM bawaan berikut yang dapat Anda gunakan untuk pengelolaan image:

  • Compute Image User (roles/compute.imageUser): izin untuk mencantumkan, membaca, dan menggunakan gambar dalam permintaan Anda, tanpa memiliki izin lain pada gambar
  • Compute Storage Admin (roles/compute.storageAdmin): izin untuk membuat, memodifikasi, dan menghapus disk, image, dan snapshot

Atau, Anda juga dapat membuat peran IAM kustom sendiri.

Sebagai praktik terbaik, sebaiknya simpan semua gambar kustom Anda dalam satu project yang dikhususkan untuk menghosting gambar ini. Praktik ini meningkatkan pengelolaan gambar tersebut, dan memungkinkan Anda memberikan akses kepada tim tertentu hanya untuk gambar yang mereka butuhkan. Anda juga dapat memberikan akses tim ke seluruh project image, tetapi karena akses tim ke seluruh project image melanggar prinsip hak istimewa terendah, sebaiknya jangan melakukannya.

Contoh di bawah menunjukkan cara menambahkan grup agar pengguna grup tersebut memiliki akses ke gambar.

  1. Di Konsol Google Cloud, buka halaman Images.

    Buka Images

  2. Pilih gambar yang ingin Anda bagikan kepada pengguna lain.

  3. Untuk meluaskan kolom izin, klik Tampilkan panel info.

  4. Untuk menambahkan satu atau beberapa anggota, klik Tambahkan akun utama.

  5. Di kolom New principals, masukkan alamat email identitas yang ingin Andaajak berbagi gambar.

    Contoh:

    • Email Google Account: test-user@gmail.com
    • Grup Google: admins@googlegroups.com
    • Akun layanan: server@example.gserviceaccount.com
    • Domain Google Workspace: example.com
  6. Di daftar Role, tahan kursor ke Compute Engine dan pilih Image User atau Storage Admin, atau pilih peran kustom.

  7. Opsional: Untuk mengontrol lebih lanjut akses pengguna ke resource Google Cloud, tambahkan binding peran bersyarat.

  8. Simpan perubahan.

Agar pengguna dapat meluncurkan image kustom bersama dari konsol Google Cloud, berikan peran IAM Pelihat (roles/viewer) kepada pengguna untuk project image. Memberikan peran ini membantu memastikan bahwa gambar yang dibagikan muncul dalam daftar pilihan gambar.

  1. Di konsol Google Cloud, buka halaman IAM.

    Buka IAM

  2. Klik Berikan akses.

  3. Di kolom New principals, masukkan alamat email identitas yang ingin Andaajak berbagi gambar. Contoh:

    • Email Google Account: test-user@gmail.com
    • Grup Google: admins@googlegroups.com
    • Akun layanan: server@example.gserviceaccount.com
    • Domain Google Workspace: example.com
  4. Di daftar Peran, tahan kursor ke Project dan pilih Pelihat.

  5. Opsional: Untuk mengontrol lebih lanjut akses pengguna ke resource Google Cloud, tambahkan binding peran bersyarat.

  6. Simpan perubahan.

Untuk memperbarui kebijakan IAM untuk image tertentu, gunakan perintah gcloud compute images add-iam-policy-binding:

gcloud compute images add-iam-policy-binding IMAGE_NAME \
    --member='MEMBER' \
    --role='ROLE'

Ganti kode berikut:

  • IMAGE_NAME: nama gambar—misalnya, custom-centos-8
  • MEMBER: identitas valid yang ingin Anda berikan peran

    Contoh:

    • user:test-user@gmail.com
    • group:admins@example.com
    • serviceAccount:test123@example.domain.com
    • domain:example.domain.com
  • ROLE: peran yang akan ditetapkan ke identitas ini, seperti roles/compute.imageUser, roles/compute.storageAdmin, atau peran kustom

Atau, agar pengguna dapat melihat gambar bersama ini dalam permintaan images.list mereka, beri pengguna peran IAM Pelihat (roles/viewer) untuk project gambar menggunakan perintah gcloud projects add-iam-policy-binding. Jika tidak memerlukan pengguna untuk dapat melihat daftar gambar yang dibagikan, Anda dapat melewati langkah ini.

gcloud projects add-iam-policy-binding PROJECT_ID \
    --member='MEMBER' \
    --role='roles/viewer'
  1. Baca kebijakan yang ada dengan metode getIamPolicy resource. Misalnya, untuk mendapatkan kebijakan pada image tertentu, gunakan metode images.getIamPolicy:

    POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/images/IMAGE_NAME:getIamPolicy
    

    Ganti kode berikut:

    • PROJECT_ID: project ID project tempat image ini berada
    • IMAGE_NAME: nama image

    Compute Engine menampilkan kebijakan saat ini dalam respons.

  2. Untuk menambahkan atau menghapus anggota dan peran terkait, edit kebijakan dengan editor teks. Gunakan format berikut untuk menambahkan anggota:

    • user:test-user@gmail.com
    • group:admins@example.com
    • serviceAccount:test123@example.domain.com
    • domain:example.domain.com

    Misalnya, untuk memberikan roles/compute.imageUser ke test-email@example.com, tambahkan binding berikut ke kebijakan:

    {
     "members": [
       "user:test-email@example.com"
     ],
     "role":"roles/compute.imageUser"
    }
    
  3. Tulis kebijakan yang telah diperbarui menggunakan metode setIamPolicy. Misalnya, untuk menetapkan kebijakan pada image tertentu, gunakan metode project.setIamPolicy. Dalam isi permintaan, berikan kebijakan IAM yang telah diperbarui dari langkah sebelumnya.

    POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/images/IMAGE_NAME:setIamPolicy
    

    Ganti kode berikut:

    • PROJECT_ID: project ID project tempat image ini berada
    • IMAGE_NAME: nama image

Atau, agar pengguna dapat melihat gambar bersama ini dalam permintaan images.list mereka, beri pengguna peran IAM Pelihat (roles/viewer) untuk project gambar menggunakan metode projects.setIamPolicy. Jika tidak ingin pengguna dapat melihat daftar gambar yang dibagikan, Anda dapat melewati langkah ini.

POST https://cloudresourcemanager.googleapis.com/v1/projects/PROJECT_ID:setIamPolicy

Memberikan izin untuk membagikan gambar kustom antar-organisasi

Membuat katalog gambar kustom dapat berguna untuk membagikan gambar kepada partner, pengguna, atau kontraktor yang berada di luar organisasi Anda. Untuk membagikan gambar kepada pengguna di luar organisasi, tambahkan mereka sebagai Pengguna Gambar ke project Anda:

  1. Di Konsol Google Cloud, buka halaman Images.

    Buka Images

  2. Pilih gambar yang ingin Anda bagikan kepada pengguna lain.

  3. Untuk meluaskan kolom izin, klik Tampilkan panel info.

  4. Untuk menambahkan satu atau beberapa anggota, klik Tambahkan akun utama.

  5. Di kolom New principals, masukkan alamat email grup yang ingin Andaajak berbagi gambar. Contoh, admins@example.com.

  6. Dalam daftar Role, tahan kursor ke Compute Engine dan pilih Compute Image User.

  7. Opsional: Untuk mengontrol lebih lanjut akses pengguna ke resource Google Cloud, tambahkan binding peran bersyarat.

  8. Simpan perubahan.

Agar pengguna dapat meluncurkan image kustom bersama dari konsol Google Cloud, berikan peran IAM Pelihat (roles/viewer) kepada pengguna untuk project image. Memberikan peran ini membantu memastikan bahwa gambar yang dibagikan muncul dalam daftar pemilihan gambar.

  1. Di konsol Google Cloud, buka halaman IAM.

    Buka IAM

  2. Klik Berikan akses.

  3. Di kolom New principals, masukkan alamat email identitas yang ingin Andaajak berbagi gambar. Contoh, admins@example.com.

  4. Di daftar Peran, tahan kursor ke Project dan pilih Pelihat.

  5. Opsional: Untuk mengontrol lebih lanjut akses pengguna ke resource Google Cloud, tambahkan binding peran bersyarat.

  6. Simpan perubahan.

Untuk memberikan peran roles/compute.imageUser kepada pengguna, gunakan perintah gcloud compute images add-iam-policy-binding:

gcloud compute images add-iam-policy-binding IMAGE_NAME \
    --member='MEMBER' \
    --role='roles/compute.imageUser'

Ganti kode berikut:

  • IMAGE_NAME: nama image—misalnya, custom-centos-8
  • MEMBER: identitas valid yang ingin Anda berikan peran—misalnya, group:admins@example.com

Atau, agar pengguna dapat melihat gambar bersama ini dalam permintaan images.list mereka, beri pengguna peran IAM Pelihat (roles/viewer) untuk project gambar menggunakan perintah gcloud projects add-iam-policy-binding. Jika tidak ingin pengguna melihat daftar gambar yang dibagikan, Anda dapat melewati langkah ini.

gcloud projects add-iam-policy-binding PROJECT_ID \
    --member='MEMBER' \
    --role='roles/viewer'
  1. Baca kebijakan yang ada dengan metode getIamPolicy resource. Misalnya, untuk mendapatkan kebijakan pada image tertentu, gunakan metode images.getIamPolicy:

    POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/images/IMAGE_NAME:getIamPolicy
    

    Ganti kode berikut:

    • PROJECT_ID: project ID project tempat image ini berada
    • IMAGE_NAME: nama image

    Compute Engine menampilkan kebijakan saat ini dalam respons.

  2. Untuk menambahkan atau menghapus anggota dan peran terkait, Anda dapat mengedit kebijakan dengan editor teks. Gunakan format berikut untuk menambahkan anggota:

    • user:test-user@gmail.com
    • group:admins@example.com
    • serviceAccount:test123@example.domain.com
    • domain:example.domain.com

    Misalnya, untuk memberikan roles/compute.imageUser ke test-user@example.com, tambahkan binding berikut ke kebijakan:

    {
      "members": [
        "user:test-user@example.com"
      ],
      "role":"roles/compute.imageUser"
    }
    
  3. Tulis kebijakan yang telah diperbarui menggunakan metode setIamPolicy. Misalnya, untuk menetapkan kebijakan pada image tertentu, gunakan metode images.setIamPolicy. Dalam isi permintaan, berikan kebijakan IAM yang telah diperbarui dari langkah sebelumnya.

    POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/images/IMAGE_NAME:setIamPolicy
    

    Ganti kode berikut:

    • PROJECT_ID: project ID project tempat image ini berada
    • IMAGE_NAME: nama image

    Atau, agar pengguna dapat melihat gambar bersama ini dalam permintaan images.list mereka, beri pengguna peran IAM Pelihat (roles/viewer) untuk project gambar menggunakan metode projects.setIamPolicy. Jika tidak ingin pengguna melihat daftar gambar yang dibagikan, Anda dapat melewati langkah ini.

    POST https://cloudresourcemanager.googleapis.com/v1/projects/PROJECT_ID:setIamPolicy
    

Memberikan izin untuk membagikan gambar kustom secara publik

Anda dapat membagikan image kustom kepada semua pengguna Compute Engine yang diautentikasi, terlepas dari apakah mereka merupakan bagian dari organisasi atau project Anda.

Anda hanya dapat membagikan resource, seperti gambar, kepada semua pengguna yang diautentikasi; Anda tidak dapat membagikan project atau organisasi kepada semua pengguna yang diautentikasi. Pembatasan ini, dan hierarki resource, membantu mencegah organisasi secara tidak sengaja membagikan seluruh project mereka kepada semua pengguna Compute Engine yang diautentikasi.

Contoh berikut menunjukkan cara memberikan peran Compute Image User (roles/compute.imageUser) (Pengguna Image Compute) kepada semua pengguna Compute Engine yang diautentikasi ke image kustom.

Untuk membuat image bersifat publik, gunakan perintah gcloud compute images add-iam-policy-binding:

gcloud compute images add-iam-policy-binding IMAGE_NAME \
    --member='allAuthenticatedUsers' \
    --role='roles/compute.imageUser'

Ganti IMAGE_NAME dengan nama resource—misalnya, my_image.

  1. Baca kebijakan yang ada dengan metode getIamPolicy. Misalnya, untuk mendapatkan kebijakan pada image tertentu, gunakan metode images.getIamPolicy:

    POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/images/IMAGE_NAME:getIamPolicy
    

    Ganti kode berikut:

    • PROJECT_ID: project ID project tempat image ini berada
    • IMAGE_NAME: nama image

    Compute Engine menampilkan kebijakan saat ini dalam respons.

  2. Untuk menambahkan atau menghapus anggota dan peran terkait, edit kebijakan dengan editor teks:

    {
     "members": [
       "allAuthenticatedUsers"
     ],
     "role":"roles/compute.imageUser"
    }
    
  3. Tulis kebijakan yang telah diperbarui menggunakan metode setIamPolicy. Misalnya, untuk menetapkan kebijakan pada image tertentu, gunakan metode images.setIamPolicy. Dalam isi permintaan, berikan kebijakan IAM yang telah diperbarui dari langkah sebelumnya.

    POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/images/IMAGE_NAME:setIamPolicy
    

    Ganti kode berikut:

    • PROJECT_ID: project ID project tempat image ini berada
    • IMAGE_NAME: nama image

Memberikan akses grup instance terkelola ke image

Compute Engine memungkinkan Anda membuat grup instance, baik sebagai grup instance terkelola maupun tidak terkelola. Jika Anda membuat grup instance terkelola (MIG), Compute Engine akan menggunakan Agen Layanan Google API untuk memanggil Compute Engine API dan melakukan tindakan yang terkait dengan grup, seperti membuat ulang instance yang tidak sehat dan mengupdate instance.

Jika Anda ingin membuat MIG menggunakan image dari project lain, berikan peran Compute Image User (roles/compute.imageUser) ke akun layanan API milik project yang membuat MIG. Contoh:

  1. Project A ingin membuat MIG menggunakan image milik Project B.
  2. Project B memberikan peran Compute Image User kepada akun layanan Project A.
  3. Project A kini dapat menggunakan image dari Project B untuk membuat MIG.

Setelah memberikan peran Pengguna Gambar Compute, Anda dapat mengakses gambar dari project lain menggunakan konsol atau URL gambar saat membuat template instance untuk grup terkelola.

Mendapatkan alamat email akun layanan

  1. Di konsol Google Cloud, buka halaman IAM project yang akun layanannya ingin Anda beri akses.

    Buka IAM

  2. Jika diminta, pilih project Anda dari daftar.

  3. Cari Agen Layanan API Google, yang memiliki alamat email dalam format berikut:

    PROJECT_NUMBER@cloudservices.gserviceaccount.com
    

Setelah mengambil alamat email akun layanan, Anda dapat membuka salah satu bagian berikut:

Memberi MIG akses ke semua image dalam project

Setelah memiliki alamat email akun layanan, Anda dapat menambahkan alamat tersebut ke project lain dan memberinya peran Compute Image User (roles/compute.imageUser).

  1. Di konsol Google Cloud, buka halaman IAM project gambar.

    Buka IAM

  2. Untuk menambahkan anggota baru, klik Berikan akses.

  3. Di kolom New principals, tambahkan alamat email akun layanan.

  4. Dalam daftar Role, tahan kursor ke Compute dan pilih Compute Image User.

  5. Opsional: Untuk mengontrol lebih lanjut akses pengguna ke resource Google Cloud, tambahkan binding peran bersyarat.

  6. Klik Simpan.

  7. Beralih kembali ke project akun layanan.

Sekarang Anda dapat membuat template instance berdasarkan image dari project image dan membuat MIG berdasarkan template instance.

Tambahkan akun layanan dari project image menggunakan perintah gcloud projects add-iam-policy-binding:

gcloud projects add-iam-policy-binding PROJECT_ID \
    --member='serviceAccount:SERVICE_ACCOUNT_EMAIL' --role='roles/compute.imageUser'

Ganti kode berikut:

  • PROJECT_ID: ID project yang berisi gambar yang ingin Anda bagikan
  • SERVICE_ACCOUNT_EMAIL: email akun layanan

Sekarang Anda dapat membuat template instance berdasarkan image dari project image dan membuat MIG berdasarkan template instance.

  1. Dapatkan kebijakan IAM project image, dengan menggunakan metode projects.getIamPolicy:

     POST https://cloudresourcemanager.googleapis.com/v1/projects/PROJECT_ID:getIamPolicy
     

    Ganti PROJECT_ID dengan project ID project gambar.

  2. Untuk memberikan peran roles/compute.imageUser ke akun layanan, edit kebijakan dengan editor teks:

    {
      "bindings": [
         {
          "role": "roles/compute.imageUser",
          "members": [
            "serviceAccount:SERVICE_ACCOUNT_EMAIL"
          ]
        }
      ]
    }
    

    Ganti SERVICE_ACCOUNT_EMAIL dengan email akun layanan.

  3. Tulis kebijakan yang telah diperbarui menggunakan projects.setIamPolicy. Dalam isi permintaan, berikan kebijakan IAM yang telah diperbarui dari langkah sebelumnya.

    POST https://cloudresourcemanager.googleapis.com/v1/projects/PROJECT_ID:setIamPolicy
    

    Ganti PROJECT_ID dengan ID produk project gambar.

    Sekarang Anda dapat membuat template instance berdasarkan image dari project image dan membuat MIG berdasarkan template instance.

Memberi MIG akses ke image tertentu dalam project

Setelah memiliki alamat email akun layanan, Anda dapat menambahkan alamat tersebut ke project lain dan memberikan peran Compute Image User (roles/compute.imageUser) untuk image tertentu.

  1. Di konsol Google Cloud, buka halaman Images dari project image.

    Buka Images

  2. Centang kotak di samping gambar yang ingin Anda bagikan.

  3. Untuk meluaskan kolom izin, klik Tampilkan panel info.

  4. Di panel Permissions, klik Add principal.

  5. Di kolom New principals, masukkan email akun layanan yang ingin Anda ajak berbagi gambar. Contoh, test123@example.domain.com.

  6. Dalam daftar Role, pilih Compute, lalu pilih Compute Image User.

  7. Opsional: Untuk mengontrol lebih lanjut akses pengguna ke resource Google Cloud , tambahkan binding peran kondisional.

  8. Klik Simpan.

  9. Beralih kembali ke project akun layanan.

Sekarang Anda dapat membuat template instance berdasarkan image dari project image dan membuat MIG berdasarkan template instance.

Untuk memberikan akses akun layanan ke image tertentu, gunakan perintah gcloud compute images add-iam-policy-binding:

gcloud compute images add-iam-policy-binding IMAGE_NAME \
    --member='serviceAccount:SERVICE_ACCOUNT_EMAIL' \
    --role='roles/compute.imageUser'

Ganti kode berikut:

  • IMAGE_NAME: nama gambar yang ingin Anda bagikan
  • SERVICE_ACCOUNT_EMAIL: email akun layanan

Sekarang Anda dapat membuat template instance berdasarkan image dari project image dan membuat MIG berdasarkan template instance.

  1. Dapatkan kebijakan IAM image menggunakan metode images.getIamPolicy:

    POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/images/IMAGE_NAME:getIamPolicy
    

    Ganti kode berikut:

    • PROJECT_ID: project ID project gambar
    • IMAGE_NAME: nama gambar yang ingin Anda bagikan
  2. Untuk memberikan peran roles/compute.imageUser ke akun layanan, edit kebijakan dengan editor teks:

    {
      "bindings": [
         {
          "role": "roles/compute.imageUser",
          "members": [
            "serviceAccount:SERVICE_ACCOUNT_EMAIL"
          ]
        }
      ]
    }
    

    Ganti SERVICE_ACCOUNT_EMAIL dengan email akun layanan.

  3. Tulis kebijakan yang telah diperbarui menggunakan metode images.setIamPolicy. Dalam isi permintaan, berikan kebijakan IAM yang telah diperbarui dari langkah sebelumnya.

    POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/images/IMAGE_NAME:setIamPolicy
    

    Ganti kode berikut:

    • PROJECT_ID: project ID project gambar
    • IMAGE_NAME: nama gambar yang ingin Anda bagikan

    Sekarang Anda dapat membuat template instance berdasarkan image dari project image dan membuat MIG berdasarkan template instance.

Mengontrol penggunaan gambar dan snapshot yang dibagikan

Setelah membagikan gambar kepada pengguna lain, Anda dapat mengontrol tempat pengguna tersebut menggunakan resource tersebut dalam organisasi Anda. Tetapkan batasan constraints/compute.storageResourceUseRestrictions untuk menentukan project tempat pengguna diizinkan menggunakan resource penyimpanan Anda.

Anda harus memiliki izin untuk mengubah kebijakan organisasi guna menetapkan batasan ini. Misalnya, peran resourcemanager.organizationAdmin memiliki izin untuk menetapkan batasan ini.

  1. Temukan ID organisasi untuk organisasi Anda menggunakan perintah gcloud organization list:

    gcloud organizations list
    
  2. Dapatkan setelan kebijakan yang ada untuk organisasi Anda menggunakan perintah gcloud resource-manager org-policies describe:

    gcloud resource-manager org-policies describe \
        compute.storageResourceUseRestrictions \
        --organization ORGANIZATION_ID > org-policy.yaml
    

    Ganti ORGANIZATION_ID dengan ID organisasi numerik 12 digit Anda.

  3. Buka file org-policy.yaml di editor teks dan ubah batasan compute.storageResourceUseRestrictions. Tambahkan batasan yang Anda butuhkan, atau hapus batasan yang tidak lagi Anda perlukan. Setelah selesai mengedit file, simpan perubahan. Misalnya, Anda dapat menetapkan entri batasan berikut dalam file kebijakan:

    constraint: compute.storageResourceUseRestrictions
    listPolicy:
      allowedValues:
        - under:organization/organization-id
    
  4. Terapkan file org-policy.yaml ke organisasi Anda menggunakan perintah gcloud resource-manager org-policies set-policy:

    gcloud resource-manager org-policies set-policy \
       --organization=ORGANIZATION_ID org-policy.yaml
    

    Ganti ORGANIZATION_ID dengan ID organisasi numerik 12 digit Anda.

Setelah selesai mengonfigurasi batasan dalam kebijakan organisasi, uji batasan tersebut untuk memastikan batasan tersebut membuat pembatasan yang Anda inginkan.

Menggunakan gambar dari project lain

Jika seseorang memberi Anda akses ke satu atau beberapa gambar dalam project lain, Anda dapat mengakses gambar ini dalam project dengan menentukan project gambar dalam permintaan Anda.

Misalnya, untuk membuat instance menggunakan image bersama dari project lain, ikuti langkah-langkah yang tercantum di Membuat instance dari image bersama.

Anda juga dapat membuat volume disk booting dari image di project lain. Untuk mengetahui informasi tentang cara membuat disk booting dari image, lihat Membuat persistent disk booting mandiri.

Mencabut akses ke gambar bersama

Setelah pengguna tidak lagi memerlukan akses ke resource Compute Engine Anda, cabut aksesnya menggunakan konsol Google Cloud, Google Cloud CLI, atau REST.

  1. Di konsol Google Cloud, buka halaman Images dari project image.

    Buka Images

  2. Centang kotak di samping gambar yang ingin Anda perbarui.

  3. Untuk meluaskan kolom izin, klik Tampilkan panel info.

  4. Luaskan peran yang penggunanya ingin Anda hapus.

  5. Untuk menghapus pengguna dari peran tersebut, klik Hapus.

Untuk menghapus pengguna dari peran pada image, gunakan perintah gcloud compute images remove-iam-policy-binding dengan flag --member dan --role:

gcloud compute images remove-iam-policy-binding IMAGE_NAME \
    --member='MEMBER' \
    --role='ROLE'

Ganti kode berikut:

  • IMAGE_NAME: nama image—misalnya, my_image
  • MEMBER: identitas yang ingin Anda hapus

    Harus dalam format user|group|serviceAccount:email atau domain:domain. Contoh:

    • user:test-user@gmail.com
    • group:admins@example.com
    • serviceAccount:test123@example.domain.com
    • domain:example.domain.com
  • ROLE: peran yang identitasnya ingin Anda hapus

Jika Anda mencabut akses ke resource yang dalam versi beta, gunakan perintah gcloud beta compute.

  1. Baca kebijakan yang ada dengan metode images.getIamPolicy:

    POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/images/IMAGE_NAME:getIamPolicy
    

    Ganti kode berikut:

    • PROJECT_ID: project ID yang dimiliki gambar ini
    • IMAGE_NAME: nama image

    Compute Engine menampilkan kebijakan saat ini dalam respons.

  2. Untuk menghapus anggota dan peran terkait, edit kebijakan dengan editor teks.

  3. Tulis kebijakan yang telah diperbarui menggunakan metode images.setIamPolicy. Dalam isi permintaan, berikan kebijakan IAM yang telah diperbarui dari langkah sebelumnya.

    POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/global/images/IMAGE_NAME:setIamPolicy
    

    Ganti kode berikut:

    • PROJECT_ID: project ID yang dimiliki gambar ini
    • IMAGE_NAME: nama image

Langkah berikutnya