Membuat shielded image kustom

Topik ini menjelaskan cara menyiapkan disk, membuat sertifikat keamanan, dan mengaktifkan fitur sistem operasi (OS) yang diperlukan untuk membuat image terlindungi khusus.

Secara default, Shielded VM mendukung Container-Optimized OS, berbagai distribusi Linux, dan beberapa versi Windows Server. Namun, jika memerlukan image kustom untuk aplikasi, Anda masih dapat memanfaatkan Shielded VM.

Menyiapkan disk

Shielded VM mengandalkan firmware Interface yang mematuhi Unified Extensible Firmware Interface (UEFI) untuk mendukung fitur seperti Booting Aman. Shielded VM memerlukan skema GUID Partition Table (GPT); master boot record (MBR) tidak didukung.

Disk harus memiliki minimal dua partisi:

  • EFI System Partition (ESP): 100 megabyte (MB) cukup untuk partisi ini, dan hanya sebagai saran. Anda dapat membuat partisi yang lebih besar jika perlu. Satu-satunya persyaratan untuk ESP adalah bahwa ESP harus diformat dengan sistem file Tabel Alokasi File (FAT).
  • Partisi OS: Sisa disk. Partisi ini berisi boot OS (Linux atau Windows). Tidak ada batasan ukuran partisi ini.

Anda dapat membuat lebih banyak partisi data sesuai kebutuhan.

Menyalin OS ke partisi OS

Setelah disk diformat dan dipartisi dengan benar, salin file OS ke partisi OS. OS memiliki boot loader yang harus berada di jalur yang valid pada ESP, seperti yang ditetapkan dalam spesifikasi UEFI: \EFI\Boot\bootx64.efi. Perhatikan bahwa Anda mungkin perlu menyalin boot loader OS ke lokasi yang ditentukan.

Untuk Windows, terdapat perintah yang disebut bcdboot yang dapat digunakan untuk menyalin boot loader OS ke lokasi yang benar, selain tindakan lain yang diperlukan Windows (seperti menyalin penyimpanan BCD). Untuk informasi selengkapnya, lihat Opsi Command Line BCDBoot di Microsoft Hardware Dev Center.

Saat menggunakan image Shielded VM, Anda juga dapat memanfaatkan dua fitur keamanan tambahan: Trusted Platform Module (vTPM) virtual dan pemantauan integritas. Bagian berikut menguraikan manfaat fitur-fitur ini dan persyaratan OS.

Virtual Trusted Platform Module (vTPM)

Modul platform tepercaya adalah perangkat khusus untuk melindungi objek, seperti kunci dan sertifikat, yang Anda gunakan untuk mengautentikasi akses ke sistem. Pada image VM yang Dilindungi, versi virtual perangkat TPM digunakan untuk mengaktifkan Booting Terukur. Secara singkat, Booting Terukur memastikan integritas jalur pemuatan penting dari driver booting dan kernel. vTPM dan Booting Terukur dibahas secara lebih mendetail dalam dokumentasi Shielded VM.

Untuk memanfaatkan vTPM dan Boot Terukur, diperlukan pengemudi. Versi OS minimum dengan dukungan TPM 2.0 adalah:

  • Windows Server 2012
  • Linux versi 3.20
  • Red Hat Enterprise Linux 7.3

Pemantauan integritas

Pemantauan integritas memberikan cara untuk memahami dan membuat keputusan tentang status instance VM Anda. Monitoring menggunakan data yang dihasilkan oleh Boot terukur untuk melaporkan instance VM. Dokumentasi Shielded VM memiliki informasi selengkapnya tentang pemantauan integritas dan mengotomatiskan respons terhadap kegagalan validasi integritas.

Untuk mendukung fitur pemantauan integritas Shielded VM, gambar harus menghasilkan sinyal integritas:

  • Windows menghasilkan sinyal integritas secara default.
  • Linux harus menginstal dan mengaktifkan modul Integrity Measurement Architecture (IMA). Modul harus memiliki CONFIG_IMA_MEASURE_PCR_IDX yang ditetapkan ke 10. Nilai ini adalah nilai default untuk modul IMA.

Mengimpor disk image ke Compute Engine

Setelah gambar disiapkan, Anda harus mengupload gambar ke Compute Engine. Guna mengetahui langkah-langkah yang diperlukan untuk mengupload image ke Google Cloud, lihat Mengimpor boot disk image ke Compute Engine.

Menyiapkan sertifikat untuk Booting Aman

