Utilice el cifrado de discos para cifrar automáticamente los datos que se escriben en los discos y descifrarlos durante la lectura. Con las claves administradas por KMS, puede cifrar los volúmenes de disco del clúster sin necesidad de construir su propia infraestructura de administración de claves. Este tema explica cómo configurar una StorageClass con KMS para cifrar los volúmenes de disco en reposo.
Abarca el cifrado de volúmenes de datos de cargas de trabajo mediante una StorageClass. No incluye el cifrado del volumen raíz del nodo.
Cómo funciona el cifrado
Los discos de Alibaba Cloud utilizan el cifrado AES-256 administrado por KMS. KMS implementa una jerarquía de claves de dos niveles: las claves maestras del cliente (CMK) y las claves de datos (DK). Para ello, emplea el cifrado de sobre:
Cifrar una clave de datos. KMS cifra la DK con la CMK. La DK cifrada se almacena junto con los datos cifrados y no se puede descifrar sin la CMK.
Almacenar y leer datos cifrados. Cuando se leen datos cifrados, KMS descifra la DK después de verificar la solicitud. La DK en texto plano solo existe en la memoria durante las operaciones de E/S del disco y nunca se escribe en el almacenamiento.
La CMK en texto plano nunca sale del módulo de seguridad de hardware que administra KMS. La DK en texto plano solo existe en la memoria del hipervisor y nunca se almacena en el disco.
Consulte Encryption process.
Tipos de datos que se pueden cifrar
Tipos de disco compatibles
El cifrado es compatible con los siguientes tipos de disco:
|
Tipo de disco |
Cifrado compatible |
|
Enterprise SSDs (ESSDs) |
Sí |
|
Discos ESSD AutoPL |
Sí |
|
Discos ESSD Entry |
Sí |
|
Standard SSDs |
Sí |
|
Ultra disks |
Sí |
|
Basic disks |
Sí |
|
Local disks |
No |
Limitaciones
El cifrado solo se puede establecer durante la creación del disco y no se puede modificar después. Montar o desmontar el disco no afecta el cifrado.
No se admite convertir un disco no cifrado a cifrado, ni un disco cifrado a no cifrado.
Autorizar a ECS para acceder a KMS
Otorgue acceso a KMS a Elastic Compute Service (ECS) mediante la configuración del rol de RAM AliyunECSDiskEncryptDefaultRole.
-
Cree el rol de RAM (consulte Create a RAM role for a trusted Alibaba Cloud service) con los siguientes valores:
Si el rol
AliyunECSDiskEncryptDefaultRoleya existe, omita este paso.Campo
Valor
Principal Type
Cloud Service
Principal Name
Elastic Compute Service
Role Name
AliyunECSDiskEncryptDefaultRole
-
Otorgue permisos al rol
AliyunECSDiskEncryptDefaultRole(consulte Grant permissions to a RAM role) con los siguientes valores:ImportanteAliyunKMSFullAccessotorga permisos completos de KMS. Para aplicar el principio de mínimo privilegio, utilice una política personalizada con los siguientes permisos:Campo
Valor
Resource Scope
Account
Policy
AliyunKMSFullAccess(acceso completo a KMS) oAliyunECSDiskEncryptCustomizedPolicy(permisos mínimos obligatorios){ "Version": "1", "Statement": [ { "Effect": "Allow", "Action": [ "kms:DescribeKey", "kms:GenerateDataKey", "kms:Decrypt", "kms:TagResource" ], "Resource": "*" } ] } Haga clic en Grant permissions.
Procedimiento
El cifrado se configura en el nivel de StorageClass. Cualquier persistent volume claim (PVC) que utilice una StorageClass con cifrado habilitado se respalda con un disco cifrado.
Requisitos previos
Compruebe que cuenta con lo siguiente:
-
El complemento Container Storage Interface (CSI) (csi-plugin y csi-provisioner) instalado. Compruébelo en Operations > Add-ons > Storage. Consulte Update csi-plugin and csi-provisioner.
Si su clúster utiliza FlexVolume, migre a CSI antes de continuar. FlexVolume ya no es compatible. Consulte Upgrade from FlexVolume to CSI .
El rol de RAM
AliyunECSDiskEncryptDefaultRoleconfigurado con permisos de KMS (consulte Autorizar a ECS para acceder a KMS)
Paso 1: Crear una StorageClass cifrada
-
Cree un archivo llamado
sc-kms.yamlcon el siguiente contenido y ajuste los parámetros según sea necesario:Parámetro
Descripción
encryptedEstablézcalo en
"true"para cifrar los discos que cree esta StorageClass.kmsKeyIdLa clave de KMS para el cifrado del disco. Si no se establece, se aplica la CMK predeterminada. Se ignora si
encryptedes"false".typeEl tipo de disco.
fsTypeEl tipo de sistema de archivos.
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: DeleteLa tabla anterior describe los parámetros relacionados con el cifrado en la sección
parameters. -
Cree la StorageClass:
kubectl create -f sc-kms.yaml
Paso 2: Crear una PVC
-
Cree un archivo llamado
sc-pvc.yamlcon el siguiente contenido:apiVersion: v1 kind: PersistentVolumeClaim metadata: name: disk-pvc spec: accessModes: - ReadWriteOnce resources: requests: storage: 20Gi storageClassName: csi-disk-encrypted -
Cree la PVC:
kubectl create -f sc-pvc.yaml -
Compruebe que la PVC esté vinculada:
kubectl get pvcEl estado de la PVC debe ser
Bound. La columnaVOLUMEmuestra el identificador del disco aprovisionado:NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS VOLUMEATTRIBUTESCLASS AGE disk-pvc Bound d-2ze0nmbv2var0d9h**** 20Gi RWO csi-disk-encrypted <unset> 6m20s
Paso 3: Comprobar el cifrado del disco
Inicie sesión en la consola de ECS.
Elija Storage & Snapshots > Block Storage.
Inicie sesión en la consola de ECS.
En la pestaña Cloud Disk, busque el disco y haga clic en su identificador.
En la pestaña Basic Information, confirme que Encrypted aparezca en el campo Encrypted/Unencrypted.
Siguientes pasos
Consulte Encrypt cloud disks.