Proteja los Secrets en reposo con el cifrado de sobre de Key Management Service (KMS) en los clústeres ACK Pro.
Requisitos previos
Asegúrese de contar con lo siguiente:
Una clave de KMS en la misma región que su clúster ACK Pro. Tipos compatibles: predeterminado, protegido por software y protegido por hardware. Consulte Getting started with keys y Facturación.
-
Autorización para habilitar el cifrado de Secrets:
Cuenta de Alibaba Cloud: autorizada para asumir AliyunCSManagedSecurityRole. La consola de ACK solicita esta autorización cuando usted habilita el cifrado de Secrets. También puede ir directamente a la página Cloud Resource Access Authorization.
-
Usuario o rol de RAM: debe tener ambos elementos:
Permisos RBAC de administrador o ingeniero de operaciones y mantenimiento en el clúster ACK Pro. Consulte Grant RBAC permissions to RAM users or RAM roles.
El permiso de sistema AliyunKMSCryptoAdminAccess asignado. Consulte Grant permissions to a RAM user or RAM role.
Limitaciones
El cifrado de Secrets solo es compatible con los clústeres ACK Pro y ACK Serverless Pro.
Después de habilitar el cifrado de Secrets, no deshabilite ni elimine la clave mediante la API o la consola de KMS. Si la clave deja de estar disponible, el servidor de API no podrá recuperar los Secrets ni los objetos de cuenta de servicio, lo que provocará interrupciones del servicio.
Para deshabilitar el cifrado de Secrets, desactive Secret Encryption en la pestaña Basic Information del clúster.
Cómo funciona
ACK utiliza el proveedor KMS de Kubernetes con cifrado de sobre para proteger los Secrets en etcd. El Secret se cifra con una clave de cifrado de datos (DEK), y la DEK se cifra con una clave de cifrado de claves (KEK) en KMS. La DEK en texto plano nunca se almacena junto con los datos que protege.
Cifrado:
Cuando usted almacena un Secret, el servidor de API genera una DEK aleatoria y cifra el Secret con ella.
El servidor de API envía la DEK a KMS. Este servicio la cifra con su clave de KMS (la KEK) y devuelve la DEK cifrada.
El servidor de API almacena tanto el Secret cifrado como la DEK cifrada en etcd.
Descifrado:
El servidor de API llama a la operación
Decryptde KMS para descifrar la DEK.El servidor de API usa la DEK en texto plano para descifrar el Secret y lo devuelve al solicitante.
Para obtener más información, consulte el proveedor de cifrado KMS y Use envelope encryption.
KMS v2
A partir de Kubernetes 1.31, los clústeres ACK Pro y usan la interfaz comunitaria KMS v2 para el cifrado en reposo. KMS v2 admite más instancias de Secrets en un clúster y ofrece un mejor rendimiento de cifrado y descifrado. Para conocer más detalles sobre el flujo de cifrado y descifrado de KMS v2, consulte KMS v2.
Para actualizar de la interfaz KMS v1 a la interfaz KMS v2, consulte How to upgrade to KMS v2 for Secret encryption at rest?
La comunidad de Kubernetes marcó KMS v1 como obsoleto en la versión 1.27 y deshabilitó la interfaz v1 de forma predeterminada en la versión 1.29. Para garantizar la compatibilidad, los clústeres ACK Pro y siguen habilitando la interfaz v1 mediante la configuración del feature gate de KMS v1.
Habilitar el cifrado en reposo para los Secrets
Nuevo clúster ACK Pro
Inicie sesión en la consola de ACK y haga clic en Clusters en el panel de navegación izquierdo.
En la página Clusters, haga clic en Cluster Templates. En la página Select Cluster Template, busque Professional Managed Kubernetes Cluster y haga clic en Create.
-
En la pestaña Managed Kubernetes, haga clic en Show Advanced Options. En la sección Secret Encryption, seleccione Select Key y elija una clave. Configure los demás parámetros y haga clic en Create Cluster. Consulte Crear un clúster ACK Pro.

