Rota las llaves de seguridad de tu clúster

Rotación de claves

La rotación de claves es la acción de cambiar el material criptográfico subyacente contenido en una clave de encriptación de claves (KEK). Se puede activar de forma automática como parte de una rotación programada o de forma manual, por lo general, después de un incidente de seguridad en el que las claves se ven comprometidas. La rotación de claves reemplaza solo el campo único en la clave que contiene los datos de claves de encriptación y desencriptación sin procesar.

Rotación de claves automática

El servicio de administración de claves (KMS) de AWS admite la rotación automática de claves de KMS. Cuando se habilita, AWS genera de forma automática material nuevo de clave criptográfica para tu clave una vez al año. No debes realizar acciones manuales.

Después de una rotación de claves, GKE on AWS encripta cada Secret nuevo con la clave nueva. Todos los secretos creados antes se desencriptan con su clave original. Por este motivo, AWS mantiene el material de clave anterior de CMK a perpetuidad, lo que permite que las DEK antiguas se desencripten cuando se lean los secretos antiguos.

Puedes ver si una clave de KMS tiene habilitada la rotación automática o no con el siguiente comando:

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

Reemplaza KMS_KEY_ID por tu ID de clave de KMS de AWS.

Puedes habilitar la rotación automática de claves si ejecutas el siguiente 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 de forma manual el plano de control o las claves de configuración del grupo de nodos.

Clave de configuración del plano de control

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

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

  2. Asegúrate de que la función de IAM asociada al clúster tenga permisos para encriptar y desencriptar con la clave nueva.

  3. Usa el comando gcloud container aws clusters update para actualizar la clave de encriptación.

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

    Reemplaza lo siguiente:

    • CLUSTER_NAME: Es el nombre del clúster
    • GOOGLE_CLOUD_LOCATION: Es la región de Google Cloud compatible con la que se administra el clúster, por ejemplo, us-west1.
    • CONFIG_ENCRYPTION_KMS_KEY_ARN: Tu nuevo ARN de clave de KMS.

Volumen raíz del plano de control

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

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

  2. Asegúrate de que la función de IAM asociada al clúster tenga permisos para encriptar y desencriptar con la clave nueva.

  3. Usa el comando gcloud container aws clusters update para actualizar la clave de encriptación.

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

    Reemplaza lo siguiente:

    • CLUSTER_NAME: Es el nombre del clúster
    • GOOGLE_CLOUD_LOCATION: Es la región de Google Cloud compatible con la que se administra el 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 encriptar el volumen raíz

Clave de configuración de grupo de nodos

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

  1. Crea una nueva clave de Cloud Key Management Service

  2. Asegúrate de que la función de IAM asociada al clúster tenga permisos para encriptar y desencriptar con la clave nueva.

  3. Actualiza el alias de KMS en uso:

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

    Reemplaza lo siguiente:

    • KEY_ALIAS: Es el alias de tu clave existente.
    • CONFIG_ENCRYPTION_KMS_KEY_ARN: Tu nuevo ARN de clave de KMS.
  4. Obliga al clúster a volver a encriptar todos los secretos del clúster con la nueva clave de encriptación:

     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 anterior. Si deseas obtener más información, consulta Inhabilita y habilita claves.

Volúmenes raíz del grupo de nodos

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

  1. Crea una nueva clave de Cloud Key Management Service

  2. Asegúrate de que la función de IAM asociada al clúster tenga permisos para encriptar y desencriptar con la clave nueva.

  3. Actualiza el alias de KMS en uso:

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

    Reemplaza lo siguiente:

    • KEY_ALIAS: Es el alias de tu clave existente.
    • ROOT_ENCRYPTION_KMS_KEY_ARN: Tu nuevo ARN de clave de KMS.
  4. Actualiza tu grupo de nodos:

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

    Reemplaza lo siguiente:

    • NODE_POOL_NAME: El nombre de tu grupo de nodos
    • ROOT_VOLUME_KMS_KEY_ARN: Nombre de recurso de Amazon (ARN) de la clave de KMS de AWS para encriptar el volumen raíz
  5. Inhabilita la clave de KMS de AWS anterior. Si deseas obtener más información, consulta Inhabilita y habilita claves.