Dokumen ini membahas cara mengenkripsi disk dengan kunci enkripsi yang disediakan pelanggan.
Untuk mengetahui informasi tentang enkripsi disk, lihat Tentang enkripsi disk.
Untuk mengetahui informasi tentang cara mengenkripsi disk dengan kunci enkripsi yang dikelola pelanggan (CMEK), lihat Melindungi resource dengan menggunakan kunci Cloud KMS.
Dengan menggunakan CKEK, Anda menyediakan kunci enkripsi Anda sendiri dan Compute Engine menggunakan kunci Anda untuk melindungi kunci yang digunakan untuk mengenkripsi dan mendekripsi data Anda. Google-owned and Google-managed encryption keys 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 volume Persistent Disk, Google akan menghapus kunci cipher, sehingga merender data yang tidak dapat diambil. Proses ini tidak dapat diurungkan.
Sebelum memulai
- Baca disk, image, dan snapshot disk.
-
Siapkan autentikasi jika Anda belum melakukannya.
Autentikasi memverifikasi identitas Anda untuk mengakses layanan Google Cloud dan API. Untuk menjalankan
kode atau sampel dari lingkungan pengembangan lokal, Anda dapat melakukan autentikasi ke
Compute Engine dengan memilih salah satu opsi berikut:
Pilih tab untuk melihat bagaimana Anda berencana menggunakan contoh di halaman ini:
Konsol
Saat menggunakan konsol Google Cloud untuk mengakses layanan Google Cloud dan API, Anda tidak perlu menyiapkan autentikasi.
gcloud
-
Instal Google Cloud CLI. Setelah penginstalan, inisialisasi Google Cloud CLI dengan menjalankan perintah berikut:
gcloud initJika Anda menggunakan penyedia identitas (IdP) eksternal, Anda harus login ke gcloud CLI dengan identitas gabungan Anda terlebih dahulu.
-
- Tetapkan region dan zona default.
-
Instal Google Cloud CLI.
-
Jika Anda menggunakan penyedia identitas (IdP) eksternal, Anda harus login ke gcloud CLI dengan identitas gabungan Anda terlebih dahulu.
-
Jika Anda menggunakan shell lokal, buat kredensial autentikasi lokal untuk akun pengguna Anda:
gcloud auth application-default login
Anda tidak perlu melakukan langkah ini jika menggunakan Cloud Shell.
Jika error autentikasi ditampilkan, dan Anda menggunakan penyedia identitas (IdP) eksternal, konfirmasi bahwa Anda telah login ke gcloud CLI dengan identitas gabungan Anda.
Python
Untuk menggunakan contoh Python di halaman ini dalam lingkungan pengembangan lokal, instal dan lakukan inisialisasi gcloud CLI, lalu siapkan Kredensial Default Aplikasi dengan kredensial pengguna Anda.
Untuk mengetahui informasi selengkapnya, lihat Menyiapkan 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.
Jika Anda menggunakan penyedia identitas (IdP) eksternal, Anda harus login ke gcloud CLI dengan identitas gabungan Anda terlebih dahulu.
Untuk mengetahui informasi selengkapnya, lihat Melakukan autentikasi untuk menggunakan REST dalam dokumentasi autentikasi Google Cloud .
Peran dan izin yang diperlukan
Untuk mendapatkan izin yang diperlukan untuk membuat snapshot, image, dan disk yang dienkripsi CSEK, minta administrator untuk memberi Anda peran IAM berikut pada project:
-
Compute Instance Admin (v1) (
roles/compute.instanceAdmin.v1) -
Untuk terhubung ke VM yang memiliki akun layanan terlampir:
Service Account User (v1) (
roles/iam.serviceAccountUser)
Untuk mengetahui informasi selengkapnya tentang pemberian peran, lihat Mengelola akses ke project, folder, dan organisasi.
Peran bawaan ini berisi izin yang diperlukan untuk membuat snapshot, image, dan disk yang dienkripsi CSEK. Untuk melihat izin yang benar-benar diperlukan, perluas bagian Izin yang diperlukan:
Izin yang diperlukan
Izin berikut diperlukan untuk membuat snapshot, image, dan disk yang dienkripsi CSEK:
-
Untuk membuat snapshot disk:
-
compute.snapshots.createdalam project -
compute.disks.createSnapshotpada disk -
iam.serviceAccounts.actAsdi akun layanan instance, jika disk adalah disk booting instance yang memiliki akun layanan terpasang
-
-
Untuk membuat gambar:
-
compute.images.createdalam project -
compute.disks.useReadOnlypada disk -
iam.serviceAccounts.actAsdi akun layanan instance, jika disk adalah disk booting instance yang memiliki akun layanan terpasang
-
-
Untuk membuat disk dari snapshot standar:
-
compute.disks.createdi project tujuan untuk disk baru -
compute.snapshots.useReadOnlypada snapshot
-
-
Untuk membuat disk dari image:
-
compute.disks.createdi project tujuan untuk disk baru -
compute.images.useReadOnlypada gambar
-
-
Untuk membuat disk dari snapshot instan:
-
compute.disks.createdi project tujuan untuk disk baru -
compute.instantSnapshots.useReadOnlypada snapshot instan sumber -
iam.serviceAccounts.actAsdi akun layanan instance, jika snapshot instan adalah boot disk instance yang memiliki akun layanan terlampir
-
Anda mungkin juga bisa mendapatkan izin ini dengan peran khusus atau peran bawaan lainnya.
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 disk SSD Lokal menggunakan Google-owned and Google-managed encryption keys. Kunci akan 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 memberikan kunci yang merupakan string 256-bit yang dienkode dalam base64 standar RFC 4648 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 utilitas command line openssl untuk menggabungkan RSA 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.txtDownload public key certificate:
$ curl -s -O -L https://cloud-certs.storage.googleapis.com/google-cloud-csek-ingress.pemEkstrak kunci publik dari sertifikat:
$ openssl x509 -pubkey -noout -in google-cloud-csek-ingress.pem > pubkey.pemGabungkan RSA kunci Anda. Pastikan untuk mengganti
mykey.txtdengan file kunci Anda sendiri.$ openssl rsautl -oaep -encrypt -pubin -inkey pubkey.pem -in mykey.txt -out rsawrappedkey.txtEnkode kunci yang digabungkan RSA menggunakan base64.
$ openssl enc -base64 -in rsawrappedkey.txt | tr -d '\n' | sed -e '$a\' > rsawrapencodedkey.txt
Contoh 2
Berikut adalah contoh skrip Python yang menghasilkan string acak 256 bit (32 byte) dan membuat kunci yang digabungkan RSA berenkode base64 menggunakan library cryptography:
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
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 secara 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,
rawataursa-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 Linux Unified Key Setup (LUKS) atau eCryptfs.
Membuat volume Persistent Disk terenkripsi CSEK kosong
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 kolom Source disk encryption key, 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 (tidak digabungkan 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 persistent disk mandiri baru 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 yang dienkripsi dengan CSEK, Anda harus memberikan kunci enkripsi yang Anda gunakan untuk mengenkripsi disk dan kunci untuk mengenkripsi snapshot baru. Anda juga harus mengenkripsi snapshot dengan CSEK.
Untuk mengonversi disk atau snapshot yang dienkripsi CSEK agar menggunakan Google-owned and Google-managed encryption keys, Anda harus membuat disk atau snapshot 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.
Tinjau Praktik terbaik untuk snapshot 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 kolom Source disk encryption key, lalu pilih Wrapped key jika kunci telah digabung dengan kunci RSA publik.
Untuk mengenkripsi snapshot baru, pilih metode enkripsi dengan menyediakan kunci enkripsi tambahan di bagian Encryption.
REST
Untuk membuat permintaan, berikan properti sourceDiskEncryptionKey untuk mengakses
persistent disk sumber. Anda harus mengenkripsi snapshot baru menggunakan properti snapshotEncryptionKey.
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/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 mengenkripsi snapshot, sehingga jika snapshot itu digunakan untuk membuat persistent disk baru, kunci yang cocok harus disediakan. 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 image.
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 sebelumnya. 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 image di kolom Source disk encryption key.
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
Anda dapat membuat Persistent Disk dari resource terenkripsi CSEK berikut:
- snapshot instan
- snapshot standar
- gambar
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 kolom Kunci dekripsi disk sumber. Jika kunci telah digabungkan dengan kunci RSA publik, pilih Wrapped key.
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 menggunakanGoogle-owned and managed keys.
Menghapus CSEK dari Persistent Disk
Anda dapat mendekripsi isi disk yang dienkripsi pelanggan dan membuat disk baru yang menggunakan Google-owned and managed keys .
- Buat image disk yang dienkripsi dan tentukan enkripsi otomatis untuk image baru.
- Gunakan image baru untuk membuat persistent disk baru.
Setelah Anda membuat persistent disk baru, Compute Engine akan menggunakan Google-owned and managed keys untuk melindungi konten disk. Setiap snapshot yang Anda buat dari disk tersebut juga harus menggunakan Google-owned and managed keys