Menetapkan dan membuat kueri atribut tamu


Atribut tamu adalah jenis metadata kustom tertentu yang dapat ditulis oleh aplikasi Anda saat dijalankan di instance mesin virtual (VM) Anda. Semua aplikasi atau pengguna di instance VM Anda dapat membaca dan menulis data ke nilai metadata atribut tamu ini.

Sebelum memulai

  • Untuk VM Windows Server, gunakan PowerShell 3.0 atau yang lebih baru. Sebaiknya gunakan ctrl+v untuk menempelkan blok kode yang disalin.
  • 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

Izin atau peran yang diperlukan bergantung pada apakah Anda menyelesaikan tugas dari dalam atau luar VM.

Di dalam VM

Jika Anda menetapkan, membuat kueri, atau menghapus atribut tamu dari dalam VM, Anda hanya memerlukan peran dan izin untuk terhubung ke VM. Setiap proses yang berjalan dalam instance VM dapat menulis ke nilai atribut tamu, termasuk skrip dan aplikasi yang tidak memiliki hak istimewa tingkat sudo atau administrator.

Untuk pembacaan dan penulisan dari dalam VM, server metadata menyediakan autentikasi dan otorisasi tingkat instance otomatis. Setiap VM hanya dapat membaca atau menulis ke server metadatanya sendiri. VM lain tidak dapat mengakses server metadata VM lain.

Di luar VM

Peran dan izin berikut diperlukan untuk mengaktifkan atribut tamu, atau melihat atribut tamu dari luar VM menggunakan Google Cloud CLI atau REST. Anda tidak dapat menetapkan atau menghapus atribut tamu dari luar VM.

Guna memastikan bahwa pengguna atau akun layanan Anda memiliki izin yang diperlukan untuk mengaktifkan atau melihat atribut tamu, minta administrator untuk memberi akun layanan dan pengguna Anda peran IAM Compute Instance Admin (v1) (roles/compute.instanceAdmin.v1) di VM atau project. Untuk mengetahui informasi selengkapnya tentang cara memberikan peran, lihat Mengelola akses.

Peran yang telah ditetapkan ini berisi izin yang diperlukan untuk mengaktifkan atau melihat atribut tamu. Untuk melihat izin yang benar-benar diperlukan, perluas bagian Izin yang diperlukan:

Izin yang diperlukan

Izin berikut diperlukan untuk mengaktifkan atau melihat atribut tamu:

  • Untuk mengaktifkan atribut tamu: compute.instances.setMetadata di VM atau project
  • Untuk melihat atribut tamu: compute.instances.getGuestAttributes di VM atau project

Administrator Anda mungkin juga dapat memberi pengguna atau akun layanan Anda izin ini dengan peran khusus atau peran standar lainnya.

Kapan harus menggunakan atribut tamu

Gunakan atribut tamu hanya untuk kasus penggunaan yang memerlukan sedikit data yang tidak sering berubah. Kasus penggunaan terbaik untuk atribut tamu memiliki karakteristik berikut:

  • Jumlah kueri dibatasi hingga maksimum 10 kueri per menit per instance VM.
  • Kueri tidak boleh melebihi burst 3 kueri per detik. Jika kapasitas maksimum ini terlampaui, Compute Engine dapat secara acak menghapus atribut tamu yang sedang dalam proses penulisan. Penghapusan data ini diperlukan untuk memastikan bahwa data sistem penting lainnya dapat ditulis ke server.

Atribut tamu berfungsi dengan baik untuk situasi saat Anda harus memublikasikan data bervolume rendah dan jarang. Misalnya, atribut tamu berfungsi dengan baik untuk kasus penggunaan berikut:

  • Skrip startup yang dapat menunjukkan inisialisasi yang berhasil dengan menetapkan nilai status kustom di atribut tamu.
  • Agen pengelolaan konfigurasi yang dapat memublikasikan nama dan versi OS tamu ke atribut tamu.
  • Agen pengelolaan inventaris yang dapat memublikasikan daftar paket yang diinstal di instance VM ke atribut tamu.
  • Software orkestrasi beban kerja yang dapat menandakan penyelesaian operasi di tamu ke bidang kontrol software dengan menetapkan nilai status kustom di atribut tamu.

Atribut tamu bukan pengganti streaming peristiwa, Pub/Sub, atau bentuk lain dari penyimpanan data dan repositori konfigurasi.

Atribut tamu dan layanan Google Cloud lainnya

