Topik ini memberikan informasi tentang cara mengenkripsi disk dengan kunci enkripsi yang disediakan pelanggan.
Untuk mengetahui informasi tentang enkripsi disk, lihat Tentang enkripsi disk.
Untuk informasi tentang mengenkripsi {i>disk<i} dengan kunci enkripsi yang dikelola pelanggan (Customer-Managed Encryption Key/CMEK), lihat Lindungi resource dengan menggunakan kunci Cloud KMS.
Dengan CSEK, Anda dapat menyediakan kunci enkripsi dan Compute Engine kunci Anda untuk melindungi kunci buatan Google yang digunakan untuk mengenkripsi dan mendekripsi memahami data Anda. Hanya pengguna yang dapat memberikan kunci yang benar yang dapat menggunakan resource yang dilindungi dengan kunci enkripsi yang disediakan pelanggan (CSEK).
Google tidak menyimpan kunci Anda di servernya dan tidak dapat mengakses data yang Anda lindungi kecuali jika Anda memberikan kuncinya. Hal ini juga berarti bahwa, jika Anda lupa atau kehilangan kunci, Google tidak dapat memulihkan kunci tersebut atau memulihkan data apa pun yang dienkripsi dengannya.
Saat Anda menghapus persistent disk, Google akan menghapus kunci cipher, sehingga data menjadi tidak dapat diambil. Proses ini tidak dapat diurungkan.
Sebelum memulai
- Baca tentang disk, gambar, dan snapshot disk.
-
Jika Anda belum melakukannya, siapkan autentikasi.
Authentication adalah
proses yang digunakan untuk memverifikasi identitas Anda agar dapat mengakses layanan dan API Google Cloud.
Untuk menjalankan kode atau sampel dari lingkungan pengembangan lokal, Anda dapat mengautentikasi 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
-
Instal Google Cloud CLI, lalu initialize dengan menjalankan perintah berikut:
gcloud init
- Menetapkan region dan zona default.
Python
Untuk menggunakan contoh Python di halaman ini dari lingkungan pengembangan lokal, instal dan lakukan inisialisasi gcloud CLI, lalu siapkan Kredensial Default Aplikasi dengan kredensial pengguna Anda.
- Menginstal Google Cloud CLI.
-
Untuk initialize gcloud CLI, jalankan perintah berikut:
gcloud init
-
Buat kredensial autentikasi lokal untuk Akun Google Anda:
gcloud auth application-default login
Untuk informasi selengkapnya, lihat Siapkan autentikasi untuk lingkungan pengembangan lokal.
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
-
Pembatasan
Untuk CSEK, batasan berikut berlaku:
Batasan umum
Ketersediaan kunci enkripsi yang disediakan pelanggan bergantung pada lokasi akun penagihan Anda, bukan lokasi resource.
Kunci enkripsi yang disediakan pelanggan tidak tersedia untuk akun penagihan yang berada di negara berikut:
- Brasil
- India
Batasan teknis
Anda hanya dapat mengenkripsi persistent disk baru dengan kunci Anda sendiri. Anda tidak dapat mengenkripsi persistent disk yang sudah ada dengan kunci Anda sendiri.
Anda tidak dapat menggunakan kunci Anda sendiri dengan disk SSD Lokal karena kunci dikelola oleh infrastruktur Google dan dihapus saat VM dihentikan.
Compute Engine tidak menyimpan kunci enkripsi dengan template instance, sehingga Anda perlu menyimpan kunci Anda sendiri di KMS untuk mengenkripsi disk di grup instance terkelola.
Anda tidak dapat menangguhkan instance yang memiliki disk yang dilindungi dengan CSEK.
Spesifikasi
Bagian ini menjelaskan spesifikasi enkripsi dan format CSEK.
Enkripsi
Compute Engine menggunakan kunci enkripsi Anda untuk melindungi kunci enkripsi Google dengan enkripsi AES-256.
Format kunci yang diperlukan
Andalah yang menentukan untuk membuat dan mengelola kunci. Anda harus memasukkan kunci yang string 256-bit yang dienkode dalam RFC 4648 standar base64 ke Compute Engine.
Berikut adalah contoh kunci berenkode base64, yang dihasilkan dengan string "Hello from Google Cloud Platform".
SGVsbG8gZnJvbSBHb29nbGUgQ2xvdWQgUGxhdGZvcm0=
Kunci ini dapat dihasilkan menggunakan skrip berikut:
read -sp "String:" ; \ [[ ${#REPLY} == 32 ]] && \ echo "$(echo -n "$REPLY" | base64)" || \ (>&2 echo -e "\nERROR:Wrong Size"; false)
Penggabungan kunci RSA
Selain mengenkode kunci dalam base64, Anda juga dapat menggabungkan kunci menggunakan public key certificate RSA yang disediakan oleh Google, mengenkode kunci tersebut dalam base64, lalu menggunakannya dalam permintaan Anda.
Penggabungan RSA adalah proses di mana Anda menggunakan kunci publik untuk mengenkripsi data Anda. Setelah dienkripsi dengan kunci publik, data hanya dapat didekripsi oleh kunci pribadi yang terkait. Dalam hal ini, kunci pribadi hanya diketahui oleh layanan Google Cloud. Dengan menggabungkan kunci menggunakan sertifikat RSA, Anda memastikan bahwa hanya layanan Google Cloud yang dapat membuka kunci Anda dan menggunakannya untuk melindungi data Anda.
Untuk mengetahui informasi selengkapnya, lihat Enkripsi RSA.
Agar dapat membuat kunci yang digabungkan RSA untuk Compute Engine, lakukan langkah berikut:
- Gabung kunci Anda menggunakan kunci publik yang diberikan dalam sertifikat yang dikelola Compute Engine. Pastikan untuk menggabung kunci Anda menggunakan padding OAEP, bukan padding PKCS #1 v1.5.
- Enkode kunci yang digabungkan RSA menggunakan encoding base64 standar.
Download sertifikat publik yang dikelola oleh Compute Engine dari:
https://cloud-certs.storage.googleapis.com/google-cloud-csek-ingress.pem
Ada banyak cara untuk menghasilkan dan menggabungkan RSA kunci Anda; menggunakan metode yang familier. Berikut ini dua contoh penggabungan RSA kunci yang dapat Anda gunakan.
Contoh 1
Petunjuk berikut menggunakan openssl utilitas command line ke RSA {i> wrap<i} dan mengenkode kunci.
Opsional: Hasilkan kunci acak 256 bit (32 byte). Jika sudah memiliki kunci yang ingin digunakan, Anda dapat melewati langkah ini. Ada banyak cara untuk menghasilkan kunci. Contoh:
$ head -c 32 /dev/urandom | LC_CTYPE=C tr '\n' = > mykey.txt
Download public key certificate:
$ curl -s -O -L https://cloud-certs.storage.googleapis.com/google-cloud-csek-ingress.pem
Ekstrak kunci publik dari sertifikat:
$ openssl x509 -pubkey -noout -in google-cloud-csek-ingress.pem > pubkey.pem
Gabungkan RSA kunci Anda. Pastikan untuk mengganti
mykey.txt
dengan file kunci Anda sendiri.$ openssl rsautl -oaep -encrypt -pubin -inkey pubkey.pem -in mykey.txt -out rsawrappedkey.txt
Enkode kunci yang digabungkan RSA menggunakan base64.
$ openssl enc -base64 -in rsawrappedkey.txt | tr -d '\n' | sed -e '$a\' > rsawrapencodedkey.txt
Contoh 2
Berikut ini adalah contoh skrip Python yang menghasilkan karakter acak 256-bit (32-byte) dan membuat kunci yang dibungkus RSA berenkode base64 menggunakan kriptografi {i>library<i}:
Kunci Anda sekarang siap digunakan!
Menggunakan kunci yang digabungkan RSA
Dengan Google Cloud CLI, Anda dapat memberikan kunci reguler dan kunci yang digabungkan RSA melalui cara yang sama.
Di API, gunakan properti sha256
, bukan rawKey
, jika Anda ingin menggunakan kunci yang digabungkan RSA.
Mengenkripsi resource dengan CSEK menggunakan alat command line
Penyiapan
Kunci enkripsi dapat digunakan melalui Google Cloud CLI.
File kunci
Saat menggunakan alat command line gcloud compute
untuk menyetel kunci, Anda menyediakan kunci yang dienkode menggunakan file kunci yang berisi kunci berenkode sebagai daftar JSON. Sebuah file kunci dapat berisi beberapa kunci, sehingga Anda dapat mengelola banyak kunci di satu tempat. Atau, Anda dapat membuat file kunci tunggal untuk menangani setiap kunci secara terpisah. File kunci hanya dapat digunakan dengan gcloud CLI.
Saat menggunakan REST, Anda harus menyediakan kunci langsung dalam permintaan.
Setiap entri dalam file kunci harus memberikan:
- URI yang sepenuhnya memenuhi syarat ke resource yang dilindungi oleh kunci
- Kunci yang terkait
- Jenis kunci,
raw
ataursa-encrypted
Saat Anda menggunakan file kunci dalam permintaan, alat ini akan mencari resource yang cocok dan menggunakan kunci terkaitnya. Jika tidak ditemukan resource yang cocok, permintaan akan gagal.
Contoh file kunci terlihat seperti ini:
[ { "uri": "https://www.googleapis.com/compute/v1/projects/myproject/zones/us-central1-a/disks/example-disk", "key": "acXTX3rxrKAFTF0tYVLvydU1riRZTvUNC4g5I11NY+c=", "key-type": "raw" }, { "uri": "https://www.googleapis.com/compute/v1/projects/myproject/global/snapshots/my-private-snapshot", "key": "ieCx/NcW06PcT7Ep1X6LUTc/hLvUDYyzSZPPVCVPTVEohpeHASqC8uw5TzyO9U+Fka9JFHz0mBibXUInrC/jEk014kCK/NPjYgEMOyssZ4ZINPKxlUh2zn1bV+MCaTICrdmuSBTWlUUiFoDD6PYznLwh8ZNdaheCeZ8ewEXgFQ8V+sDroLaN3Xs3MDTXQEMMoNUXMCZEIpg9Vtp9x2oeQ5lAbtt7bYAAHf5l+gJWw3sUfs0/Glw5fpdjT8Uggrr+RMZezGrltJEF293rvTIjWOEB3z5OHyHwQkvdrPDFcTqsLfh+8Hr8g+mf+7zVPEC8nEbqpdl3GPv3A7AwpFp7MA==", "key-type": "rsa-encrypted" } ]
Praktik terbaik untuk mengelola file kunci
Jika Anda menggunakan file kunci, berikan akses ke file tersebut hanya kepada pengguna yang membutuhkannya. Pastikan untuk menetapkan izin yang sesuai pada file ini dan pertimbangkan untuk mengenkripsi file tersebut menggunakan alat tambahan:
- Di Windows, pertimbangkan untuk menggunakan BitLocker atau Encrypting File System (EFS).
- Di macOS, pertimbangkan untuk menggunakan FileVault 2.
- Di Linux, pertimbangkan Penyiapan Kunci Terpadu Linux (LUKS) atau eCryptfs.
Mengenkripsi persistent disk baru dengan CSEK
Anda dapat mengenkripsi persistent disk baru dengan menyediakan kunci selama pembuatan VM atau disk.
Konsol
Buka halaman Disks.
Klik Create disk dan masukkan properti untuk disk baru.
Di bagian Encryption, pilih Customer-supplied key.
Berikan kunci enkripsi untuk disk di kotak teks, lalu pilih Wrapped key jika kunci telah digabung dengan kunci RSA publik.
gcloud
Pada alat gcloud compute
, enkripsi disk menggunakan flag --csek-key-file
selama pembuatan VM. Jika Anda menggunakan kunci yang digabungkan RSA, gunakan komponen gcloud beta
:
gcloud (beta) compute instances create example-instance --csek-key-file example-file.json
Untuk mengenkripsi persistent disk mandiri:
gcloud (beta) compute disks create example-disk --csek-key-file example-file.json
REST
Anda dapat mengenkripsi disk dengan
menggunakan properti diskEncryptionKey
dan membuat
permintaan ke API v1 untuk kunci mentah (yang digabungkan bukan RSA), atau ke
API beta untuk kunci yang digabungkan RSA. Sediakan salah satu properti berikut dalam permintaan Anda:
rawKey
: jika kunci Anda dienkode base64rsaEncryptedKey
: jika kunci Anda digabungkan RSA dan dienkode base64
Misalnya, untuk mengenkripsi disk baru selama pembuatan VM menggunakan kunci yang digabungkan RSA:
POST https://compute.googleapis.com/compute/beta/projects/myproject/zones/us-central1-a/instances { "machineType": "zones/us-central1-a/machineTypes/e2-standard-2", "disks": [ { "type": "PERSISTENT", "diskEncryptionKey": { "rsaEncryptedKey": "ieCx/NcW06PcT7Ep1X6LUTc/hLvUDYyzSZPPVCVPTVEohpeHASqC8uw5TzyO9U+Fka9JFHz0mBibXUInrC/jEk014kCK/NPjYgEMOyssZ4ZINPKxlUh2zn1bV+MCaTICrdmuSBTWlUUiFoDD6PYznLwh8ZNdaheCeZ8ewEXgFQ8V+sDroLaN3Xs3MDTXQEMMoNUXMCZEIpg9Vtp9x2oeQ5lAbtt7bYAAHf5l+gJWw3sUfs0/Glw5fpdjT8Uggrr+RMZezGrltJEF293rvTIjWOEB3z5OHyHwQkvdrPDFcTqsLfh+8Hr8g+mf+7zVPEC8nEbqpdl3GPv3A7AwpFp7MA==" }, "initializeParams": { "sourceImage": "projects/debian-cloud/global/images/debian-9-stretch-v20170619" }, "boot": true } ], ... }
Demikian pula, Anda juga dapat menggunakan REST untuk membuat dan mengenkripsinya dengan kunci Anda sendiri:
POST https://compute.googleapis.com/compute/beta/projects/myproject/zones/ us-central1-a/disks?sourceImage=https%3A%2F%2Fwww.googleapis.com%2Fcompute%2F alpha%2Fprojects%2Fdebian-cloud%2Fglobal%2Fimages%2Fdebian-9-stretch-v20170619 { "name": "new-encrypted-disk-key", "diskEncryptionKey": { "rsaEncryptedKey": "ieCx/NcW06PcT7Ep1X6LUTc/hLvUDYyzSZPPVCVPTVEohpeHASqC8uw5TzyO9U+Fka9JFHz0mBibXUInrC/jEk014kCK/NPjYgEMOyssZ4ZINPKxlUh2zn1bV+MCaTICrdmuSBTWlUUiFoDD6PYznLwh8ZNdaheCeZ8ewEXgFQ8V+sDroLaN3Xs3MDTXQEMMoNUXMCZEIpg9Vtp9x2oeQ5lAbtt7bYAAHf5l+gJWw3sUfs0/Glw5fpdjT8Uggrr+RMZezGrltJEF293rvTIjWOEB3z5OHyHwQkvdrPDFcTqsLfh+8Hr8g+mf+7zVPEC8nEbqpdl3GPv3A7AwpFp7MA==" }, "type": "zones/us-central1-a/diskTypes/pd-standard" }
Membuat snapshot dari disk yang dienkripsi dengan CSEK
Jika Anda membuat snapshot dari disk terenkripsi, snapshot tersebut juga harus dienkripsi. Anda harus menentukan kunci untuk mengenkripsi snapshot. Anda tidak dapat mengonversi disk terenkripsi atau snapshot terenkripsi untuk menggunakan enkripsi default Compute Engine, kecuali jika Anda membuat disk image baru dan persistent disk baru.
Snapshot disk yang dienkripsi dengan CSEK selalu merupakan snapshot lengkap. Beda halnya dengan snapshot disk yang dienkripsi dengan kunci enkripsi yang dikelola pelanggan (CMEK), yang sifatnya inkremental. Harga snapshot dihitung berdasarkan ukuran total snapshot, sehingga harga snapshot lengkap mungkin lebih mahal daripada snapshot inkremental.
Untuk membuat snapshot persistent disk dari disk terenkripsi, permintaan pembuatan snapshot harus menyediakan kunci enkripsi yang digunakan untuk mengenkripsi persistent disk.
Tinjau Praktik terbaik untuk snapshot persistent disk sebelum membuat snapshot.
Konsol
Buka halaman Snapshots.
Klik Create snapshot.
Pada Source disk, pilih disk terenkripsi yang ingin Anda buat snapshot-nya.
Berikan kunci enkripsi untuk disk di kotak teks, lalu pilih Wrapped key jika kunci telah digabung dengan kunci RSA publik.
Enkripsi snapshot baru dengan menyediakan kunci enkripsi tambahan di bagian Encryption.
REST
Untuk membuat permintaan, sediakan properti sourceDiskEncryptionKey
yang akan diakses
persistent disk sumber. Anda harus mengenkripsi snapshot baru menggunakan properti snapshotEncryptionKey
.
Membuat permintaan ke API v1 untuk kunci mentah (yang digabungkan bukan RSA), atau ke API beta untuk kunci yang digabungkan RSA.
POST https://compute.googleapis.com/compute/beta/projects/myproject/zones/us-central1-a/disks/example-disk/createSnapshot { "snapshotEncryptionKey": { "rsaEncryptedKey": "ieCx/NcW06PcT7Ep1X6LUTc/hLvUDYyzSZPPVCVPTVEohpeHASqC8uw5TzyO9U+Fka9JFHz0mBibXUInrC/jEk014kCK/NPjYgEMOyssZ4ZINPKxlUh2zn1bV+MCaTICrdmuSBTWlUUiFoDD6PYznLwh8ZNdaheCeZ8ewEXgFQ8V+sDroLaN3Xs3MDTXQEMMoNUXMCZEIpg9Vtp9x2oeQ5lAbtt7bYAAHf5l+gJWw3sUfs0/Glw5fpdjT8Uggrr+RMZezGrltJEF293rvTIjWOEB3z5OHyHwQkvdrPDFcTqsLfh+8Hr8g+mf+7zVPEC8nEbqpdl3GPv3A7AwpFp7MA==" }, "sourceDiskEncryptionKey": { "rsaEncryptedKey": "ieCx/NcW06PcT7Ep1X6LUTc/hLvUDYyzSZPPVCVPTVEohpeHASqC8uw5TzyO9U+Fka9JFHz0mBibXUInrC/jEk014kCK/NPjYgEMOyssZ4ZINPKxlUh2zn1bV+MCaTICrdmuSBTWlUUiFoDD6PYznLwh8ZNdaheCeZ8ewEXgFQ8V+sDroLaN3Xs3MDTXQEMMoNUXMCZEIpg9Vtp9x2oeQ5lAbtt7bYAAHf5l+gJWw3sUfs0/Glw5fpdjT8Uggrr+RMZezGrltJEF293rvTIjWOEB3z5OHyHwQkvdrPDFcTqsLfh+8Hr8g+mf+7zVPEC8nEbqpdl3GPv3A7AwpFp7MA==" }, "name": "snapshot-encrypted-disk" }
Properti sourceDiskEncryptionKey
harus cocok dengan kunci yang digunakan untuk mengenkripsi persist disk. Jika tidak, permintaan akan gagal.
snapshotEncryptionKey
memungkinkan Anda menyediakan kunci untuk
snapshot-nya sehingga jika snapshot-nya digunakan untuk membuat
{i>disk<i}, kunci yang sesuai harus diberikan. Kunci ini harus mengikuti format kunci sebelumnya. Anda juga dapat memilih untuk tidak menentukan properti ini dan snapshot dapat digunakan untuk membuat persistent disk baru tanpa memerlukan kunci.
Membuat image baru dari disk atau image kustom yang dienkripsi dengan CSEK
Anda dapat membuat image kustom dari persistent disk terenkripsi atau menyalin image terenkripsi. Anda tidak dapat menggunakan Konsol Google Cloud untuk menyalin image. Gunakan Google Cloud CLI atau REST untuk menyalin gambar.
Konsol
Buka halaman Images.
Klik Create image.
Pada Source disk, pilih disk terenkripsi yang ingin Anda buat image-nya.
Di bagian Encryption, pilih solusi pengelolaan kunci enkripsi.
Jika kunci telah digabungkan dengan kunci RSA publik, pilih Wrapped key.
gcloud
Ikuti petunjuk untuk membuat image, dan tambahkan flag --csek-key-file
dengan jalur ke file kunci enkripsi untuk objek sumber yang dienkripsi. Gunakan komponen gcloud beta
jika Anda menggunakan kunci yang digabungkan RSA:
gcloud (beta) compute images create .... --csek-key-file example-file.json
Jika ingin mengenkripsi image baru dengan kunci Anda, tambahkan kunci tersebut ke file kunci:
[ { "uri": "https://www.googleapis.com/compute/v1/projects/myproject/zones/us-central1-a/disks/source-disk", "key": "acX3RqzxrKAFTF0tYVLvydU1riRZTvUNC4g5I11NY-c=", "key-type": "raw" }, { "uri": "https://www.googleapis.com/compute/v1/projects/myproject/global/snapshots/the-new-image", "key": "TF0t-cSfl7CT7xRF1LTbAgi7U6XXUNC4zU_dNgx0nQc=", "key-type": "raw" } ]
REST
Permintaan pembuatan API Anda harus berisi properti kunci enkripsi untuk objek sumber. Misalnya, sertakan salah satu properti berikut, bergantung pada jenis objek sumber:
- Persistent disk:
sourceDiskEncryptionKey
- Image:
sourceImageEncryptionKey
Sertakan juga properti rawKey
atau rsaEncryptedKey
, bergantung pada jenis kunci. Buat permintaan ke API v1 untuk kunci mentah (tidak digabungkan RSA), atau ke API Beta untuk kunci yang digabungkan RSA. Contoh berikut mengonversi persistent disk yang dienkripsi dan digabungkan RSA menjadi image yang menggunakan kunci enkripsi yang sama.
POST https://compute.googleapis.com/compute/beta/projects/myproject/global/images { "name": "image-encrypted-disk", "sourceDiskEncryptionKey": { "rsaEncryptedKey": "ieCx/NcW06PcT7Ep1X6LUTc/hLvUDYyzSZPPVCVPTVEohpeHASqC8uw5TzyO9U+Fka9JFHz0mBibXUInrC/jEk014kCK/NPjYgEMOyssZ4ZINPKxlUh2zn1bV+MCaTICrdmuSBTWlUUiFoDD6PYznLwh8ZNdaheCeZ8ewEXgFQ8V+sDroLaN3Xs3MDTXQEMMoNUXMCZEIpg9Vtp9x2oeQ5lAbtt7bYAAHf5l+gJWw3sUfs0/Glw5fpdjT8Uggrr+RMZezGrltJEF293rvTIjWOEB3z5OHyHwQkvdrPDFcTqsLfh+8Hr8g+mf+7zVPEC8nEbqpdl3GPv3A7AwpFp7MA==" } "imageEncryptionKey": { "rsaEncryptedKey": "ieCx/NcW06PcT7Ep1X6LUTc/hLvUDYyzSZPPVCVPTVEohpeHASqC8uw5TzyO9U+Fka9JFHz0mBibXUInrC/jEk014kCK/NPjYgEMOyssZ4ZINPKxlUh2zn1bV+MCaTICrdmuSBTWlUUiFoDD6PYznLwh8ZNdaheCeZ8ewEXgFQ8V+sDroLaN3Xs3MDTXQEMMoNUXMCZEIpg9Vtp9x2oeQ5lAbtt7bYAAHf5l+gJWw3sUfs0/Glw5fpdjT8Uggrr+RMZezGrltJEF293rvTIjWOEB3z5OHyHwQkvdrPDFcTqsLfh+8Hr8g+mf+7zVPEC8nEbqpdl3GPv3A7AwpFp7MA==" }, "sourceDisk": "projects/myproject/zones/us-central1-a/disks/source-disks" }
Properti imageEncryptionKey
(opsional) memungkinkan Anda menyediakan kunci untuk mengenkripsi image. Jadi, saat image digunakan untuk membuat persistent disk baru, kunci yang cocok harus disediakan. Kunci ini harus mengikuti format kunci yang sama seperti yang dijelaskan di atas. Anda juga dapat memilih untuk tidak menentukan properti ini dan image dapat digunakan untuk membuat persistent disk baru tanpa memerlukan kunci.
Mengenkripsi image yang diimpor dengan CSEK
Anda dapat mengenkripsi image baru saat mengimpor image kustom secara manual ke Compute Engine. Sebelum dapat mengimpor image, Anda harus membuat dan mengompresi file disk image serta mengupload file yang dikompresi tersebut ke Cloud Storage.
Impor image Compute Engine kustom yang ingin Anda enkripsi. Tentukan URI ke file yang dikompresi, lalu tentukan jalur ke file kunci enkripsi Anda.
Konsol
Buka halaman Images.
Klik Create image.
Pada Source, pilih Cloud Storage file.
Di bagian Cloud Storage file, masukkan Cloud Storage URI.
Di bagian Encryption, pilih Customer-provided key dan berikan kunci enkripsi untuk mengenkripsi gambar di dalam kotak teks.
gcloud
Gunakan perintah compute images create
untuk membuat image baru, dan tentukan flag --csek-key-file
dengan file kunci enkripsi. Jika Anda menggunakan kunci yang digabungkan RSA, gunakan komponen gcloud beta
:
gcloud (beta) compute images create [IMAGE_NAME] \ --source-uri gs://[BUCKET_NAME]/[COMPRESSED_FILE] \ --csek-key-file [KEY_FILE]
Ganti kode berikut:
[IMAGE_NAME]
: nama untuk image kustom baru.[BUCKET_NAME]
: nama bucket Cloud Storage yang menyimpan file image terkompresi.[COMPRESSED_FILE]
: nama file image terkompresi.[KEY_FILE]
: jalur ke file kunci enkripsi di workstation lokal Anda.
REST
Untuk mengenkripsi image baru yang dibuat dari file RAW, tambahkan properti imageEncryptionKey
baru ke permintaan pembuatan image, yang diikuti dengan rawKey
atau rsaEncryptedKey
. Buat permintaan ke API v1 untuk kunci mentah (tidak digabungkan RSA), atau ke API Beta untuk kunci yang digabungkan RSA.
POST https://compute.googleapis.com/compute/beta/projects/myproject/global/images { "rawDisk": { "source": "http://storage.googleapis.com/example-image/example-image.tar.gz" }, "name": "new-encrypted-image", "sourceType": "RAW", "imageEncryptionKey": { "rsaEncryptedKey": "ieCx/NcW06PcT7Ep1X6LUTc/hLvUDYyzSZPPVCVPTVEohpeHASqC8uw5TzyO9U+Fka9JFHz0mBibXUInrC/jEk014kCK/NPjYgEMOyssZ4ZINPKxlUh2zn1bV+MCaTICrdmuSBTWlUUiFoDD6PYznLwh8ZNdaheCeZ8ewEXgFQ8V+sDroLaN3Xs3MDTXQEMMoNUXMCZEIpg9Vtp9x2oeQ5lAbtt7bYAAHf5l+gJWw3sUfs0/Glw5fpdjT8Uggrr+RMZezGrltJEF293rvTIjWOEB3z5OHyHwQkvdrPDFcTqsLfh+8Hr8g+mf+7zVPEC8nEbqpdl3GPv3A7AwpFp7MA==" } }
Membuat persistent disk dari resource yang dienkripsi dengan CSEK
Membuat disk dari snapshot yang dienkripsi dengan CSEK
Konsol
Buka halaman Disks.
Klik Create disk.
Di bagian Source type, pilih Snapshot.
Di bagian Encryption, pilih solusi pengelolaan kunci enkripsi.
Jika kunci telah digabungkan dengan kunci RSA publik, pilih Wrapped key.
gcloud
Pada alat gcloud compute
, berikan kunci enkripsi untuk snapshot menggunakan flag --csek-key-file
saat Anda membuat disk. Jika Anda menggunakan kunci yang digabungkan RSA, gunakan komponen gcloud beta
:
gcloud (beta) compute disks create ... --source-snapshot example-snapshot --csek-key-file example-file.json
REST
Untuk menggunakan snapshot terenkripsi, berikan sourceSnapshotEncryptionKey
dalam permintaan Anda, diikuti dengan rawKey
atau rsaEncryptedKey
. Buat permintaan ke API v1 untuk kunci mentah (tidak digabungkan RSA), atau ke API Beta untuk kunci yang digabungkan RSA. Misalnya, ke persistent disk mandiri baru menggunakan snapshot terenkripsi:
POST https://compute.googleapis.com/compute/beta/projects/myproject/zones/us-central1-a/disks { "name": "disk-from-encrypted-snapshot", "sourceSnapshot": "global/snapshots/encrypted-snapshot", "sourceSnapshotEncryptionKey": { "rsaEncryptedKey": "ieCx/NcW06PcT7Ep1X6LUTc/hLvUDYyzSZPPVCVPTVEohpeHASqC8uw5TzyO9U+Fka9JFHz0mBibXUInrC/jEk014kCK/NPjYgEMOyssZ4ZINPKxlUh2zn1bV+MCaTICrdmuSBTWlUUiFoDD6PYznLwh8ZNdaheCeZ8ewEXgFQ8V+sDroLaN3Xs3MDTXQEMMoNUXMCZEIpg9Vtp9x2oeQ5lAbtt7bYAAHf5l+gJWw3sUfs0/Glw5fpdjT8Uggrr+RMZezGrltJEF293rvTIjWOEB3z5OHyHwQkvdrPDFcTqsLfh+8Hr8g+mf+7zVPEC8nEbqpdl3GPv3A7AwpFp7MA==" } }
Membuat disk dari image yang dienkripsi dengan CSEK
Konsol
Buka halaman Disks.
Klik Create disk.
Di bagian Source type, pilih Image.
Di bagian Encryption, pilih solusi pengelolaan kunci enkripsi.
Jika kunci telah digabungkan dengan kunci RSA publik, pilih Wrapped key.
gcloud
Pada alat gcloud compute
, berikan kunci enkripsi untuk image menggunakan flag --csek-key-file
saat Anda membuat disk. Jika Anda menggunakan kunci yang digabungkan RSA, gunakan komponen gcloud beta
:
gcloud (beta) compute disks create ... --image example-image --csek-key-file example-file.json
REST
Untuk menggunakan image terenkripsi, berikan sourceImageEncryptionKey
, diikuti dengan rawKey
atau rsaEncryptedKey
. Buat permintaan ke API v1 untuk kunci mentah (tidak digabungkan RSA), atau ke API Beta untuk kunci yang digabungkan RSA.
POST https://compute.googleapis.com/compute/v1/projects/myproject/zones/us-central1-a/disks { "name": "disk-from-encrypted-image", "sourceImageEncryptionKey": { "rsaEncryptedKey": "ieCx/NcW06PcT7Ep1X6LUTc/hLvUDYyzSZPPVCVPTVEohpeHASqC8uw5TzyO9U+Fka9JFHz0mBibXUInrC/jEk014kCK/NPjYgEMOyssZ4ZINPKxlUh2zn1bV+MCaTICrdmuSBTWlUUiFoDD6PYznLwh8ZNdaheCeZ8ewEXgFQ8V+sDroLaN3Xs3MDTXQEMMoNUXMCZEIpg9Vtp9x2oeQ5lAbtt7bYAAHf5l+gJWw3sUfs0/Glw5fpdjT8Uggrr+RMZezGrltJEF293rvTIjWOEB3z5OHyHwQkvdrPDFcTqsLfh+8Hr8g+mf+7zVPEC8nEbqpdl3GPv3A7AwpFp7MA==" }, "sourceImage": "global/images/encrypted-image" }
Memasang disk yang dienkripsi dengan CSEK ke VM baru
Konsol
Buka halaman Create an instance.
Di bagian Boot disk, klik Change, dan lakukan hal berikut:
- Di halaman Boot disk, klik tab Existing disks.
- Dari daftar Disk, pilih disk terenkripsi yang sudah ada untuk dipasang ke VM.
Masukkan kunci enkripsi di kotak teks, lalu pilih Wrapped key jika kunci telah digabungkan dengan kunci RSA publik.
Klik Select.
Lanjutkan dengan proses pembuatan VM.
gcloud
Untuk membuat VM dan memasang disk terenkripsi, buat file kunci dan berikan kunci tersebut menggunakan flag --csek-key-file
saat Anda membuat VM. Jika Anda menggunakan kunci yang digabungkan RSA, gunakan komponen gcloud beta
:
gcloud (beta) compute instances create example-instance \ --disk name=example-disk,boot=yes \ --csek-key-file example-file.json
REST
Buat VM menggunakan Compute Engine API dan masukkan rawKey
atau rsaEncryptedKey
bersama spesifikasi disk. Buat permintaan ke API v1 untuk kunci mentah (tidak digabungkan RSA), atau ke API Beta untuk kunci yang digabungkan RSA.
Berikut adalah cuplikan contoh spesifikasi disk:
"disks": [ { "deviceName": "encrypted-disk", "source": "projects/myproject/zones/us-central1-f/disks/encrypted-disk", "diskEncryptionKey": { "rawKey": "SGVsbG8gZnJvbSBHb29nbGUgQ2xvdWQgUGxhdGZvcm0=" } } ]
Memulai atau memulai ulang VM yang memiliki disk terenkripsi dengan CSEK
Untuk mengetahui detail tentang cara menghentikan atau memulai VM yang memiliki disk terenkripsi, baca Memulai ulang VM dengan disk terenkripsi.
Menggunakan command line untuk membuat resource campuran
Jika Anda ingin mencampur resource yang dienkripsi pelanggan dengan resource yang terenkripsi standar dalam satu permintaan dengan Google Cloud CLI, Anda dapat menggunakan flag --csek-key-file
dengan file kunci dan --no-require-csek-key-create
dalam permintaan Anda. Dengan menyediakan kedua flag, gcloud CLI membuat resource yang dienkripsi pelanggan yang secara eksplisit ditentukan dalam file kunci Anda, dan juga membuat resource standar yang Anda tentukan.
Misalnya, anggaplah sebuah file kunci berisi baris kode berikut:
[ { "uri": "https://www.googleapis.com/compute/beta/projects/myproject/zones/us-central1-a/disks/example-disk", "key": "ieCx/NcW06PcT7Ep1X6LUTc/hLvUDYyzSZPPVCVPTVEohpeHASqC8uw5TzyO9U+Fka9JFHz0mBibXUInrC/jEk014kCK/NPjYgEMOyssZ4ZINPKxlUh2zn1bV+MCaTICrdmuSBTWlUUiFoDD6PYznLwh8ZNdaheCeZ8ewEXgFQ8V+sDroLaN3Xs3MDTXQEMMoNUXMCZEIpg9Vtp9x2oeQ5lAbtt7bYAAHf5l+gJWw3sUfs0/Glw5fpdjT8Uggrr+RMZezGrltJEF293rvTIjWOEB3z5OHyHwQkvdrPDFcTqsLfh+8Hr8g+mf+7zVPEC8nEbqpdl3GPv3A7AwpFp7MA==", "key-type": "rsa-encrypted" } ]
Jika Anda ingin membuat VM dengan disk yang dienkripsi pelanggan menggunakan file kunci, dan secara bersamaan membuat VM dengan disk terenkripsi standar dalam permintaan yang sama, Anda dapat melakukannya seperti berikut:
gcloud beta compute instances create example-disk example-disk-2 \ --csek-key-file mykeyfile.json --no-require-csek-key-create
Biasanya, pembuatan example-disk-2
tidak dapat dilakukan jika Anda menentukan flag --csek-key-file
karena disk tidak ditentukan secara eksplisit dalam file kunci. Dengan menambahkan --no-require-csek-key-create
, kedua disk akan dibuat, satu dienkripsi menggunakan file kunci, dan satu lagi dienkripsi menggunakan enkripsi Google.
Menghapus CSEK dari persistent disk
Anda dapat mendekripsi isi disk yang dienkripsi pelanggan dan membuat disk baru yang menggunakan enkripsi default Compute Engine.
- Buat image disk yang dienkripsi dan tentukan enkripsi otomatis untuk image baru.
- Gunakan image baru untuk membuat persistent disk baru.
Persistent disk baru yang Anda buat akan menggunakan enkripsi default Compute Engine untuk melindungi isi disk. Snapshot apa pun yang Anda buat dari disk tersebut juga harus menggunakan enkripsi default.