Ayude a mejorar esta página
¿Quiere contribuir a esta guía del usuario? Desplácese hasta el final de esta página y seleccione Editar esta página en GitHub. Sus contribuciones ayudarán a que nuestra guía del usuario sea mejor para todos.
Cifrado de los secretos de Kubernetes con AWS KMS en los clústeres existentes
Si habilita el cifrado de secretos, los secretos de Kubernetes se cifran con la clave de AWS KMS key que seleccione. La clave KMS debe cumplir las siguientes condiciones:
-
Simétrica
-
Debe poder cifrar y descifrar datos
-
Debe estar creada en la misma Región de AWS que el clúster
-
Si la clave de KMS se creó en una cuenta diferente, la entidad principal de IAM debe tener acceso a la clave de KMS.
Para obtener más información, consulte Permitir que las entidades principales de IAM de otras cuentas utilicen una clave de KMS en la Guía para desarrolladores de AWS Key Management Service.
No puede desactivar el cifrado de secretos después de habilitarlo. Esta acción es irreversible.
- eksctl
-
Puede habilitar el cifrado de dos formas:
-
Agregue cifrado a su clúster con un solo comando.
Para volver a cifrar los secretos de forma automática, ejecute el siguiente comando.
eksctl utils enable-secrets-encryption \
--cluster my-cluster
\
--key-arn arn:aws:kms:region-code
:account
:key/key
Para optar por no volver a cifrar los secretos de forma automática, ejecute el siguiente comando.
eksctl utils enable-secrets-encryption
--cluster my-cluster
\
--key-arn arn:aws:kms:region-code
:account
:key/key
\
--encrypt-existing-secrets=false
-
Agregue cifrado al clúster con un archivo kms-cluster.yaml
.
apiVersion: eksctl.io/v1alpha5
kind: ClusterConfig
metadata:
name: my-cluster
region: region-code
secretsEncryption:
keyARN: arn:aws:kms:region-code
:account
:key/key
Para que los secretos se vuelvan a cifrar automáticamente, ejecute el siguiente comando.
eksctl utils enable-secrets-encryption -f kms-cluster.yaml
Para optar por no volver a cifrar los secretos de forma automática, ejecute el siguiente comando.
eksctl utils enable-secrets-encryption -f kms-cluster.yaml --encrypt-existing-secrets=false
- AWS Management Console
-
Abra la consola de Amazon EKS en https://console.aws.amazon.com/eks/home#/clusters.
-
Elija el clúster al que desea agregar el cifrado de KMS.
-
Elija la pestaña Overview (Resumen) (está seleccionada de manera predeterminada).
-
Desplácese hasta la sección Secrets encryption (Cifrado de secretos) y elija Enable (Habilitar).
-
Seleccione una clave en el menú desplegable y elija el botón Enable (Habilitar). Si no aparece ninguna clave, primero debe crear una. Para obtener más información, consulte Creación de claves.
-
Elija el botón Confirm (Confirmar) para utilizar la clave elegida.
- AWS CLI
-
-
Asocie la configuración del cifrado de secretos con el clúster mediante el siguiente comando de la AWS CLI. Reemplace los example values
por los de su propiedad.
aws eks associate-encryption-config \
--cluster-name my-cluster
\
--encryption-config '[{"resources":["secrets"],"provider":{"keyArn":"arn:aws:kms:region-code
:account
:key/key
"}}]'
Un ejemplo de salida sería el siguiente.
{
"update": {
"id": "3141b835-8103-423a-8e68-12c2521ffa4d
",
"status": "InProgress",
"type": "AssociateEncryptionConfig",
"params": [
{
"type": "EncryptionConfig",
"value": "[{\"resources\":[\"secrets\"],\"provider\":{\"keyArn\":\"arn:aws:kms:region-code
:account
:key/key
\"}}]"
}
],
"createdAt": 1613754188.734
,
"errors": []
}
}
-
Puede monitorear el estado de la actualización de cifrado con el siguiente comando. Utilice la especificación cluster name
y update ID
que se devolvió en la salida anterior. Cuando se muestra el estado Successful
, la actualización se ha completado.
aws eks describe-update \
--region region-code
\
--name my-cluster
\
--update-id 3141b835-8103-423a-8e68-12c2521ffa4d
Un ejemplo de salida sería el siguiente.
{
"update": {
"id": "3141b835-8103-423a-8e68-12c2521ffa4d
",
"status": "Successful",
"type": "AssociateEncryptionConfig",
"params": [
{
"type": "EncryptionConfig",
"value": "[{\"resources\":[\"secrets\"],\"provider\":{\"keyArn\":\"arn:aws:kms:region-code
:account
:key/key
\"}}]"
}
],
"createdAt": 1613754188.734>,
"errors": []
}
}
-
Para verificar que el cifrado se encuentra habilitado en el clúster, ejecute el comando describe-cluster
. La respuesta contiene una cadena de EncryptionConfig
.
aws eks describe-cluster --region region-code
--name my-cluster
Después de habilitar el cifrado en el clúster, deberá cifrar todos los secretos existentes con la clave nueva:
Si usa eksctl
, solo es necesario ejecutar el siguiente comando si opta por no volver a cifrar sus secretos automáticamente.
kubectl get secrets --all-namespaces -o json | kubectl annotate --overwrite -f - kms-encryption-timestamp="time value
"
Si habilita el cifrado de secretos para un clúster existente y alguna vez la clave de KMS que utiliza se elimina, no hay una ruta de recuperación para el clúster. Si elimina la clave de KMS, coloca el clúster permanentemente en un estado degradado. Para obtener más información, consulte Eliminación de claves de AWS KMS.
De forma predeterminada, el comando create-key
crea una clave KMS de cifrado simétrico con una política de clave que da al administrador raíz de la cuenta acceso en acciones y recursos de AWS KMS. Si desea reducir los permisos, asegúrese de que las acciones kms:DescribeKey
y kms:CreateGrant
estén permitidas en la política para la entidad principal que llama a la API create-cluster
.
Para clústeres que utilizan cifrado de sobres KMS, se requieren permisos kms:CreateGrant
. La condición kms:GrantIsForAWSResource
no es compatible con la acción CreateCluster y no debe utilizarse en las políticas de KMS para controlar permisos kms:CreateGrant
para los usuarios que realizan CreateCluster.