Atribut tamu digunakan oleh layanan Google Cloud lainnya sebagai berikut:

  • Keamanan SSH: Jika atribut tamu diaktifkan dan Login OS dinonaktifkan, lingkungan tamu dan gcloud CLI akan menggunakan atribut tamu untuk meningkatkan keamanan SSH dengan menggunakan Google API untuk mengambil kunci host sebelum Anda dapat terhubung ke VM menggunakan SSH.
  • Pengelola VM: Agen konfigurasi OS memublikasikan data sistem operasi ke atribut tamu.

Untuk meninjau entri metadata yang disimpan oleh layanan ini, lihat Kunci metadata atribut tamu yang telah ditetapkan sebelumnya.

Mengaktifkan atribut tamu di VM Anda

Secara default, atribut tamu dinonaktifkan. Untuk mengaktifkan atribut tamu, tetapkan nilai metadata yang diperlukan di setiap VM atau di metadata seluruh project:

Konsol

Tetapkan enable-guest-attributes dalam metadata instance saat Anda membuat VM:

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

    Buka Create an instance

  2. Tentukan detail VM.

  3. Luaskan bagian Advanced options, dan lakukan hal berikut:

    1. Luaskan bagian Management.
    2. Di bagian Metadata, klik Add item tambahkan entri metadata berikut:

      • Kunci: enable-guest-attributes
      • Nilai: TRUE
  4. Untuk membuat VM, klik Create.

Tetapkan enable-guest-attributes di metadata tingkat project agar dapat diterapkan ke semua VM di project Anda:

  1. Di Konsol Google Cloud, buka halaman Metadata.

    Buka halaman Metadata

  2. Klik Edit.

  3. Tambahkan entri metadata dengan kuncinya adalah enable-guest-attributes dan nilainya adalah TRUE. Atau, tetapkan nilai ke FALSE untuk menonaktifkan fitur.

  4. Klik Save untuk menerapkan perubahan.

Tetapkan enable-guest-attributes dalam metadata VM yang ada:

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

    Buka halaman VM instances

  2. Klik nama VM tempat Anda ingin menetapkan nilai metadata.
  3. Di bagian atas halaman detail instance, klik Edit untuk mengedit setelan instance.
  4. Di bagian Custom metadata, tambahkan entri metadata dengan kuncinya adalah enable-guest-attributes dan nilainya TRUE. Atau, tetapkan nilai ke FALSE untuk mengecualikan VM dari fitur.
  5. Di bagian bawah halaman detail instance, klik Save untuk menerapkan perubahan pada VM.

gcloud

Tetapkan enable-guest-attributes dalam metadata instance saat Anda membuat VM:

Gunakan perintah gcloud compute instances create di Google Cloud CLI dan setel enable-guest-attributes=TRUE untuk mengaktifkan atribut tamu. Ganti VM_NAME dengan nama VM Anda.

gcloud compute instances create VM_NAME \
    --metadata=enable-guest-attributes=TRUE

Tetapkan enable-guest-attributes di metadata seluruh project agar diterapkan ke semua VM di project Anda:

Gunakan perintah project-info add-metadata di Google Cloud CLI dan tetapkan enable-guest-attributes=TRUE untuk mengaktifkan atribut tamu:

gcloud compute project-info add-metadata \
    --metadata=enable-guest-attributes=TRUE

Atau, Anda dapat menetapkan enable-guest-attributes ke FALSE untuk menonaktifkan atribut tamu.

Tetapkan enable-guest-attributes dalam metadata VM yang ada:

Gunakan perintah instances add-metadata di Google Cloud CLI dan setel enable-guest-attributes=TRUE untuk mengaktifkan atribut tamu. Ganti VM_NAME dengan nama VM Anda.

gcloud compute instances add-metadata VM_NAME \
    --metadata=enable-guest-attributes=TRUE

Atau, Anda dapat menetapkan enable-guest-attributes ke FALSE untuk mengecualikan VM agar tidak menggunakan atribut tamu.

Tetapkan atribut tamu

Setiap proses yang berjalan dalam instance VM dapat menulis ke nilai atribut tamu, termasuk skrip dan aplikasi yang tidak memiliki hak istimewa tingkat sudo atau administrator. Pengguna atau akun layanan di luar VM tidak dapat menulis ke nilai metadata atribut tamu.

VM Linux

Misalnya, Anda dapat menggunakan permintaan curl dari dalam VM untuk menulis nilai ke jalur metadata guest-attributes:

curl -X PUT --data "VALUE" http://metadata.google.internal/computeMetadata/v1/instance/guest-attributes/NAMESPACE/KEY -H "Metadata-Flavor: Google"

