Se recomienda cifrar los datos en escenarios que exigen alta seguridad o cumplimiento normativo. Para cifrar los volúmenes de OSS en clústeres de ACK, utilice las Customer Master Keys (CMK) de Key Management Service (KMS) o las claves administradas por Object Storage Service (OSS). Esto protege la privacidad de los datos y le otorga control sobre su información.
Métodos de cifrado
El cifrado de volúmenes de OSS se aplica del lado del servidor (SSE) o del lado del cliente. ACK solo admite el cifrado del lado del servidor.
Cifrado del lado del servidor: OSS cifra los datos antes de almacenarlos en disco dentro de un centro de datos. Los descifra automáticamente cuando usted descarga objetos.
Cifrado del lado del cliente: utilice un SDK de cifrado del lado del cliente para cifrar los datos localmente antes de cargarlos a OSS.
OSS ofrece dos métodos de cifrado del lado del servidor. Cada objeto utiliza únicamente uno de estos métodos a la vez.
-
Uso de CMK de KMS para el cifrado (SSE-KMS)
Usar la CMK predeterminada: al cargar un objeto, establezca el encabezado de solicitud
X-OSS-server-side-encryptioncomoKMSy no especifique ningún ID de CMK.Usar un ID de CMK específico: al cargar un objeto, establezca el encabezado de solicitud
X-OSS-server-side-encryptioncomoKMSy configureX-OSS-server-side-encryption-key-idcon suCMK ID.
ImportanteEl uso de claves de KMS genera un costo menor por llamadas a la API. Para más información, consulte Billing of KMS 1.0.
Este método es rentable porque OSS no envía datos por la red al servidor de KMS para cifrarlos ni descifrarlos.
-
Uso de claves administradas completamente por OSS para el cifrado (SSE-OSS)
Este método emplea claves que OSS administra por completo. El cifrado funciona como un atributo del objeto.
OSS genera y gestiona las claves de cifrado de datos mediante el algoritmo estándar AES-256.
Al cargar un objeto, establezca el encabezado de solicitud
X-OSS-server-side-encryptioncomoAES256.
Configure los parámetros de cifrado de un volumen de OSS con la herramienta ossfs. Estos ajustes se aplican cuando usted monta el volumen persistente (PV).
Para más información sobre cómo configurar e instalar ossfs, consulte Install ossfs 1.0 .
Requisitos previos
-
Los componentes csi-plugin y csi-provisioner están instalados.
Los componentes CSI se instalan de forma predeterminada. Compruebe que sigan instalados. Revise el estado de instalación en la página . Se recomienda upgrading the CSI components a la versión más reciente.
-
Create a bucket. El bucket y el clúster deben pertenecer a la misma cuenta de Alibaba Cloud.
Si necesita montar un bucket de OSS de otra cuenta, se recomienda usar RRSA para la autenticación. Para más información, consulte How do I mount an OSS bucket from a different account?
Escenario 1: usar la CMK de KMS predeterminada
-
Copie el siguiente contenido en un archivo llamado kms-cmk-default.yaml.
apiVersion: v1 kind: PersistentVolume metadata: name: oss-csi-pv spec: capacity: storage: 5Gi accessModes: - ReadOnlyMany csi: driver: ossplugin.csi.alibabacloud.com volumeHandle: oss-csi-pv volumeAttributes: bucket: "python" url: "oss-cn-hangzhou.aliyuncs.com" otherOpts: "-o umask=022 -o max_stat_cache_size=100000 -o allow_other" akId: "<YourAccessKey ID>" # Replace with your AccessKey ID akSecret: "<YourAccessKey Secret>" # Replace with your AccessKey Secret path: "/" encrypted: "kms"Parámetro
Descripción
akIdAccessKey ID
akSecretAccessKey Secret
encryptedMétodo de cifrado del volumen:
kms: cifrado con KMS.aes256: cifrado AES-256.
-
Cree el volumen cifrado.
kubectl create -f kms-cmk-default.yaml -
Consulte el volumen cifrado creado.
kubectl get pv
Escenario 2: usar un ID de CMK de KMS específico
1. Configurar permisos de acceso a KMS
Para cifrar un objeto de OSS con una CMK específica, el usuario o rol de RAM asociado a la AccessKey del PV debe tener permiso para usar esa CMK. Para más información, consulte Server-side encryption.
Antes de empezar, asegúrese de haber created a RAM user o created a RAM role .
Inicie sesión en la consola de RAM con una cuenta de Alibaba Cloud o como administrador de RAM.
En el panel de navegación, seleccione o Role.
-
Busque el usuario de RAM correspondiente y haga clic en Add Permissions en la columna Actions. También puede buscar el rol de RAM adecuado y hacer clic en Attach Policy en la columna Actions. Siga las instrucciones en pantalla para otorgar los permisos. Adjunte la política del sistema AliyunKMSFullAccess o una política personalizada llamada AliyunOSSEncryptCustomizedPolicy.
El permiso AliyunKMSFullAccess otorga un acceso amplio. Para un control más preciso, create a custom policy llamada AliyunOSSEncryptCustomizedPolicy con el siguiente contenido.
{ "Version": "1", "Statement": [ { "Effect": "Allow", "Action": [ "kms:List*", "kms:DescribeKey", "kms:GenerateDataKey", "kms:Decrypt" ], "Resource": [ "acs:kms:*:141661496593****:*" // This allows the principal to use all KMS keys under this Alibaba Cloud account. To allow access to only a specific CMK, replace the wildcard resource with the ARN of that CMK. ] } ] }
2. Crear el volumen cifrado
-
Cree un archivo llamado kms-cmk.yaml.
apiVersion: v1 kind: PersistentVolume metadata: name: oss-csi-pv spec: capacity: storage: 5Gi accessModes: - ReadOnlyMany csi: driver: ossplugin.csi.alibabacloud.com volumeHandle: oss-csi-pv volumeAttributes: bucket: "python" url: "oss-cn-hangzhou.aliyuncs.com" otherOpts: "-o umask=022 -o max_stat_cache_size=100000 -o allow_other" akId: "<YourAccessKey ID>" # Replace with your AccessKey ID akSecret: "<YourAccessKey Secret>" # Replace with your AccessKey Secret path: "/" encrypted: "kms" kmsKeyId: "<YourCMKID>" # Replace with your CMK ID -
Cree el volumen cifrado.
kubectl create -f kms-cmk.yaml -
Consulte el volumen cifrado creado.
kubectl get pv
Escenario 3: usar claves administradas por OSS
-
Cree un archivo llamado sse-oss.yaml.
apiVersion: v1 kind: PersistentVolume metadata: name: oss-csi-pv spec: capacity: storage: 5Gi accessModes: - ReadOnlyMany csi: driver: ossplugin.csi.alibabacloud.com volumeHandle: oss-csi-pv volumeAttributes: bucket: "python" url: "oss-cn-hangzhou.aliyuncs.com" otherOpts: "-o umask=022 -o max_stat_cache_size=100000 -o allow_other" akId: "<YourAccessKey ID>" # Replace with your AccessKey ID akSecret: "<YourAccessKey Secret>" # Replace with your AccessKey Secret path: "/" encrypted: "aes256" -
Cree el volumen cifrado.
kubectl create -f sse-oss.yaml -
Consulte el volumen cifrado creado.
kubectl get pv