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 mengelola kunci dan nilai metadata untuk VM dan project Anda di direktori. Setiap direktori menyimpan entri metadata dalam bentuk key-value pair. Beberapa direktori berisi subdirektori.

Dokumen ini memberikan ringkasan tentang metadata VM dan menjelaskan tentang jenis dan 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 kunci metadata standar Compute Engine sama di setiap VM, 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. Layanan Google Cloud dapat menggunakan atribut partner untuk membuat namespace tempat layanan tersebut dapat menentukan entri metadata instance. Anda dapat menetapkan, memperbarui, menghapus, dan melihat nilai entri metadata instance untuk mengonfigurasi layanan tersebut.

Misalnya, saat menggunakan identitas workload terkelola untuk Compute Engine, Anda dapat menentukan detail konfigurasi di entri metadata namespace 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 menempatkan dalam sandbox setiap proses yang tidak boleh mengakses server metadata.

Endpoint server metadata

Server metadata dapat diakses dari endpoint berikut:

  • Endpoint http: http://metadata.google.internal/computeMetadata/v1. Ini dapat diakses dari semua VM, termasuk Shielded VM.
  • Endpoint https: https://metadata.google.internal/computeMetadata/v1. Fitur ini hanya dapat diakses dari Shielded VM.

Endpoint server metadata HTTPS

Endpoint server metadata HTTPS (https://metadata.google.internal/computeMetadata/v1) memberikan keamanan tambahan untuk transmisi informasi antara server metadata dan VM. Endpoint ini hanya tersedia untuk Shielded VM.

Manfaat menggunakan endpoint server metadata HTTPS

Menggunakan endpoint https untuk membuat kueri server metadata memberikan manfaat berikut:

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

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

Cara kerja proses

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

  1. Saat VM Anda melakukan booting, Compute Engine akan menyelesaikan hal berikut:

    1. Compute Engine membuat tiga sertifikat sebagai berikut:

      • Sertifikat root yang ditandatangani sendiri: sertifikat unik yang dibuat untuk VM.
      • Sertifikat identitas server: sertifikat untuk server metadata.
      • Sertifikat identitas klien: sertifikat untuk klien. Sertifikat ini tidak di-cache di server metadata dan dibuat ulang pada setiap panggilan ke endpoint sertifikat klien dari lingkungan tamu.

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

    2. Compute Engine mentransfer bagian publik dari sertifikat root ke lingkungan tamu VM menggunakan variabel UEFI yang dibuat Google. Sertifikat root ini kemudian disimpan di VM.

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

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

Tempat sertifikat disimpan

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

Root certificate

CentOS/RHEL/Rocky

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

  • /run/google-mds-mtls/root.crt
  • /etc/pki/ca-trust/extracted/pem/tls-ca-bundle.pem

Debian/Ubuntu

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

  • /run/google-mds-mtls/root.crt
  • /etc/ssl/certs/ca-certificates.crt

Fedora

Root certificate untuk VM Fedora disimpan di lokasi berikut:

  • /run/google-mds-mtls/root.crt
  • /etc/pki/tls/certs/ca-bundle.crt

SLES

Sertifikat root untuk VM SUSE Linux Enterprise Server (SLES) disimpan di lokasi berikut:

  • /run/google-mds-mtls/root.crt
  • /etc/ssl/ca-bundle.pem

Windows

Sertifikat root untuk VM Windows disimpan di lokasi berikut:

  • C:\ProgramData\Google\ComputeEngine\mds-mtls-root.crt
  • Cert:\LocalMachine\Root
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 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
  • Cert:\LocalMachine\My

Kunci metadata kustom dan yang telah ditetapkan

Setiap entri metadata disimpan di server metadata sebagai pasangan nilai kunci. Kunci metadata peka huruf besar/kecil. Kunci Anda dapat berupa kunci metadata kustom atau yang telah ditentukan sebelumnya.

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 project ID. Untuk kunci standar yang tidak ditetapkan secara otomatis oleh Compute Engine, Anda dapat memilih dari serangkaian 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, tetapi tidak dapat memperbarui kunci itu 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 pasangan nilai kunci metadata Anda sendiri di VM atau project individual. 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 project. Hal ini juga berguna untuk membuat skrip startup dan shutdown.

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

Jenis metadata

Entri metadata VM dapat memberikan informasi khusus untuk setiap VM atau project. Metadata Anda dibagi menjadi metadata project, zonal, 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 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 kunci metadata project standar dan cara menetapkan metadata project kustom lebih lanjut.

Metadata zonal

Metadata zona ditentukan pada cakupan zona dalam 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 zonal membantu Anda melakukan isolasi error dan memberikan keandalan yang lebih besar.

Compute Engine tidak menyediakan kunci standar untuk metadata zona. Anda harus membuat kunci metadata kustom Anda sendiri untuk menetapkan metadata zonal. 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 mengelola 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 di seluruh project dan zona project
  • endpoint http:
    http://metadata.google.internal/computeMetadata/v1/project
  • Endpoint https (Pratinjau):
    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 akhir (/) dalam nama kunci metadata. Misalnya, /project/attributes/ adalah direktori dalam direktori project/ yang berisi kunci metadata lainnya. Untuk membuat listingan direktori metadata Anda sendiri, Anda harus menggunakan garis miring di akhir (/) dalam nama kunci metadata saat membuat entri metadata kustom.

Entri metadata project dan zonal 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 zonal 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 zonal.
  • Jika Anda menambahkan nilai metadata baru di seluruh project untuk kunci metadata yang sudah memiliki nilai metadata zonal, tidak ada yang berubah. Compute Engine mempertahankan nilai metadata zona di direktori /project di zona tertentu.
  • Jika Anda tidak menentukan nilai metadata zonal 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 pasangan metadata key-1=value-1 di seluruh project. Misalnya, Anda juga menentukan pasangan 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 pasangan metadata. Pasangan metadata tetap key-1=value-1 untuk semua VM di zona lain tempat Anda belum menetapkan metadata zona untuk key-1.

Apa langkah selanjutnya?