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

  • Jika Anda belum melakukannya, siapkan autentikasi. Autentikasi adalah proses verifikasi identitas Anda untuk mengakses layanan dan API Google Cloud. 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:

    Console

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

    gcloud

    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 Melakukan autentikasi untuk menggunakan REST dalam dokumentasi autentikasi Google Cloud.

      Peran yang diperlukan

      Untuk mendapatkan izin yang Anda perlukan 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 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 VM 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 pada 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.

      Konsol

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

      gcloud

      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

      REST

      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

      Konsol

      Untuk memberikan izin menghapus gambar tertentu, lakukan langkah-langkah 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 Anda.

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

      gcloud

      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

      REST

      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.

      Konsol

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

      8. Simpan perubahan Anda.

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

      6. Simpan perubahan Anda.

      gcloud

      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'
      

      REST

      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:

      Konsol

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

      8. Simpan perubahan Anda.

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

      6. Simpan perubahan Anda.

      gcloud

      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, berikan peran IAM Viewer (roles/viewer) kepada pengguna 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'
      

      REST

      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.

      gcloud

      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.

      REST

      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 ke image ke grup instance terkelola

      Compute Engine memungkinkan Anda membuat grup VM, 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 VM yang tidak sehat dan mengupdate VM.

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

      Konsol

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

      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.

      gcloud

      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.

      REST

      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.

      Konsol

      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.

      gcloud

      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.

      REST

      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 VM menggunakan image bersama dari project lain, ikuti langkah-langkah berikut:

      Konsol

      1. Di konsol Google Cloud, buka halaman Create an instance.

        Buka Buat instance

      2. Tentukan Name untuk VM Anda. Untuk informasi selengkapnya, lihat Konvensi penamaan resource.
      3. Opsional: Ubah Zone untuk VM ini. Jika Anda memilih Any, Google akan otomatis memilih zona untuk Anda berdasarkan jenis dan ketersediaan mesin.
      4. Pilih Machine configuration untuk VM Anda.
      5. Di bagian Boot disk, klik Change untuk mengonfigurasi boot disk Anda, lalu lakukan hal berikut ini:
        1. Pilih tab Custom Images.
        2. Untuk memilih project image, klik Select a project, lalu lakukan tindakan berikut ini:
          1. Pilih project yang berisi image tersebut.
          2. Klik Open.
        3. Di dalam daftar Image, klik image yang ingin Anda impor.
        4. Pilih jenis dan ukuran boot disk Anda.
        5. Untuk mengonfirmasi opsi boot disk, klik Select.
      6. Untuk mengizinkan traffic HTTP atau HTTPS ke VM, di bagian Firewall, pilih Allow HTTP traffic atau Allow HTTPS traffic.

        Konsol Google Cloud menambahkan tag jaringan ke VM Anda dan membuat aturan firewall masuk yang sesuai, yang mengizinkan semua traffic masuk di tcp:80 (HTTP) atau tcp:443 (HTTPS). Tag jaringan mengaitkan aturan firewall dengan VM. Untuk informasi selengkapnya, lihat Ringkasan aturan firewall dalam dokumentasi Cloud Next Generation Firewall.

      7. Untuk memulai dan membuat VM, klik Create.

      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. Buat VM menggunakan gcloud compute instances create command, dan gunakan tanda --image dan --image-project untuk menentukan nama image serta project tempat image tersebut berada:

        gcloud compute instances create VM_NAME \
                --image=IMAGE \
                --image-project=IMAGE_PROJECT
            

        Ganti kode berikut:

        • VM_NAME: name untuk VM yang baru
        • IMAGE: nama image
        • IMAGE_PROJECT: project tempat image berada

        Jika perintah ini berhasil, gcloud akan merespons dengan properti VM yang baru:

            Created [https://compute.googleapis.com/compute/v1/projects/myproject/zones/us-central1-b/instances/example-instance].
            NAME                 ZONE           MACHINE_TYPE   PREEMPTIBLE  INTERNAL_IP  EXTERNAL_IP    STATUS
            example-instance     us-central1-b  e2-standard-2               10.240.0.4   104.198.53.60  RUNNING

      Terraform

      Proses pembuatan VM dengan image yang dibagikan di Terraform sama seperti proses pembuatan VM dengan image yang tersedia untuk publik.

      1. Di Konsol Google Cloud, buka halaman VM instance.

        Buka Instance VM

      2. Klik Create instance.
      3. Tentukan parameter yang Anda inginkan.
      4. Di bagian atas atau bawah halaman, klik Kode yang setara, lalu klik tab Terraform untuk melihat kode Terraform.

      REST

      Proses untuk membuat VM dengan image bersama di dalam API tersebut sama seperti jika Anda membuat VM dengan image yang tersedia untuk publik. Untuk membuat VM dari image bersama, gunakan metode instances.insert.

      POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances
      
      {
         "machineType":"zones/MACHINE_TYPE_ZONE/machineTypes/MACHINE_TYPE",
         "name":"VM_NAME",
         
         "disks":[
            {
               "initializeParams":{
                  "sourceImage":"projects/IMAGE_PROJECT/global/images/IMAGE"
               },
               "boot":true
            }
         ],
         
         
         "networkInterfaces":[
            {
               "network":"global/networks/NETWORK_NAME"
            }
         ],
         
        
         "shieldedInstanceConfig":{
            "enableSecureBoot":"ENABLE_SECURE_BOOT"
         }
      }
      

      Ganti kode berikut:

      • PROJECT_ID: ID project tempat VM akan dibuat
      • ZONE: zone tempat VM akan dibuat
      • MACHINE_TYPE_ZONE: zona yang berisi jenis mesin yang akan digunakan untuk VM baru
      • MACHINE_TYPE: jenis mesin, telah ditetapkan atau kustom, untuk VM baru
      • VM_NAME: nama VM yang baru
      • IMAGE_PROJECT: nama project yang berisi image yang dibagikan
      • IMAGE atau IMAGE_FAMILY: tentukan salah satu dari hal berikut ini:
        • IMAGE: nama image yang dibagikan. Misalnya, "sourceImage": "projects/finance-project-1234/global/images/finance-debian-image-v2".
        • IMAGE_FAMILY: jika image yang dibagikan dibuat sebagai bagian dari kelompok image kustom, tentukan kelompok image kustom tersebut.

          Ini akan membuat VM dari OS image dan versi OS terbaru yang masih digunakan dalam kelompok image kustom Anda. Misalnya, jika Anda menentukan "sourceImage": "projects/finance-project-1234/global/images/family/finance-debian-family", Compute Engine akan membuat VM dari versi terbaru OS image di dalam kelompok image finance-debian-family kustom.

      • NETWORK_NAME: jaringan VPC yang ingin Anda gunakan untuk VM. Anda dapat menentukan default untuk menggunakan jaringan default Anda.
      • ENABLE_SECURE_BOOT: Jika Anda memilih image yang mendukung fitur Shielded VM, Compute Engine, secara default, akan mengaktifkan virtual trusted platform module (vTPM) dan integrity monitoring. Compute Engine tidak mengaktifkan Booting Aman secara default.

        Jika Anda menentukan true untuk enableSecureBoot, Compute Engine akan membuat VM dengan ketiga fitur Shielded VM diaktifkan. Setelah Compute Engine memulai VM Anda, untuk mengubah opsi Shielded VM, Anda harus menghentikan VM tersebut.

      Anda juga dapat membuat persistent disk booting dari image di project lain. Untuk 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.

      Konsol

      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.

      gcloud

      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.

      REST

      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 selanjutnya