Gunakan enkripsi disk untuk secara otomatis mengenkripsi data yang ditulis ke disk dan mendekripsinya saat dibaca. Dengan kunci yang dikelola oleh KMS, Anda dapat mengenkripsi volume disk klaster tanpa perlu membangun infrastruktur manajemen kunci sendiri. Topik ini menjelaskan cara mengonfigurasi StorageClass dengan KMS untuk mengenkripsi volume disk saat tidak digunakan (at rest).
Mencakup enkripsi volume data workload melalui StorageClass. Tidak mencakup enkripsi volume root node.
Cara kerja enkripsi
Disk Alibaba Cloud menggunakan enkripsi AES-256 yang dikelola oleh KMS. KMS menerapkan hierarki kunci dua tingkat—customer master keys (CMKs) dan data keys (DKs)—menggunakan envelope encryption:
-
Enkripsi kunci data. KMS mengenkripsi DK dengan CMK. DK yang terenkripsi disimpan bersama data terenkripsi dan tidak dapat didekripsi tanpa CMK.
-
Simpan dan baca data terenkripsi. Saat data terenkripsi dibaca, KMS mendekripsi DK setelah memverifikasi permintaan. DK dalam bentuk plaintext hanya ada di memori selama operasi I/O disk dan tidak pernah ditulis ke penyimpanan.
Plaintext CMK tidak pernah meninggalkan modul keamanan perangkat keras yang dikelola oleh KMS. Plaintext DK hanya ada di memori hypervisor dan tidak pernah disimpan di disk.
Lihat Proses enkripsi.
Jenis data yang dapat dienkripsi
Tipe disk yang didukung
Tipe disk berikut mendukung enkripsi:
| Tipe disk | Enkripsi didukung |
|---|---|
| Enterprise SSDs (ESSDs) | Ya |
| ESSD AutoPL disks | Ya |
| ESSD Entry disks | Ya |
| Standard SSDs | Ya |
| Ultra disks | Ya |
| Basic disks | Ya |
| Local disks | Tidak |
Batasan
-
Enkripsi hanya dapat diatur saat pembuatan disk dan tidak dapat diubah setelahnya. Proses memasang (mount) dan melepas (unmount) tidak memengaruhi enkripsi.
-
Konversi disk tidak terenkripsi menjadi terenkripsi, atau sebaliknya, tidak didukung.
Otorisasi ECS untuk mengakses KMS
Berikan akses Elastic Compute Service (ECS) ke KMS dengan menyiapkan peran RAM AliyunECSDiskEncryptDefaultRole.
-
Buat peran RAM (lihat Buat peran RAM untuk layanan Alibaba Cloud tepercaya) dengan nilai berikut:
Jika peran
AliyunECSDiskEncryptDefaultRolesudah ada, lewati langkah ini.Field Value Principal Type Cloud Service Principal Name Elastic Compute Service Role Name AliyunECSDiskEncryptDefaultRole -
Berikan izin kepada peran
AliyunECSDiskEncryptDefaultRole(lihat Berikan izin kepada peran RAM) dengan nilai berikut:PentingAliyunKMSFullAccessmemberikan izin penuh ke KMS. Untuk akses berdasarkan prinsip least-privilege, gunakan kebijakan kustom dengan izin berikut:Field Value Resource Scope Account Policy AliyunKMSFullAccess(akses penuh ke KMS) atauAliyunECSDiskEncryptCustomizedPolicy(izin minimum yang diperlukan){ "Version": "1", "Statement": [ { "Effect": "Allow", "Action": [ "kms:DescribeKey", "kms:GenerateDataKey", "kms:Decrypt", "kms:TagResource" ], "Resource": "*" } ] } -
Klik Grant permissions.
Prosedur
Enkripsi dikonfigurasi pada level StorageClass. Setiap persistent volume claim (PVC) yang menggunakan StorageClass dengan enkripsi aktif akan didukung oleh disk terenkripsi.
Prasyarat
Pastikan Anda telah:
-
Add-on Container Storage Interface (CSI) (csi-plugin dan csi-provisioner) telah terinstal. Verifikasi di bawah Operations > Add-ons > Storage. Lihat Perbarui csi-plugin dan csi-provisioner.
Jika klaster Anda menggunakan FlexVolume, migrasikan ke CSI sebelum melanjutkan. FlexVolume tidak lagi didukung. Lihat Tingkatkan dari FlexVolume ke CSI.
-
Peran RAM
AliyunECSDiskEncryptDefaultRoletelah dikonfigurasi dengan izin KMS (lihat Otorisasi ECS untuk mengakses KMS).
Langkah 1: Buat StorageClass terenkripsi
-
Buat file bernama
sc-kms.yamldengan konten berikut, sesuaikan parameter sesuai kebutuhan:Parameter Deskripsi encryptedAtur ke "true"untuk mengenkripsi disk yang dibuat oleh StorageClass ini.kmsKeyIdKunci KMS untuk enkripsi disk. Jika tidak diatur, CMK default akan digunakan. Diabaikan jika encryptedbernilai"false".typeTipe disk. fsTypeTipe sistem file. apiVersion: storage.k8s.io/v1 kind: StorageClass metadata: name: csi-disk-encrypted provisioner: diskplugin.csi.alibabacloud.com parameters: fsType: ext4 type: cloud_essd encrypted: "true" kmsKeyId: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx reclaimPolicy: DeleteTabel di atas menjelaskan parameter terkait enkripsi dalam bagian
parameters. -
Buat StorageClass:
kubectl create -f sc-kms.yaml
Langkah 2: Buat PVC
-
Buat file bernama
sc-pvc.yamldengan konten berikut:apiVersion: v1 kind: PersistentVolumeClaim metadata: name: disk-pvc spec: accessModes: - ReadWriteOnce resources: requests: storage: 20Gi storageClassName: csi-disk-encrypted -
Buat PVC:
kubectl create -f sc-pvc.yaml -
Verifikasi bahwa PVC telah terikat (bound):
kubectl get pvcStatus PVC harus
Bound. KolomVOLUMEmenampilkan ID disk yang disediakan:NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS VOLUMEATTRIBUTESCLASS AGE disk-pvc Bound d-2ze0nmbv2var0d9h**** 20Gi RWO csi-disk-encrypted <unset> 6m20s
Langkah 3: Verifikasi enkripsi disk
-
Login ke Konsol ECS.
-
Pilih Storage & Snapshots > Block Storage.
Login ke Konsol ECS.
-
Di tab Cloud Disk, temukan disk tersebut dan klik ID-nya.
-
Di tab Basic Information, pastikan Encrypted muncul di field Encrypted/Unencrypted.
Langkah berikutnya
Lihat Enkripsi cloud disk.