Tentang metadata VM

Setiap instance mesin virtual (VM) menyimpan metadatanya di server metadata. VM Anda otomatis memiliki akses ke API server metadata tanpa otorisasi tambahan. Compute Engine menyimpan kunci dan nilai metadata untuk VM dan project Anda dalam direktori. Setiap direktori menyimpan entri metadata dalam bentuk key-value pair. Beberapa direktori berisi subdirektori.

Dokumen ini memberikan ringkasan tentang metadata VM dan menjelaskan jenis serta properti metadata VM.

Penggunaan metadata VM

Bagian berikut menjelaskan beberapa skenario saat Anda dapat menggunakan entri metadata untuk mengelola VM.

Skrip startup dan shutdown

Server metadata sangat berguna saat digunakan bersama skrip startup dan shutdown karena Anda dapat menggunakan server metadata untuk mendapatkan informasi unik secara terprogram tentang VM, tanpa otorisasi tambahan.

Misalnya, Anda dapat menulis skrip startup yang mendapatkan key-value pair metadata untuk IP eksternal VM, dan menggunakan IP tersebut di skrip untuk menyiapkan database. Karena setiap VM menggunakan kunci metadata standar Compute Engine yang sama, Anda dapat menggunakan kembali skrip tanpa harus mengupdatenya untuk setiap VM. Hal ini membantu Anda membuat kode yang tidak terlalu rapuh untuk aplikasi Anda.

Pemeliharaan host

Server metadata memberikan informasi tentang opsi penjadwalan VM di direktori metadata scheduling/ menggunakan kunci maintenance-event. Anda dapat menggunakan nilai metadata ini untuk memberi tahu saat peristiwa pemeliharaan akan terjadi, sehingga Anda dapat menyiapkan lingkungan untuk peristiwa tersebut. Untuk informasi selengkapnya, lihat Mendapatkan pemberitahuan migrasi langsung.

Atribut tamu

Atribut tamu adalah jenis metadata kustom tertentu yang dapat digunakan untuk menulis aplikasi Anda saat berjalan di VM. Gunakan atribut tamu hanya untuk kasus penggunaan yang memerlukan sedikit data yang tidak sering berubah. Untuk mengetahui informasi selengkapnya tentang atribut tamu, lihat Menetapkan dan mengkueri atribut tamu.

Atribut partner

Atribut partner adalah jenis metadata instance tertentu. Google Cloud layanan dapat menggunakan atribut partner untuk membuat namespace tempat mereka dapat menentukan entri metadata instance. Anda dapat menetapkan, memperbarui, menghapus, dan melihat nilai entri metadata instance untuk mengonfigurasi layanan tersebut.

Pertimbangan keamanan metadata

Saat Anda membuat permintaan untuk mendapatkan informasi dari server metadata, permintaan Anda dan respons metadata berikutnya tidak akan pernah keluar dari host fisik yang menjalankan VM.

Namun, setiap proses yang dapat mengueri URL metadata, akan memiliki akses ke semua nilai di server metadata. Hal ini mencakup nilai metadata kustom, sertifikat klien, dan kunci pribadi yang Anda tulis ke server. Google merekomendasikan agar Anda berhati-hati saat menulis nilai sensitif ke server metadata atau saat menjalankan proses pihak ketiga. Anda harus melakukan sandbox pada proses apa pun yang tidak boleh mengakses server metadata.

Endpoint server metadata

Server metadata dapat diakses dari endpoint HTTP dan HTTPS.

Endpoint server metadata HTTP

Endpoint HTTP dapat diakses dari semua jenis instance komputasi, termasuk Shielded VM.

Anda dapat menggunakan endpoint berikut untuk mengakses server metadata menggunakan HTTP:

  • Nama DNS (Direkomendasikan): http://metadata.google.internal/computeMetadata/v1
  • Alamat IPv4: http://169.254.169.254/computeMetadata/v1
  • Alamat IPv6 (hanya untuk VM khusus IPv6): http://[fd20:ce::254]/computeMetadata/v1

Endpoint server metadata HTTPS

Endpoint server metadata HTTPS memberikan keamanan tambahan untuk transmisi informasi antara server metadata dan VM. Endpoint ini hanya tersedia untuk Shielded VM.