Ganti kode berikut:

  • NAMESPACE: pengelompokan logis untuk KEY Anda. Atribut tamu harus memiliki namespace.
  • VALUE: nilai yang ingin Anda tulis.
  • KEY: jalur metadata dalam guest-attributes tempat nilai disimpan.

Hanya gunakan huruf, angka, garis bawah (_), dan tanda hubung (-) untuk kolom NAMESPACE dan KEY.

VM Windows

Misalnya, Anda dapat menggunakan permintaan Invoke-RestMethod dari dalam VM untuk menulis nilai ke jalur metadata guest-attributes:

PS C:\> 
$value = (Invoke-RestMethod `
         -Method PUT -Body "VALUE" `
         -Headers @{'Metadata-Flavor' = 'Google'} `
         -Uri "http://metadata.google.internal/computeMetadata/v1/instance/guest-attributes/NAMESPACE/KEY")
$value

Ganti kode berikut:

  • NAMESPACE: pengelompokan logis untuk KEY Anda. Atribut tamu harus memiliki namespace.
  • VALUE: nilai yang ingin Anda tulis.
  • KEY: jalur metadata dalam guest-attributes tempat nilai disimpan.

Hanya gunakan huruf, angka, garis bawah (_), dan tanda hubung (-) untuk kolom NAMESPACE dan KEY.

Dapatkan atribut tamu

Pengguna atau akun layanan dapat membaca atribut tamu dari luar VM jika mereka memiliki peran yang diperlukan. Atau, setiap pengguna atau aplikasi dalam VM dapat membaca nilai metadata untuk VM tertentu tersebut.

Setiap proses yang berjalan di mesin virtual dapat menulis ke nilai atribut tamu, yang mencakup skrip dan aplikasi yang tidak memiliki hak istimewa tingkat sudo atau administrator.

Buat kueri server metadata

Gunakan petunjuk berikut untuk membuat kueri atribut tamu dari dalam VM.

  1. Hubungkan ke VM.

  2. Mengkueri atribut tamu.

    VM Linux

    Misalnya, Anda dapat menggunakan permintaan curl dari dalam VM Anda untuk membaca nilai dari jalur metadata guest-attributes:

    curl http://metadata.google.internal/computeMetadata/v1/instance/guest-attributes/NAMESPACE/KEY -H "Metadata-Flavor: Google"

    Ganti kode berikut:

    • NAMESPACE: namespace untuk kunci guest-attributes yang ingin Anda buat kuerinya.
    • KEY: jalur dalam guest-attributes tempat Anda ingin membaca nilai metadata.

    Atau, Anda dapat menampilkan semua nilai atribut tamu dalam satu permintaan. Ganti NAMESPACE dengan namespace untuk kunci guest-attributes yang ingin Anda kueri.

    curl http://metadata.google.internal/computeMetadata/v1/instance/guest-attributes/NAMESPACE/ -H "Metadata-Flavor: Google"

    VM Windows

    Misalnya, Anda dapat menggunakan permintaan Invoke-RestMethod dari dalam VM Anda untuk membaca nilai dari jalur metadata guest-attributes:

    PS C:\> 
    $value = (Invoke-RestMethod `
            -Headers @{'Metadata-Flavor' = 'Google'} `
            -Uri "http://metadata.google.internal/computeMetadata/v1/instance/guest-attributes/NAMESPACE/KEY")
    $value
    

    Ganti kode berikut:

    • NAMESPACE: namespace untuk kunci guest-attributes yang ingin Anda buat kuerinya.
    • KEY: jalur dalam guest-attributes tempat Anda ingin membaca nilai metadata.

    Atau, Anda dapat menampilkan semua nilai atribut tamu dalam satu permintaan. Ganti NAMESPACE dengan namespace untuk kunci guest-attributes yang ingin Anda kueri.

    PS C:\> 
    $value = (Invoke-RestMethod `
            -Headers @{'Metadata-Flavor' = 'Google'} `
            -Uri "http://metadata.google.internal/computeMetadata/v1/instance/guest-attributes/NAMESPACE/")
    $value
    

Gunakan Google Cloud CLI atau REST

Gunakan petunjuk berikut untuk melihat atribut tamu dari luar VM.

gcloud

Gunakan Google Cloud CLI untuk membaca nilai metadata atribut tamu untuk VM. Misalnya, Anda dapat mengambil semua nilai untuk VM seperti berikut:

gcloud compute instances get-guest-attributes VM_NAME \
    --zone=ZONE

Untuk mengambil semua nilai pada namespace tertentu, sertakan flag --query-path dan namespace yang Anda tentukan:

gcloud compute instances get-guest-attributes VM_NAME \
    --query-path=NAMESPACE \
    --zone=ZONE

Untuk mengambil semua nilai pada namespace tertentu, sertakan flag --query-path, namespace, dan kunci untuk nilai yang Anda tentukan:

gcloud compute instances get-guest-attributes VM_NAME \
    --query-path=NAMESPACE/KEY \
    --zone=ZONE

Ganti kode berikut:

  • VM_NAME: nama VM tempat Anda ingin membaca nilai metadata atribut tamu
  • NAMESPACE: namespace untuk kunci guest-attributes yang ingin Anda buat kuerinya.
  • KEY: jalur dalam metadata guest-attributes tempat nilai disimpan
  • ZONE: zona tempat VM berada

REST

Gunakan metode compute.instances.getguestattributes:

GET https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/VM_NAME/getGuestAttributes?queryPath=NAMESPACE/KEY

Ganti kode berikut:

  • PROJECT_ID: project ID Anda
  • ZONE: zona tempat VM berada
  • VM_NAME: nama VM tempat Anda ingin membaca nilai metadata atribut tamu
  • NAMESPACE: namespace untuk kunci guest-attributes yang ingin Anda buat kuerinya.
  • KEY: jalur dalam metadata guest-attributes tempat nilai disimpan

Untuk mengambil semua kunci untuk NAMESPACE, hapus KEY:

GET https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/VM_NAME/getGuestAttributes?queryPath=NAMESPACE

Untuk mengambil semua kunci di setiap namespace pada VM, hapus NAMESPACE dan queryPath sepenuhnya:

GET https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/VM_NAME/getGuestAttributes

Atau, jika memiliki token OAuth, Anda dapat menggunakan curl:

curl -H "Authorization: Bearer OAUTH_TOKEN" https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/VM_NAME/getGuestAttributes?queryPath=NAMESPACE/KEY

Ganti kode berikut:

  • OAUTH_TOKEN: token OAuth Anda
  • PROJECT_ID: project ID Anda
  • ZONE: zona tempat VM berada
  • VM_NAME: nama VM tempat Anda ingin membaca nilai metadata atribut tamu
  • NAMESPACE: namespace untuk kunci guest-attributes yang ingin Anda buat kuerinya.
  • KEY: jalur dalam metadata guest-attributes tempat nilai disimpan

Menghapus atribut tamu

Gunakan petunjuk berikut untuk menghapus atribut tamu dari dalam VM.

  1. Hubungkan ke VM.

  2. Hapus atribut tamu.

    VM Linux

    Anda juga dapat menghapus atribut tamu. Misalnya, gunakan curl untuk menghapus kunci tertentu:

    curl -X DELETE http://metadata.google.internal/computeMetadata/v1/instance/guest-attributes/NAMESPACE/KEY -H "Metadata-Flavor: Google"

    Ganti kode berikut:

    • NAMESPACE: namespace untuk kunci guest-attributes yang ingin Anda hapus
    • KEY: jalur dalam guest-attributes tempat nilai disimpan

    VM Windows

    Anda juga dapat menghapus atribut tamu. Misalnya, gunakan Invoke-RestMethod untuk menghapus kunci tertentu:

    PS C:\> 
    $value = (Invoke-RestMethod `
              -Method DELETE `
              -Headers @{'Metadata-Flavor' = 'Google'} `
              -Uri "http://metadata.google.internal/computeMetadata/v1/instance/guest-attributes/NAMESPACE/KEY")
    $value
    

    Ganti kode berikut:

    • NAMESPACE: namespace untuk kunci guest-attributes yang ingin Anda hapus
    • KEY: jalur dalam guest-attributes tempat nilai disimpan

Menonaktifkan atribut tamu di organisasi atau folder

Jika Anda tidak ingin ada VM di organisasi atau folder mengaktifkan atribut tamu, Anda dapat mengganti dan menonaktifkan fitur ini sepenuhnya.

Tetapkan batasan constraints/compute.disableGuestAttributesAccess di organisasi atau folder, dengan mengganti PROJECT_ID dengan nama project Anda:

gcloud resource-manager org-policies enable-enforce \
    constraints/compute.disableGuestAttributesAccess \
    --project=PROJECT_ID

Baca Menggunakan batasan untuk mempelajari lebih lanjut cara menetapkan dan mengelola batasan pada organisasi Anda.

Apa langkah selanjutnya?