Mengelola akses ke resource Compute Engine


Halaman ini menjelaskan cara menerapkan prinsip hak istimewa terendah dengan memberikan akses ke resource Compute Engine tertentu, bukan memberikan akses ke resource induk seperti project, folder, atau organisasi.

Anda dapat memberikan akses ke resource dengan menetapkan kebijakan Identity and Access Management (IAM) pada resource tersebut. Kebijakan ini akan mengikat satu atau beberapa anggota, seperti pengguna atau akun layanan, ke satu atau beberapa peran. Setiap peran berisi daftar izin yang memungkinkan anggota berinteraksi dengan resource.

Jika Anda memberikan akses ke resource induk (misalnya, ke sebuah project), Anda secara implisit memberikan akses ke semua resource turunannya (misalnya, ke semua VM di project tersebut). Untuk membatasi akses ke resource, tetapkan kebijakan IAM pada resource level yang lebih rendah jika memungkinkan, bukan di level project atau di atasnya.

Untuk mengetahui informasi umum tentang cara memberikan, mengubah, dan mencabut akses ke resource yang tidak terkait dengan Compute Engine, misalnya untuk memberikan akses ke project Google Cloud, lihat dokumentasi IAM untuk bagian Memberikan , mengubah, dan mencabut akses ke resource.

Sebelum memulai

  • Tinjau Ringkasan IAM.
  • Baca ringkasan kontrol akses Compute Engine.
  • Pelajari peran IAM untuk Compute Engine .
  • 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 diperlukan guna mengelola akses ke resource Compute Engine, minta administrator untuk memberi Anda peran IAM Compute Admin (roles/compute.admin) pada resource. 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 resource Compute Engine. Untuk melihat izin yang benar-benar diperlukan, luaskan bagian Izin yang diperlukan:

Izin yang diperlukan

Izin berikut diperlukan untuk mengelola akses ke resource Compute Engine:

  • Untuk memberikan atau mencabut akses ke resource:
    • compute.projects.get dalam project
    • compute.RESOURCE_TYPE.get pada resource
    • compute.RESOURCE_TYPE.getIamPolicy pada resource
    • compute.RESOURCE_TYPE.setIamPolicy pada resource
  • Untuk menguji izin pemanggil: compute.RESOURCE_TYPE.getIamPolicy pada resource

    Ganti RESOURCE_TYPE dengan resource yang aksesnya ingin Anda kelola. Misalnya instances, instanceTemplates, atau images.

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

Resource yang didukung

Untuk melihat daftar resource Compute Engine yang mendukung kontrol akses tingkat resource, lihat Jenis resource yang menerima kebijakan IAM dan filter untuk Compute Engine.

Untuk resource Compute Engine lainnya yang tidak mendukung kontrol akses tingkat resource, Anda harus mengelola akses ke resource tersebut pada tingkat project, folder, atau organisasi. Untuk informasi tentang organisasi, folder, atau project, lihat Hierarki resource.

Memberikan akses ke resource Compute Engine

Akun utama, seperti pengguna atau akun layanan, dapat mengakses resource Compute Engine. Identitas adalah properti akun utama. Identitas prinsipal biasanya diwakili oleh alamat email yang terkait dengan akun.

Sebelum memberikan peran IAM kepada akun utama untuk suatu resource, periksa peran mana yang tersedia untuk diberikan pada resource tertentu. Untuk mengetahui informasi selengkapnya, lihat Melihat peran yang dapat diberikan pada resource.

Untuk memberikan izin agar dapat mengakses resource Compute Engine tertentu, tetapkan kebijakan IAM pada resource tersebut.

Konsol

  1. Di konsol Google Cloud, buka halaman resource masing-masing yang ingin Anda tambahkan izinnya.
  2. Pilih kotak centang di samping fasilitas yang ingin diupdate.
  3. Selesaikan langkah-langkah berikut berdasarkan halaman referensi.
    • Untuk instance VM, klik Izin.
    • Untuk semua resource lainnya, selesaikan langkah-langkah berikut:
      1. Periksa apakah panel info terlihat. Jika tidak terlihat, klik Tampilkan panel info.
      2. Pilih tab Izin.
  4. Klik Add principal.
  5. Tambahkan identitas untuk akun utama dan pilih peran yang diperlukan.
  6. Untuk menyimpan perubahan, klik Save.

