Rotar las claves de seguridad de su clúster

Rotación de claves

La rotación de claves consiste en modificar el material criptográfico subyacente contenido en una clave de cifrado (KEK) . Puede activarse automáticamente como parte de una rotación programada o manualmente, generalmente tras un incidente de seguridad que pueda haber comprometido las claves. La rotación de claves reemplaza únicamente el campo de la clave que contiene los datos sin procesar de la clave de cifrado/descifrado.

Rotación automática de claves

El Servicio de Administración de Claves de AWS (KMS) admite la rotación automática de claves KMS . Cuando está habilitado, AWS genera automáticamente nuevo material de claves criptográficas para su clave una vez al año. No se requieren acciones manuales.

Tras una rotación de claves, GKE en AWS cifra cada nuevo secreto con la nueva clave. Cualquier secreto creado previamente se descifra con su clave original. Por este motivo, AWS conserva el material de claves antiguo de CMK indefinidamente, lo que permite descifrar las DEK antiguas al leer los secretos antiguos.

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

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

Reemplace KMS_KEY_ID con su ID de clave AWS KMS.

Puede habilitar la rotación automática de claves ejecutando este comando:

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

Rotación manual de teclas

Esta sección explica cómo rotar manualmente las claves de configuración del plano de control o del grupo de nodos.

Tecla de configuración del plano de control

Para rotar manualmente la clave de configuración del plano de control , realice los siguientes pasos:

  1. Crea una nueva clave del Servicio de Administración de Claves en la Nube . Guarda el valor del ARN de tu clave KMS. Lo usarás más adelante.

  2. Asegúrese de que la función de IAM asociada con el clúster tenga permisos para cifrar y descifrar utilizando la nueva clave.

  3. Utilice 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
    

    Reemplace lo siguiente:

    • CLUSTER_NAME : el nombre de su clúster
    • GOOGLE_CLOUD_LOCATION : la ubicación compatible Google Cloud región que administra su clúster, por ejemplo, us-west1
    • CONFIG_ENCRYPTION_KMS_KEY_ARN : su nuevo ARN de clave KMS

Volumen de la raíz del plano de control

Para rotar manualmente la tecla de volumen raíz del plano de control , realice los siguientes pasos:

  1. Crea una nueva clave del Servicio de Administración de Claves en la Nube . Guarda el valor del ARN de tu clave KMS. Lo usarás más adelante.

  2. Asegúrese de que la función de IAM asociada con el clúster tenga permisos para cifrar y descifrar utilizando la nueva clave.

  3. Utilice 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
    

    Reemplace lo siguiente:

    • CLUSTER_NAME : el nombre de su clúster
    • GOOGLE_CLOUD_LOCATION : la ubicación compatible Google Cloud región que administra su clúster, por ejemplo, us-west1
    • ROOT_VOLUME_KMS_KEY_ARN : nombre de recurso de Amazon (ARN) de la clave AWS KMS para cifrar el volumen raíz

Clave de configuración del grupo de nodos

Para rotar manualmente la clave de configuración de su grupo de nodos , realice los siguientes pasos:

  1. Cree una nueva clave del Servicio de administración de claves en la nube .

  2. Asegúrese de que la función de IAM asociada con el clúster tenga permisos para cifrar y descifrar utilizando la nueva clave.

  3. Actualizar el alias KMS en uso:

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

    Reemplace lo siguiente:

    • KEY_ALIAS : el alias de su clave existente
    • CONFIG_ENCRYPTION_KMS_KEY_ARN : su nuevo ARN de clave KMS
  4. Obligar al clúster a volver a cifrar todos los secretos del clúster utilizando 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. Desactive la clave antigua de AWS KMS. Para obtener más información, consulte Activación y desactivación de claves .

Volúmenes raíz del grupo de nodos

Para rotar manualmente la clave del volumen raíz de su grupo de nodos , realice los siguientes pasos:

  1. Cree una nueva clave del Servicio de administración de claves en la nube .

  2. Asegúrese de que la función de IAM asociada con el clúster tenga permisos para cifrar y descifrar utilizando la nueva clave.

  3. Actualizar el alias KMS en uso:

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

    Reemplace lo siguiente:

    • KEY_ALIAS : el alias de su clave existente
    • ROOT_ENCRYPTION_KMS_KEY_ARN : su nuevo ARN de clave KMS
  4. Actualice su grupo de nodos:

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

    Reemplace lo siguiente:

    • NODE_POOL_NAME : nombre de su grupo de nodos
    • ROOT_VOLUME_KMS_KEY_ARN : nombre de recurso de Amazon (ARN) de la clave AWS KMS para cifrar el volumen raíz
  5. Desactive la clave antigua de AWS KMS. Para obtener más información, consulte Activación y desactivación de claves .