No deshabilite ni elimine la clave de KMS después de habilitar el cifrado de Secrets. Si la clave deja de estar disponible, el servidor de API no podrá recuperar los Secrets ni los objetos de cuenta de servicio, lo que provocará interrupciones del servicio.
Comprobación: Inicie sesión en la consola de ActionTrail. Haga clic en Event Detail Query en el panel de navegación. Si aparecen operaciones de cifrado y descifrado del rol aliyuncsmanagedsecurityrole, el cifrado de Secrets está activo.
Clúster ACK Pro existente
Inicie sesión en la consola de ACK y haga clic en Clusters en el panel de navegación izquierdo.
-
En la página Clusters, haga clic en el nombre del clúster de destino. Luego, haga clic en la pestaña Basic Information. En la sección Security and Audit, active Secret Encryption. Si el sistema le solicita autorización, haga clic en Go to RAM console y luego en Confirm Authorization Policy.
El usuario o rol de RAM debe tener el rol RBAC de administrador o ingeniero de operaciones y mantenimiento en el clúster. Para asignar AliyunCSManagedSecurityRole, inicie sesión con una cuenta de Alibaba Cloud o con una identidad de RAM que tenga permisos de administración de RAM.
En el cuadro de diálogo Secret Encryption, seleccione una clave y haga clic en OK. Si no hay ninguna clave disponible, haga clic en create keys en la consola de KMS. Consulte Create a CMK. Cuando el estado del clúster cambie de Updating a Running, el cifrado de Secrets estará habilitado.
No deshabilite ni elimine la clave de KMS después de habilitar el cifrado de Secrets. Si la clave deja de estar disponible, el servidor de API no podrá recuperar los Secrets ni los objetos de cuenta de servicio, lo que provocará interrupciones del servicio.
Para deshabilitarlo: En la sección Security and Audit de la página de detalles del clúster, desactive Secret Encryption.
Rotar la clave de cifrado
La rotación automática de claves de KMS cifra los nuevos Secrets con la clave rotada. Los Secrets existentes permanecen cifrados con la clave original hasta que usted los vuelva a cifrar de forma explícita.
Recifrado manual: Una vez finalizada la rotación, vuelva a cifrar todos los Secrets existentes con la nueva clave:
kubectl get secrets --all-namespaces -o json | kubectl annotate --overwrite -f - encryption-key-rotation-time="$(date -u +'%Y-%m-%dT%H:%M:%S%z')"
Consulte Configurar la rotación de claves para configurar la rotación automática de claves.
Preguntas frecuentes
¿Cómo actualizar a KMS v2 para el cifrado en reposo de Secrets?
Para usar KMS v2 en el cifrado en reposo de Secrets, compruebe que su clúster ACK Pro o ejecute la versión 1.31 o posterior.
Si aún no ha habilitado el cifrado en reposo de Secrets en su clúster, consulte Enable encryption at rest for Secrets para habilitarlo. Una vez habilitado, los Secrets del clúster se cifran automáticamente con las API de KMS v2 al escribirse en disco y se descifran al leerse.
-
Si ya habilitó el cifrado en reposo de Secrets en su clúster, puede rotar la clave de cifrado fuera del horario de mayor demanda con uno de los métodos a continuación.
Método 1: Ejecute el comando
kubectl get secrets --all-namespaces -o json | kubectl replace -f -. Este comando vuelve a cifrar todos los Secrets existentes mediante la API de KMS v2.Método 2: Inicie sesión en la consola de ACK. En la página Cluster Information, vaya a la pestaña Basic Information, busque Secret Encryption y desactívelo. Este proceso desencadena una rotación de claves para todos los Secrets almacenados en disco. Después de un momento, consulte Enable encryption at rest for Secrets para volver a habilitar el cifrado del clúster. Una vez reactivado, todos los Secrets del clúster se recifran en reposo mediante la API de KMS v2.
¿kubectl devuelve texto cifrado después de habilitar el cifrado de Secrets?
No. Los Secrets se almacenan como texto cifrado en etcd. Cuando se consultan mediante kubectl, el servidor de API los descifra antes de devolver los resultados, por lo que kubectl siempre muestra texto plano.
¿Cómo evito que los usuarios o roles de RAM habiliten o deshabiliten el cifrado de Secrets en clústeres ACK Serverless Pro existentes?
Adjunte una política de denegación para la acción cs:UpdateKMSEncryption a los usuarios o roles de RAM. Consulte Create a custom RAM policy.
{
"Action": [
"cs:UpdateKMSEncryption"
],
"Effect": "Deny",
"Resource": [
"*"
]
}