gcloud

Untuk memberikan peran kepada akun utama pada resource, gunakan sub-perintah add-iam-policy-binding resource tersebut dengan flag --member dan --role.

gcloud compute RESOURCE_TYPE add-iam-policy-binding RESOURCE_NAME \
    --member='PRINCIPAL' \
    --role='ROLE'

Ganti kode berikut:

  • RESOURCE_TYPE: jenis resource. Nilai yang valid mencakup:
    • disks
    • images
    • instances
    • instance-templates
    • machine-images
    • reservations
    • sole-tenancy node-groups
    • sole-tenancy node-templates
    • snapshots
  • RESOURCE_NAME: nama resource. Contoh, my_instance.
  • PRINCIPAL: identitas valid untuk akun utama yang ingin Anda berikan peran. Harus dalam format user|group|serviceAccount:EMAIL_ADDRESS atau domain:DOMAIN_ADDRESS. Sebagai contoh:
    • user:test-user@gmail.com
    • group:admins@example.com
    • serviceAccount:test123@example.domain.com
    • domain:example.domain.com
  • ROLE: peran untuk menetapkan akun utama ini.

Jika Anda memberikan akses ke resource yang dalam pratinjau, gunakan perintah gcloud beta compute.

REST

Untuk mengubah kebijakan IAM melalui API, lakukan hal berikut:

  1. Baca kebijakan yang ada dengan metode getIamPolicy masing-masing resource. Misalnya, permintaan HTTP berikut membaca kebijakan IAM dari VM:

    POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/VM_NAME:getIamPolicy

    Ganti kode berikut:

    • PROJECT_ID: project ID dari project tempat VM ini berada.
    • ZONE: zona VM. Untuk resource regional atau global, ganti zones/ZONE dengan regions/REGION atau global.
    • VM_NAME: nama instance VM.

    Compute Engine menampilkan kebijakan saat ini dalam respons.

  2. Edit kebijakan dengan editor teks untuk menambahkan atau menghapus akun utama dan peran yang terkait. Misalnya, untuk memberikan peran compute.admin ke email@example.com, tambahkan binding baru berikut ke kebijakan:

    {
      "members": [
        "user:email@example.com"
      ],
      "role":"roles/compute.admin"
    }
    
  3. Tulis kebijakan yang telah diperbarui dengan setIamPolicy():

    POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/VM_NAME:setIamPolicy

    Ganti kode berikut:

    • PROJECT_ID: project ID dari project tempat VM ini berada.
    • ZONE: zona VM. Untuk resource regional atau global, ganti zones/ZONE dengan regions/REGION atau global.
    • VM_NAME: nama instance VM.

    Dalam isi permintaan, berikan kebijakan IAM yang telah diperbarui dari langkah sebelumnya.

Mencabut akses ke resource

Sebagai praktik terbaik, cabut akses mereka setelah akun utama tidak lagi memerlukan akses ke resource Compute Engine Anda.

Konsol

  1. Di konsol Google Cloud, buka halaman resource masing-masing yang ingin Anda tambahkan izinnya.
  2. Pilih kotak centang di samping fasilitas yang ingin diupdate.
  3. Selesaikan langkah-langkah berikut berdasarkan halaman referensi.
    • Untuk instance VM, klik Izin.
    • Untuk semua resource lainnya, selesaikan langkah-langkah berikut:
      1. Periksa apakah panel info terlihat. Jika tidak terlihat, klik Tampilkan panel info.
      2. Pilih tab Izin.
  4. Klik kartu peran yang akun utamanya ingin Anda hapus. Tindakan ini akan memperluas kartu dan menampilkan pengguna dengan peran tersebut untuk resource tersebut.
  5. Untuk menghapus akun utama dari peran tersebut, klik Hapus.

gcloud

Untuk menghapus peran dari akun utama untuk resource, gunakan subperintah remove-iam-policy-binding resource dengan flag --member dan --role.

gcloud compute RESOURCE_TYPE remove-iam-policy-binding RESOURCE_NAME \
    --member='MEMBER' \
    --role='ROLE'

