Melakukan booting VM dengan aman

Booting aman membantu memastikan bahwa sistem hanya menjalankan software asli dengan memverifikasi tanda tangan digital semua komponen booting, dan menghentikan proses booting jika verifikasi tanda tangan gagal.

Google Distributed Cloud (GDC) dengan air gap menggunakan firmware Unified Extensible Firmware Interface (UEFI) untuk mengelola sertifikat dan kunci yang digunakan untuk menandatangani software.

Firmware UEFI dengan aman mengelola sertifikat yang berisi kunci yang digunakan oleh produsen software untuk menandatangani firmware sistem, boot loader sistem, dan biner apa pun yang dimuatnya. Untuk melihat dokumentasi UEFI, buka https://uefi.org/sites/default/files/resources/UEFI_Secure_Boot_in_Modern_Computer_Security_Solutions_2013.pdf.

Pada setiap booting, firmware UEFI memverifikasi tanda tangan digital setiap komponen booting terhadap penyimpanan aman kunci yang disetujui. Komponen booting apa pun yang tidak Anda tandatangani dengan benar, atau tidak Anda tandatangani sama sekali, tidak diizinkan berjalan. Untuk mengaktifkan booting aman, Anda harus menyetel jenis bootloader VM ke uefi.

vTPM adalah trusted platform module virtual. Lihat https://trustedcomputinggroup.org/trusted-platform-module-tpm-summary/ untuk mengetahui informasi selengkapnya tentang vTPM. Chip ini adalah chip komputer khusus yang dapat Anda gunakan untuk melindungi objek, seperti kunci dan sertifikat, yang Anda gunakan untuk mengautentikasi akses ke sistem Anda. Anda juga dapat menggunakan vTPM untuk melindungi secret melalui perlindungan atau penyegelan. Untuk mengetahui informasi selengkapnya tentang penyimpanan tertutup, lihat https://en.wikipedia.org/wiki/Trusted_Computing#SEALED-STORAGE. Lihat project Go-TPM di GitHub - https://github.com/google/go-tpm - untuk contoh bahasa Go yang mengilustrasikan cara menggunakan vTPM untuk tujuan ini.

Sebelum memulai

Untuk menggunakan perintah antarmuka command line (CLI) gdcloud, pastikan Anda telah mendownload, menginstal, dan mengonfigurasi CLI gdcloud. Semua perintah untuk Distributed Cloud menggunakan CLI gdcloud atau kubectl, dan memerlukan lingkungan sistem operasi (OS).

Mendapatkan jalur file kubeconfig

Untuk menjalankan perintah terhadap server Management API, pastikan Anda memiliki resource berikut:

  1. Login dan buat file kubeconfig untuk server Management API jika Anda belum memilikinya.

  2. Gunakan jalur ke file kubeconfig server Management API untuk menggantikan MANAGEMENT_API_SERVER dalam petunjuk ini.

Meminta izin dan akses

Untuk melakukan tugas yang tercantum di halaman ini, Anda harus memiliki peran ProjectVirtualMachine Admin. Ikuti langkah-langkah untuk memverifikasi bahwa Anda memiliki peran Project VirtualMachine Admin (project-vm-admin) di namespace project tempat VM berada.

Aktifkan booting aman

Aktifkan booting aman untuk VM. Gunakan petunjuk berikut untuk VM yang disebut VM_NAME di namespace project (PROJECT_NAMESPACE).

  1. Perbarui resource kustom VM Anda untuk mengaktifkan booting aman:

    kubectl --kubeconfig MANAGEMENT_API_SERVER patch virtualmachines.virtualmachine.gdc.goog VM_NAME -n PROJECT_NAMESPACE --type merge --patch $'
    spec:
     shieldConfig:
       bootType: uefi
       enableSecureBoot: true
    '
    
  2. Jika VM sedang berjalan, mulai ulang menggunakan petunjuk untuk memulai ulang VM.

  3. Pastikan Anda telah mengaktifkan booting aman. Buat koneksi SSH ke VM Anda dan jalankan perintah berikut:

    mokutil --sb-state
    

    Jika Anda telah berhasil mengaktifkan boot aman, perintah akan menampilkan SecureBoot enabled.

    Jika alat mokutil melaporkan bahwa Anda belum mengaktifkan booting aman, ikuti langkah-langkah di bagian Memecahkan masalah konfigurasi booting aman.

Memecahkan masalah konfigurasi booting aman

  1. Buka resource kustom VM Anda di editor:

    kubectl --kubeconfig MANAGEMENT_API_SERVER edit virtualmachines.virtualmachine.gdc.goog VM_NAME -n PROJECT_NAMESPACE
    
  2. Cari kolom atau nilai yang tidak ada seperti yang ditunjukkan di kolom spec di "Jalankan perintah berikut". Kolom ini wajib diisi.

  3. Jika ada yang tidak ada atau salah, edit spec untuk menambahkan kolom yang tidak ada dan memperbaiki nilai yang salah.

  4. Simpan file.

  5. Ikuti langkah-langkah di Mulai ulang VM.

Jika langkah-langkah sebelumnya tidak menyelesaikan masalah Anda, periksa dokumentasi yang sesuai dengan sistem operasi (OS) VM untuk memverifikasi bahwa versi OS mendukung booting aman.

Mengaktifkan virtual trusted platform module (vTPM)

Aktifkan vTPM untuk VM. Gunakan petunjuk berikut untuk VM yang disebut VM_NAME di namespace project (PROJECT_NAMESPACE).

  1. Perbarui resource kustom VM Anda untuk mengaktifkan vTPM:

    kubectl --kubeconfig MANAGEMENT_API_SERVER patch virtualmachines.virtualmachine.gdc.goog VM_NAME -n PROJECT_NAMESPACE --type merge --patch $'
    spec:
       shieldConfig:
          enableVtpm: true
    '
    
  2. Jika VM sedang berjalan, mulai ulang VM menggunakan petunjuk untuk memulai ulang VM.

  3. Pastikan Anda telah mengaktifkan vTPM. Buat koneksi SSH ke VM Anda dan jalankan perintah berikut:

    dmesg | grep -i tpm
    

    Jika Anda berhasil mengaktifkan vTPM, perintah akan menampilkan Modul TPM sebagai bagian dari tabel ACPI. Outputnya terlihat mirip dengan yang berikut ini:

    [    7.620985] tpm_tis MSFT0101:00: 2.0 TPM (device-id 0x1, rev-id 1)
    

    Jika ACPI tables tidak menampilkan modul TPM, ikuti langkah-langkah di bagian Memecahkan masalah konfigurasi vTPM.

Memecahkan masalah konfigurasi vTPM

  1. Buka resource kustom VM Anda di editor:

    kubectl --kubeconfig MANAGEMENT_API_SERVER edit virtualmachines.virtualmachine.gdc.goog VM_NAME -n PROJECT_NAMESPACE
    
  2. Cari kolom atau nilai yang tidak ada seperti yang ditunjukkan di kolom spec di Jalankan perintah berikut. Kolom ini wajib diisi.

  3. Jika ada yang tidak ada atau salah, edit spec untuk menambahkan kolom yang tidak ada dan memperbaiki nilai yang salah.

  4. Simpan file.

  5. Ikuti langkah-langkah di Mulai ulang VM.

Jika langkah-langkah sebelumnya tidak menyelesaikan masalah Anda, periksa dokumentasi yang sesuai dengan sistem operasi (OS) VM untuk memverifikasi bahwa versi OS mendukung vTPM.