Anda dapat menggunakan endpoint berikut untuk mengakses server metadata dari Shielded VM menggunakan HTTPS:

  • Nama DNS (Direkomendasikan): https://metadata.google.internal/computeMetadata/v1
  • Alamat IPv4: https://169.254.169.254/computeMetadata/v1
  • Alamat IPv6 (hanya untuk VM khusus IPv6): https://[fd20:ce::254]/computeMetadata/v1

Manfaat menggunakan endpoint server metadata HTTPS

Menggunakan endpoint HTTPS untuk mengkueri server metadata memberikan manfaat berikut:

  • Meningkatkan keamanan: membantu mencegah akses tidak sah ke metadata sensitif Anda. Tindakan ini mencegah penyerang melakukan salah satu tindakan berikut:

    • Memalsukan atau meniru server metadata untuk mendapatkan akses ke VM
    • Melihat atau merusak metadata sensitif sebelum mencapai VM
  • Mengurangi biaya: membantu Anda menghindari biaya yang terkait dengan pelanggaran keamanan

Cara kerja proses

Untuk Shielded VM yang telah menginstal lingkungan tamu, proses berikut akan terjadi di VM Anda:

  1. Compute Engine membuat tiga sertifikat sebagai berikut:

    • Root certificate yang ditandatangani sendiri: sertifikat unik yang dibuat Compute Engine untuk VM. Compute Engine hanya membuat sertifikat ini pada booting pertama VM, dan berlaku selama 50 tahun.
    • Sertifikat identitas server: sertifikat untuk server metadata.
    • Sertifikat identitas klien: sertifikat untuk klien. Server metadata tidak menyimpan sertifikat ini dalam cache. Lingkungan tamu menerima sertifikat baru dari server metadata pada setiap panggilan ke endpoint sertifikat klien. Sertifikat ini berlaku selama 7 hari. Lingkungan tamu harus memanggil endpoint setidaknya setiap 7 hari untuk mendapatkan sertifikat baru dan mempertahankan sertifikat yang valid.

      Untuk mengetahui lokasi penyimpanan sertifikat identitas klien dan root certificate, lihat Tempat penyimpanan sertifikat.

  2. Saat booting pertama, Compute Engine mentransfer bagian publik root certificate ke lingkungan tamu VM menggunakan variabel UEFI yang dibuat Google. Root certificate ini kemudian disimpan di VM.

  3. Secara berkala, lingkungan tamu meminta sertifikat identitas klien. Saat hal ini terjadi, agen tamu mendownload sertifikat ini dari server metadata dan memvalidasinya menggunakan root certificate untuk VM tersebut.

Saat Anda membuat kueri ke endpoint server metadata HTTPS, Anda menentukan sertifikat identitas klien yang kemudian digunakan oleh server metadata dan VM untuk memverifikasi bahwa kueri ini diotorisasi.

Mengaktifkan penyiapan sertifikat otomatis

Jika Anda ingin instance atau project Anda otomatis menyiapkan sertifikat MDS HTTPS, tetapkan kunci metadata disable-https-mds-setup di instance atau project Anda ke FALSE.

Untuk mengetahui informasi selengkapnya, lihat Kunci Metadata Standar.

Tempat penyimpanan sertifikat

Bagian berikut mencantumkan lokasi penyimpanan untuk root certificate dan sertifikat identitas klien yang dibuat oleh Compute Engine.

Root certificate

CentOS/RHEL/Rocky

Root certificate untuk VM CentOS, Red Hat Enterprise Linux (RHEL), dan Rocky Linux disimpan di lokasi berikut:

/run/google-mds-mtls/root.crt

Debian/Ubuntu

Root certificate untuk VM Debian dan Ubuntu disimpan di lokasi berikut:

/run/google-mds-mtls/root.crt

Fedora

Root certificate untuk VM Fedora disimpan di lokasi berikut:

/run/google-mds-mtls/root.crt

SLES

Root certificate untuk VM SUSE Linux Enterprise Server (SLES) disimpan di lokasi berikut:

/run/google-mds-mtls/root.crt

Windows

Root certificate untuk VM Windows disimpan di lokasi berikut:

C:\ProgramData\Google\ComputeEngine\mds-mtls-root.crt

Sertifikat identitas klien

Sertifikat identitas klien dapat diakses oleh semua proses yang berjalan di VM. Hal ini diperlukan agar semua proses memiliki akses ke server metadata menggunakan endpoint HTTPS, mirip dengan endpoint HTTP. Untuk mengetahui informasi selengkapnya, lihat Pertimbangan keamanan metadata.

Linux

Sertifikat identitas klien untuk VM Linux disimpan di lokasi berikut:

