Ayude a mejorar esta página
Para contribuir a esta guía del usuario, elija el enlace Edit this page on GitHub que se encuentra en el panel derecho de cada página.
Cifrado de los secretos de Kubernetes con {aws} KMS en los clústeres existentes
Si habilita el cifrado de secretos
-
Simétrica
-
Debe poder cifrar y descifrar datos
-
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.
aviso
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
. -
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. Sustituya los valores de ejemplo
por sus propios valores.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
yupdate ID
que se devolvió en la salida anterior. Cuando se muestra el estadoSuccessful
, 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 deEncryptionConfig
.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:
nota
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"
aviso
Si habilita el cifrado de secretos
nota
De forma predeterminada, el comando create-key
crea una clave KMS de cifrado simétrica con una política de claves que da al administrador raíz de la cuenta acceso a las acciones y los 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.