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 .
  • Siapkan autentikasi, jika Anda belum melakukannya. Autentikasi adalah proses verifikasi identitas Anda untuk akses ke layanan dan API Google Cloud. Untuk menjalankan kode atau contoh dari lingkungan pengembangan lokal, Anda dapat melakukan autentikasi ke Compute Engine sebagai berikut.

    Pilih tab untuk melihat bagaimana Anda berencana menggunakan contoh di halaman ini:

    Konsol

    Saat menggunakan Konsol Google Cloud untuk mengakses API dan layanan Google Cloud, Anda tidak perlu menyiapkan autentikasi.

    gcloud

    1. Instal Google Cloud CLI, lalu initialize dengan menjalankan perintah berikut:

      gcloud init
    2. Menetapkan region dan zona default.

    REST

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

      Instal Google Cloud CLI, lalu initialize dengan menjalankan perintah berikut:

      gcloud init

Peran yang diperlukan

Untuk mendapatkan izin yang Anda perlukan untuk mengelola akses ke resource Compute Engine, minta administrator untuk memberi Anda peran IAM Compute Admin (roles/compute.admin) pada resource tersebut. Untuk mengetahui informasi selengkapnya tentang cara memberikan peran, lihat Mengelola akses.

Peran bawaan ini berisi izin yang diperlukan untuk mengelola akses ke resource Compute Engine. Untuk melihat izin yang benar-benar diperlukan, perluas 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 pada project
    • compute.RESOURCE_TYPE.get di resource
    • compute.RESOURCE_TYPE.getIamPolicy di resource
    • compute.RESOURCE_TYPE.setIamPolicy di resource
  • Untuk menguji izin pemanggil: compute.RESOURCE_TYPE.getIamPolicy pada resource

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

Anda mung juga bisa mendapatkan izin ini dengan peran khusus atau peran bawaanlainnya.

Resource yang didukung

Untuk melihat daftar resource Compute Engine yang mendukung kontrol akses tingkat resource, baca 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 akun pengguna atau layanan, dapat mengakses resource Compute Engine. Identitas adalah properti akun utama. Identitas akun utama biasanya diwakili oleh alamat email yang terkait dengan akun.

Sebelum memberikan peran IAM ke akun utama untuk 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 akses ke resource Compute Engine tertentu, tetapkan kebijakan IAM pada resource.

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 Tambahkan akun utama.
  5. Tambahkan identitas untuk akun utama dan pilih peran yang diperlukan.
  6. Untuk menyimpan perubahan, klik Save.

gcloud

Untuk memberikan peran ke akun utama pada resource, gunakan sub-perintah add-iam-policy-binding resource tersebut dengan tanda --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 meliputi:
    • disks
    • images
    • instances
    • instance-templates
    • machine-images
    • reservations
    • sole-tenancy node-groups
    • sole-tenancy node-templates
    • snapshots
  • RESOURCE_NAME: nama resource. Misalnya, my_instance.
  • PRINCIPAL: identitas yang valid untuk akun utama yang ingin Anda beri peran. Harus dalam bentuk 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 sedang 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 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 perannya 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 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, setelah akun utama tidak lagi memerlukan akses ke resource Compute Engine Anda, cabut aksesnya.

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 sub-perintah remove-iam-policy-binding resource dengan tanda --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 meliputi:
    • 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 akun utama yang valid. Harus dalam bentuk 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 ingin Anda hapus akun utamanya.

Jika Anda mencabut akses ke resource yang sedang 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 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 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 selanjutnya