/run/google-mds-mtls/client.key

Windows

Sertifikat identitas klien untuk VM Windows disimpan di lokasi berikut:

  • C:\ProgramData\Google\ComputeEngine\mds-mtls-client.key

Mengaktifkan penyimpanan root certificate di penyimpanan tepercaya OS

Jika Anda ingin Compute Engine otomatis menambahkan root certificate server metadata HTTPS ke penyimpanan tepercaya OS, tetapkan kunci metadata enable-https-mds-native-cert-store di instance atau project Anda ke TRUE.

Jika Anda mengaktifkan opsi ini, Compute Engine akan menambahkan root certificate ke lokasi berikut selain lokasi defaultnya.

CentOS/RHEL/Rocky

/etc/pki/ca-trust/extracted/pem/tls-ca-bundle.pem

Debian/Ubuntu

/etc/ssl/certs/ca-certificates.crt

Fedora

/etc/pki/tls/certs/ca-bundle.crt

SLES

/etc/ssl/ca-bundle.pem

Windows

Cert:\LocalMachine\Root

Untuk mengetahui informasi selengkapnya, lihat Kunci Metadata Standar.

Rotasi root certificate

Root certificate server metadata HTTPS dirotasi setiap kali instance dimulai dan dihentikan. Saat hal ini terjadi, sertifikat apa pun yang didasarkan pada root certificate sebelumnya tidak lagi valid untuk membuat koneksi HTTPS ke server metadata. Jika penyiapan sertifikat otomatis diaktifkan, lingkungan tamu akan memperbarui sertifikat klien dan root certificate sebelumnya pada sistem file menggunakan proses yang sama seperti pada booting pertama.

Kunci metadata standar dan kustom

Setiap entri metadata disimpan di server metadata sebagai key-value pair. Kunci metadata peka huruf besar/kecil. Kunci Anda dapat berupa kunci metadata standar atau kustom.

Kunci metadata standar

Kunci metadata standar adalah kunci metadata yang dibuat oleh Compute Engine. Saat Anda membuat VM, Compute Engine akan otomatis menetapkan nilai metadata untuk beberapa kunci ini di VM tersebut—misalnya, ID instance VM atau ID project. Untuk kunci standar yang nilainya tidak ditetapkan secara otomatis oleh Compute Engine, Anda dapat memilih dari sekumpulan nilai yang tersedia bergantung pada konfigurasi sistem. Misalnya, untuk mengaktifkan login OS untuk VM, Anda dapat menetapkan nilai kunci standar enable-oslogin ke TRUE untuk VM tersebut. Untuk menonaktifkan login OS untuk VM tersebut, Anda dapat memperbarui nilai kunci menjadi FALSE. Anda hanya dapat memperbarui nilai untuk kunci ini, bukan kuncinya sendiri.

Untuk mengetahui informasi selengkapnya tentang kunci metadata standar dan daftar kunci ini, lihat Kunci metadata standar.

Kunci metadata kustom

Metadata kustom memungkinkan Anda membuat dan menggunakan key-value pair metadata Anda sendiri pada setiap VM atau project. Anda dapat menambahkan kunci metadata kustom baru, memperbarui nilai kunci yang ada, dan menghapus entri metadata kustom jika tidak diperlukan. Menetapkan metadata kustom berguna untuk meneruskan nilai arbitrer ke VM dalam sebuah project. Tindakan ini juga berguna untuk membuat skrip startup dan shutdown.

Untuk mempelajari cara menambahkan, memperbarui, atau menghapus metadata kustom untuk VM Anda, lihat Mengonfigurasi metadata kustom.

Jenis metadata

Entri metadata VM dapat memberikan informasi khusus untuk setiap VM atau project. Metadata Anda dibagi menjadi metadata project, zona, dan instance, berdasarkan cakupan tempat Anda menetapkan metadata.

Metadata project

Metadata project ditentukan pada cakupan project dan memberikan informasi yang berlaku untuk semua VM dalam sebuah project. Saat Anda menetapkan metadata ini, entri metadata akan diterapkan ke semua VM dalam project tersebut.

Anda dapat menggunakan kunci metadata standar dan kustom untuk menetapkan metadata project. Pelajari lebih lanjut kunci metadata project standar dan cara menetapkan metadata project kustom.

Metadata zona

