Rotar las llaves de seguridad del clúster

Rotación de claves

La rotación de claves es el proceso de cambiar el material criptográfico subyacente contenido en una clave de cifrado de claves (KEK). Se puede activar automáticamente como parte de una rotación programada o manualmente, normalmente después de un incidente de seguridad en el que las claves se hayan podido ver comprometidas. La rotación de claves solo sustituye el campo de la clave que contiene los datos de la clave de cifrado o descifrado sin procesar.

Rotación automática de claves

AWS Key Management Service (KMS) admite la rotación automática de claves de KMS. Si está habilitada, AWS genera automáticamente material de clave criptográfica nuevo para tu clave una vez al año. No es necesario realizar ninguna acción manual.

Después de una rotación de claves, GKE en AWS cifra cada Secret nuevo con la clave nueva. Los secretos creados anteriormente se descifran con su clave original. Por este motivo, AWS conserva el material de las claves antiguas de CMK de forma indefinida, lo que permite que las DEK antiguas se desencripten cuando se leen los secretos antiguos.

Para ver si una clave de KMS tiene habilitada la rotación automática, usa el siguiente comando:

aws kms get-key-rotation --key-id KMS_KEY_ID

Sustituye KMS_KEY_ID por el ID de tu clave de KMS de AWS.

Para habilitar la rotación automática de claves, ejecuta este comando:

aws kms enable-key-rotation --key-id KMS_KEY_ID

Rotación de claves manual

En esta sección se explica cómo rotar manualmente las claves de configuración del plano de control o del pool de nodos.

Clave de configuración del plano de control

Para rotar manualmente la clave de configuración del plano de control, sigue estos pasos:

  1. Crea una clave de Cloud Key Management Service. Guarda el valor del ARN de tu clave de KMS. Lo usarás más adelante.

  2. Asegúrate de que el rol de gestión de identidades y accesos asociado al clúster tenga permisos para cifrar y descifrar con la nueva clave.

  3. Usa el comando gcloud container aws clusters update para actualizar la clave de cifrado.

     gcloud container aws clusters update CLUSTER_NAME \
        --location=GOOGLE_CLOUD_LOCATION \
        --config-encryption-kms-key-arn=CONFIG_ENCRYPTION_KMS_KEY_ARN
    

    Haz los cambios siguientes:

    • CLUSTER_NAME: el nombre de tu clúster
    • GOOGLE_CLOUD_LOCATION: la región Google Cloud admitida que gestiona tu clúster. Por ejemplo, us-west1.
    • CONFIG_ENCRYPTION_KMS_KEY_ARN: el ARN de la nueva clave de KMS

Volumen raíz del plano de control

Para rotar manualmente la clave del volumen raíz del plano de control, sigue estos pasos:

  1. Crea una clave de Cloud Key Management Service. Guarda el valor del ARN de tu clave de KMS. Lo usarás más adelante.

  2. Asegúrate de que el rol de gestión de identidades y accesos asociado al clúster tenga permisos para cifrar y descifrar con la nueva clave.

  3. Usa el comando gcloud container aws clusters update para actualizar la clave de cifrado.

     gcloud container aws clusters update CLUSTER_NAME \
        --location=GOOGLE_CLOUD_LOCATION \
        --root-volume-kms-key-arn=ROOT_VOLUME_KMS_KEY_ARN
    

    Haz los cambios siguientes:

    • CLUSTER_NAME: el nombre de tu clúster
    • GOOGLE_CLOUD_LOCATION: la región Google Cloud admitida que gestiona tu clúster. Por ejemplo, us-west1.
    • ROOT_VOLUME_KMS_KEY_ARN: nombre de recurso de Amazon (ARN) de la clave de KMS de AWS para cifrar el volumen raíz

Clave de configuración del grupo de nodos

Para rotar manualmente la clave de la configuración del grupo de nodos, sigue estos pasos:

  1. Crea una clave de Cloud Key Management Service.

  2. Asegúrate de que el rol de gestión de identidades y accesos asociado al clúster tenga permisos para cifrar y descifrar con la nueva clave.

  3. Actualiza el alias de KMS que se está usando:

     aws kms update-alias --alias-name KEY_ALIAS \
         --target-key-id CONFIG_ENCRYPTION_KMS_KEY_ARN
    

    Haz los cambios siguientes:

    • KEY_ALIAS: alias de la clave
    • CONFIG_ENCRYPTION_KMS_KEY_ARN: el ARN de la nueva clave de KMS
  4. Fuerza al clúster a volver a cifrar todos los secretos del clúster con la nueva clave de cifrado:

     kubectl get secrets --all-namespaces -o json | \
     kubectl annotate --overwrite -f - encryption-key-rotation-time=`date +"%Y%m%d-%H%M%S"`
    
  5. Inhabilita la clave de KMS de AWS antigua. Para obtener más información, consulta el artículo sobre cómo habilitar e inhabilitar claves.

Volúmenes raíz de grupos de nodos

Para rotar manualmente la clave del volumen raíz del grupo de nodos, sigue estos pasos:

  1. Crea una clave de Cloud Key Management Service.

  2. Asegúrate de que el rol de gestión de identidades y accesos asociado al clúster tenga permisos para cifrar y descifrar con la nueva clave.

  3. Actualiza el alias de KMS que se está usando:

     aws kms update-alias --alias-name KEY_ALIAS \
         --target-key-id ROOT_VOLUME_KMS_KEY_ARN
    

    Haz los cambios siguientes:

    • KEY_ALIAS: alias de la clave
    • ROOT_ENCRYPTION_KMS_KEY_ARN: el ARN de la nueva clave de KMS
  4. Actualiza el grupo de nodos:

     gcloud container aws node-pools update NODE_POOL_NAME \
         --root-volume-kms-key-arn=ROOT_VOLUME_KMS_KEY_ARN
    

    Haz los cambios siguientes:

    • NODE_POOL_NAME: nombre del grupo de nodos
    • ROOT_VOLUME_KMS_KEY_ARN: nombre de recurso de Amazon (ARN) de la clave de KMS de AWS para cifrar el volumen raíz
  5. Inhabilita la clave de KMS de AWS antigua. Para obtener más información, consulta el artículo sobre cómo habilitar e inhabilitar claves.