Ganti kode berikut:

  • RESOURCE_TYPE: jenis resource. Nilai yang valid mencakup:
    • disks
    • images
    • instances
    • instance-templates
    • machine-images
    • reservations
    • sole-tenancy node-groups
    • sole-tenancy node-templates
    • snapshots
  • RESOURCE_NAME: nama resource. Contoh, my_instance.
  • PRINCIPAL: identitas yang valid untuk akun utama. Harus dalam format user|group|serviceAccount:EMAIL_ADDRESS atau domain:DOMAIN_ADDRESS. Sebagai contoh:
    • user:test-user@gmail.com
    • group:admins@example.com
    • serviceAccount:test123@example.domain.com
    • domain:example.domain.com
  • ROLE: peran yang akun utamanya ingin Anda hapus.

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

REST

Untuk mengubah kebijakan IAM secara langsung melalui API, lakukan langkah berikut:

  1. Baca kebijakan yang ada dengan metode getIamPolicy masing-masing resource. Misalnya, permintaan HTTP berikut membaca kebijakan IAM dari VM:

    POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/VM_NAME:getIamPolicy

    Ganti kode berikut:

    • PROJECT_ID: project ID dari project tempat VM ini berada.
    • ZONE: zona VM. Untuk resource regional atau global, ganti zones/ZONE dengan regions/REGION atau global.
    • VM_NAME: nama instance VM.

    Compute Engine menampilkan kebijakan saat ini dalam respons.

  2. Edit kebijakan dengan editor teks untuk menghapus anggota dari peran terkait. Misalnya, hapus email@example.com dari peran compute.admin:

    {
      "members": [
        "user:owner@example.com"
      ],
      "role":"roles/compute.admin"
    }
    
  3. Tulis kebijakan yang telah diperbarui dengan setIamPolicy():

    POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/VM_NAME:setIamPolicy

    Ganti kode berikut:

    • PROJECT_ID: project ID dari project tempat VM ini berada.
    • ZONE: zona VM. Untuk resource regional atau global, ganti zones/ZONE dengan regions/REGION atau global.
    • VM_NAME: nama instance VM.

    Dalam isi permintaan, berikan kebijakan IAM yang telah diperbarui dari langkah sebelumnya.

Menguji apakah pemanggil memiliki izin

Jika Anda tidak tahu izin yang dimiliki identitas, gunakan metode testIamPermissions API untuk memeriksa izin yang tersedia untuk identitas.

Metode ini mengambil URL resource dan sekumpulan izin sebagai parameter input, serta menampilkan kumpulan izin yang diizinkan oleh pemanggil. Anda dapat menggunakan metode ini di salah satu resource yang didukung.

Biasanya, testIamPermissions dimaksudkan untuk integrasi dengan software eksklusif Anda, seperti antarmuka pengguna grafis yang disesuaikan. Anda biasanya tidak memanggil testIamPermissions jika Anda menggunakan Google Cloud secara langsung untuk mengelola izin.

Misalnya, jika Anda mem-build GUI di atas Compute Engine API dan GUI memiliki tombol "mulai" yang memulai instance, Anda dapat memanggil compute.instances.testIamPermissions() untuk menentukan apakah tombol itu harus diaktifkan atau dinonaktifkan.

Untuk menguji apakah pemanggil memiliki izin tertentu pada resource:

  1. Kirim permintaan ke resource dan sertakan daftar izin yang harus diperiksa dalam isi permintaan.

    Misalnya, pada instance, Anda mungkin memeriksa compute.instances.start, compute.instances.stop, dan compute.instances.delete.

    POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/VM_NAME/testIamPermissions
        {
          "permissions": [
            "compute.instances.start",
            "compute.instances.stop",
            "compute.instances.delete"
           ]
        }
  2. Permintaan menampilkan izin yang diaktifkan untuk pemanggil.

    {
      "permissions": [
        "compute.instances.start",
        "compute.instances.stop"
      ]
    }
    

Mengubah akses resource untuk beberapa anggota

Jika Anda ingin mengubah akses ke resource Compute Engine untuk beberapa anggota secara bersamaan, tinjau rekomendasi tentang cara mengubah kebijakan IAM secara terprogram.

Langkah berikutnya