Metadata zona ditentukan pada cakupan zona dalam sebuah project dan memberikan informasi tentang VM di zona tertentu dalam project tersebut. Saat Anda menetapkan metadata zona, entri metadata akan diterapkan ke semua VM di zona yang dikonfigurasi dalam project tersebut. Jika dibandingkan dengan metadata project, metadata zona membantu Anda dalam isolasi kesalahan dan memberikan keandalan yang lebih besar.

Compute Engine tidak menyediakan kunci standar untuk metadata zona. Anda harus membuat kunci metadata kustom sendiri untuk menetapkan metadata zona. Pelajari lebih lanjut cara menetapkan metadata zona kustom.

Metadata instance

Metadata instance memberikan informasi tentang instance VM tertentu. Anda menetapkan metadata instance secara terpisah untuk setiap instance VM.

Anda dapat menggunakan kunci metadata standar dan kustom untuk menetapkan metadata instance. Pelajari lebih lanjut kunci metadata instance standar dan cara Menetapkan metadata instance kustom.

Cara metadata diatur

Compute Engine menyimpan dan mempertahankan kunci dan nilai metadata untuk VM dan project Anda dalam listingan direktori. Bergantung pada jenis metadata, Compute Engine menyimpan entri metadata di salah satu direktori berikut:

Jenis metadata Direktori
Metadata project dan zona
  • Endpoint HTTP:
    http://metadata.google.internal/computeMetadata/v1/project
  • Endpoint HTTPS:
    https://metadata.google.internal/computeMetadata/v1/project
Metadata instance
  • Endpoint HTTP:
    http://metadata.google.internal/computeMetadata/v1/instance
  • Endpoint HTTPS:
    https://metadata.google.internal/computeMetadata/v1/instance

Setiap direktori menyimpan entri metadata dalam bentuk key-value pair. Beberapa entri metadata juga merupakan direktori yang berisi kunci metadata lainnya. Entri metadata yang berfungsi sebagai direktori ditandai dengan garis miring penutup (/) dalam nama kunci metadata. Misalnya, /project/attributes/ adalah direktori di bawah direktori project/ yang berisi kunci metadata lainnya. Untuk membuat listingan direktori metadata Anda sendiri, Anda harus menggunakan garis miring penutup (/) dalam nama kunci metadata saat membuat entri metadata kustom.

Saat Anda mengkueri endpoint metadata, format isi respons bergantung pada endpoint. Jika Anda mengkueri endpoint yang menyimpan satu nilai, seperti hostname, isi respons akan berisi nilai tersebut sebagai teks biasa. Jika Anda mengkueri endpoint yang bertindak sebagai direktori, seperti /project/attributes/, isi respons akan berisi daftar entri dalam direktori tersebut, dengan satu entri per baris.

Untuk mengetahui informasi selengkapnya tentang cara mengkueri endpoint metadata, termasuk cara mengkueri direktori secara rekursif atau memformat respons sebagai JSON, lihat Melihat dan mengkueri metadata VM.

Entri metadata project dan zona disimpan di direktori project/ yang sama. Jika Anda menetapkan nilai yang berbeda untuk kunci metadata kustom yang sama untuk VM di tingkat project dan di tingkat zona, nilai metadata zona untuk kunci tersebut akan lebih diutamakan daripada nilai metadata project di zona masing-masing.

  • Jika Anda menambahkan nilai metadata zona untuk kunci metadata yang sudah memiliki nilai metadata project, Compute Engine akan mengganti nilai metadata project untuk VM di zona yang ditentukan ini dan memperbarui direktori /project dengan nilai zona.
  • Jika Anda menambahkan nilai metadata project baru untuk kunci metadata yang sudah memiliki nilai metadata zona, tidak ada yang berubah. Compute Engine mempertahankan nilai metadata zona di direktori /project di zona tertentu.
  • Jika Anda tidak menentukan nilai metadata zona untuk kunci metadata kustom di zona tertentu, tetapi kunci tersebut memiliki nilai metadata project, VM Anda akan terus memiliki nilai metadata project di zona tersebut.

Misalnya, Anda menentukan key-value pair metadata project key-1=value-1. Misalnya, Anda juga menentukan key-value pair metadata zona key-1=zonal-value-1 hanya untuk zona us-central1-a. Semua VM di zona us-central1-a untuk project Anda akan mewarisi key-1=zonal-value1 sebagai key-value pair metadata. Key-value pair metadata tetap key-1=value-1 untuk semua VM di zona lain tempat Anda belum menetapkan metadata zona untuk key-1.

Apa langkah selanjutnya?