Saat menambahkan image VM Terlindungi, serangkaian sertifikat publik dan database Booting Aman akan diteruskan ke Compute Engine. File ini disimpan dalam variabel UEFI yang sesuai dan digunakan untuk membangun hubungan kepercayaan antara platform, firmware, dan OS. Sertifikat adalah sertifikat X.509 yang dienkode menggunakan Distinguished Encoding Rules (DER). Database ini dapat berupa sertifikat atau biner mentah. Total ada empat nilai:

  • Kunci Platform (pk): Kunci yang digunakan untuk menetapkan hubungan kepercayaan antara pemilik platform dan firmware. Anda hanya dapat menentukan satu kunci platform, dan kunci tersebut harus berupa sertifikat X.509 yang valid.
  • Kunci Pertukaran Kunci (kek): Kunci yang digunakan untuk membuat hubungan kepercayaan antara firmware dan OS. Anda dapat menentukan beberapa kunci untuk nilai ini.
  • Forbidden Key Database (dbx): Database sertifikat yang telah dicabut dan akan menyebabkan sistem berhenti booting jika file booting ditandatangani dengan salah satunya. Anda dapat menentukan satu atau beberapa nilai untuk nilai ini.
  • Key Database (db): Database sertifikat yang tepercaya dan dapat digunakan untuk menandatangani file booting. Anda dapat menentukan satu atau beberapa nilai untuk nilai ini.

Spesifikasi UEFI berisi informasi selengkapnya tentang nilai ini dan cara kerjanya.

Pada contoh berikut, OpenSSL digunakan untuk membuat sertifikat dan kunci Booting Aman.

  • Membuat pasangan kunci RSA 2048-bit

      $ openssl genrsa -out secure-boot-key.rsa 2048
    
  • Buat sertifikat X.509 yang ditandatangani sendiri dari kunci dalam format DER

      $ openssl req -new -x509 -sha256 -subj '/CN=secure-boot' -key secure-boot-key.rsa
      -outform DER -out secure-boot-cert.pem
    

Menambahkan shielded image ke Google Cloud

Dengan menggunakan gambar dan sertifikat yang diupload, sekarang Anda dapat menambahkan image ke Compute Engine. Image ini dapat ditambahkan menggunakan Google Cloud CLI atau Compute Engine API.

gcloud

Tambahkan image kustom ke Compute Engine:

gcloud compute images create [IMAGE_NAME] \
--source-disk [SOURCE_DISK] \
--source-disk-zone [ZONE] \
--platform-key-file=<file.der> \
--key-exchange-key-file=<file.der> \
--signature-database-file=<file.bin>,<file.der> \
--forbidden-database-file=<file.bin> \
--guest-os-features="UEFI_COMPATIBLE[,WINDOWS]"

dengan:

  • [IMAGE_NAME] adalah nama untuk gambar baru.
  • [SOURCE_DISK] adalah disk tempat Anda ingin membuat image baru.
  • [ZONE] adalah zona tempat disk berada.

Opsi WINDOWS untuk guest-os-features hanya diperlukan saat menggunakan image Windows. Untuk mengetahui informasi selengkapnya tentang pembuatan gambar, lihat referensi gcloud create.

API

Ikuti petunjuk untuk membuat image dari persistent disk, tetapi tentukan initial_state_config dalam isi permintaan.

...
"sourceDisk": "/zones/[ZONE]/disks/[SOURCE_DISK]",

"initial_state_config": {
    "pk": {
        "content": [KEY],
        "fileType": [BIN,X509]
    },
    "keks": [
        {
            "content": [KEY],
            "fileType": [BIN,X509]
        },
        ...
    ],
    "dbxs": [
        {
            "content": [KEY],
            "fileType": [BIN,X509]
        },
        ...
    ],
    "dbs": [
        {
            "content": [KEY],
            "fileType": [BIN,X509]
        },
        ...
    ]
}

Sertifikat default

Perhatikan bahwa pk, keks, dbxs, dan dbs adalah kolom opsional. Jika Anda memberikan konfigurasi status awal, beberapa atau semua kolom ini mungkin tidak disetel. Saat instance baru dibuat dari image, Google Cloud memberikan nilai default untuk PK, KEK, db, dan dbx kecuali jika nilai kustom ditetapkan pada setiap isian yang tidak ditetapkan. Jika Anda tidak memberikan konfigurasi status awal (artinya, konfigurasi tidak ada, bukan hanya kosong), gambar akan memiliki konfigurasi status awal gambar sumber.

Nilai default kolom ini adalah:

  • PK: Sertifikat yang terkait dengan kunci pribadi default yang dibuat oleh Google.
  • KEK: Sertifikat Microsoft KEK default. Download dari Microsoft: MicCorKEKCA2011_2011-06-24.crt.
  • dbx: Daftar pencabutan Microsoft DBX default. Download dari Unified Extensible Firmware Interface Forum: File daftar pencabutan UEFI
  • db: Dua sertifikat berikut:
    • Microsoft Windows Production PCA 2011 dengan Hash Sertifikat SHA-1 dari 58 0a 6f 4c c4 e4 b6 69 b9 eb dc 1b 2b 3e 08 7b 80 d0 67 8d. Download dari Microsoft: MicWinProPCA2011_2011-10-19.crt.
    • Microsoft Corporation UEFI CA 2011 dengan Hash Sertifikat SHA-1 46 de f6 3b 5c e6 1c f8 ba 0d e2 e6 63 9c 10 19 d0 ed 14 f3. Download dari Microsoft: MicCorUEFCA2011_2011-06-27.crt.

Hati-hati, karena menambahkan sertifikat sendiri akan menimpa sertifikat default, bukan menggabungkannya dengan sertifikat yang Anda berikan.