Proteger datos con claves de encriptado

En esta página se describe cómo crear, configurar y aplicar claves de cifrado gestionadas por el cliente (CMEK) en AlloyDB para PostgreSQL.

Para obtener más información sobre las claves de cifrado gestionadas por el cliente, consulta el artículo Acerca de las claves de cifrado gestionadas por el cliente.

Crear y autorizar una clave CMEK para AlloyDB

  1. Crea una clave en Cloud Key Management Service (Cloud KMS). AlloyDB admite los siguientes tipos de claves:

    La clave debe estar en la misma ubicación que tu clúster de AlloyDB. Por ejemplo, un clúster de AlloyDB ubicado en us-west1 solo puede usar claves de us-west1.

    Si ya tienes una clave de Cloud KMS en la ubicación correcta, puedes saltarte este paso.

  2. Concede acceso a AlloyDB a la clave.

    1. Con la CLI de Google Cloud, crea y muestra el agente de servicio, o muéstralo si la cuenta ya existe:
        gcloud beta services identity create --service=alloydb.googleapis.com \
            --project=PROJECT

    El comando gcloud services identity crea u obtiene el agente de servicio que AlloyDB puede usar para acceder a la clave de Cloud KMS en tu nombre.

    El ID de la cuenta de servicio se parece a una dirección de correo electrónico:

        Service identity created: service-xxx@gcp-sa-alloydb.iam.gserviceaccount.com
    
    1. Asigna el rol cloudkms.cryptoKeyEncrypterDecrypter a la cuenta de servicio:
        gcloud kms keys add-iam-policy-binding KEY \
            --location REGION \
            --keyring KEYRING \
            --project=PROJECT \
            --member serviceAccount:service-xxx@gcp-sa-alloydb.iam.gserviceaccount.com \
            --role roles/cloudkms.cryptoKeyEncrypterDecrypter

    Haz los cambios siguientes:

    • KEY: el ID de Cloud KMS de la clave
    • REGION: la región de la clave (por ejemplo, us-central1)
    • PROJECT: el ID del proyecto de la clave
    • KEYRING: el ID del conjunto de claves de Cloud KMS de la clave

    Este rol concede a la cuenta de servicio permiso para cifrar y descifrar con la clave de Cloud KMS. Para obtener más información, consulta Permisos y roles de Cloud KMS.

Crear un clúster cifrado con CMEK

Cuando creas un clúster, puedes elegir si quieres cifrarlo con el cifrado predeterminado gestionado por Google o usar una clave CMEK. Para obtener más información, consulta Crear un clúster y su instancia principal.

Ver el método de cifrado y la clave CMEK de un clúster

Consola

En la columna Encriptado de la página Clústeres se indica si cada clúster de tu proyecto usa el cifrado gestionado por Google o la CMEK.

Ir a la página Clústeres

Para ver los detalles de una clave de un clúster que usa CMEK, haz clic en su nombre en la columna Nombre del recurso. El campo Clave de cifrado de la página de detalles resultante contiene una descripción de la clave, incluido un enlace a su propia página de detalles de Cloud KMS.

gcloud

Llama al comando gcloud alloydb clusters describe:

gcloud alloydb clusters describe CLUSTER \
--project=PROJECT \
--region=REGION

Haz los cambios siguientes:

  • CLUSTER: el ID del clúster que se va a describir
  • PROJECT: el ID del proyecto del clúster
  • REGION: la región del clúster (por ejemplo, us-central1).

El resultado incluye un campo encryptionInfo con un resumen del cifrado del clúster.

Aplicar CMEK a las copias de seguridad

Cuando creas una copia de seguridad, puedes elegir si quieres cifrarla con el cifrado predeterminado gestionado por Google o con una clave CMEK. Para obtener más información, consulta Crear una copia de seguridad bajo demanda o Programar copias de seguridad automáticas.

También puedes aplicar una clave CMEK al clúster creado al restaurar una copia de seguridad, independientemente del método de cifrado de esa copia. Para obtener más información, consulta Restaurar un clúster.

Rotar claves con el cifrado CMEK

Es importante que conozcas las implicaciones de rotar tus claves de cifrado gestionadas por el cliente (CMEK) en Cloud Key Management Service (Cloud KMS) cuando se usan con clústeres de AlloyDB.

Cuando rotas una clave CMEK, ocurre lo siguiente con tus datos de AlloyDB:

  • El acceso inmediato continúa: los datos siguen cifrados con la versión original de la clave de cifrado de datos (DEK), siempre que la versión anterior de la clave siga estando disponible en KMS y no se haya inhabilitado ni eliminado.

  • El recifrado completo de los datos es manual: para que todos los datos de AlloyDB tengan la versión más reciente de la clave principal, debes volver a cifrarlos.

Para volver a cifrar un clúster con una nueva versión de la clave CMEK, debes realizar una operación de copia de seguridad y restauración:

  1. Crea una copia de seguridad de tu clúster.

  2. Restaura la copia de seguridad en un nuevo clúster y especifica la nueva versión de la clave principal de CMEK durante el proceso de restauración.

Para obtener más información, consulta Restauración de clústeres.

La rotación frecuente de claves CMEK con AlloyDB requiere una sobrecarga operativa considerable. Como los datos no se vuelven a cifrar automáticamente y el recifrado manual implica crear una copia de seguridad completa y restaurarla en un clúster nuevo, las rotaciones frecuentes pueden ser engorrosas y afectar a la disponibilidad o a la complejidad de la gestión.

Solo puedes eliminar de forma segura las versiones antiguas de las claves CMEK en Cloud KMS después de confirmar que todos los datos de AlloyDB pertinentes se han vuelto a cifrar manualmente y que los datos utilizan una versión de clave más reciente.

Ver el método de cifrado y la clave CMEK de una copia de seguridad

Consola

En la columna Encriptado de la página Copias de seguridad se indica si cada clúster de tu proyecto usa el cifrado gestionado por Google o la CMEK.

Ve a la página Copias de seguridad.

Para ver los detalles de una copia de seguridad con CMEK, haz clic en Restaurar. El campo Clave de cifrado del panel de detalles posterior contiene una descripción de la clave, incluido un enlace a su propia página de detalles de Cloud KMS.

gcloud

Llama al comando gcloud alloydb backups describe:

gcloud alloydb backups describe CLUSTER \
--project=PROJECT \
--region=REGION

Haz los cambios siguientes:

  • CLUSTER: ID de la copia de seguridad que se va a describir
  • PROJECT: el ID del proyecto de la copia de seguridad
  • REGION: la región de la copia de seguridad (por ejemplo, us-central1)

La salida incluye un campo encryptionInfo con un resumen del cifrado de la copia de seguridad.

Inhabilitar una clave

Si inhabilitas la clave CMEK de un clúster, no podrás acceder a los datos de ese clúster hasta que vuelvas a habilitar la clave.

Sin embargo, inhabilitar una clave puede tardar hasta tres horas en propagarse a tu clúster de AlloyDB. Para inhabilitar una llave y, al mismo tiempo, impedir el acceso a tus datos, sigue estos pasos:

  1. Elimina la instancia principal de tu clúster. Esto no afecta a los datos de tu clúster. Puede crear una instancia principal después de volver a habilitar la clave, tal como se describe en la siguiente sección.

  2. Usa Cloud KMS para inhabilitar la clave.

Habilitar una clave

Para habilitar una clave, sigue estos pasos:

  1. Usa Cloud KMS para habilitar la clave.

  2. Si has eliminado la instancia principal de tu clúster antes de inhabilitar la clave, crea una nueva instancia principal.

Habilitar una clave puede tardar hasta tres horas en propagarse a tu clúster. Se puede acceder a los datos del clúster en cuanto se produce esta propagación.

Ver registros de auditoría de una clave de Cloud KMS

Para ver los registros de auditoría asociados a una clave CMEK concreta, sigue estos pasos:

  1. Asegúrate de que el registro esté habilitado para la API Cloud KMS en tu proyecto.

  2. Ve a Explorador de registros en la consola de Google Cloud .

    Ir al Explorador de registros

  3. Limita las entradas de registro a tu clave de Cloud KMS añadiendo las siguientes líneas al generador de consultas:

    resource.type="cloudkms_cryptokey"
    resource.labels.location="REGION"
    resource.labels.key_ring_id="KEYRING"
    resource.labels.crypto_key_id="KEY"
    

    Haz los cambios siguientes:

    • REGION: la región de la clave (por ejemplo, us-central1)
    • KEYRING: el ID del conjunto de claves de Cloud KMS de la clave
    • KEY: el ID de Cloud KMS de la clave
  4. En condiciones normales, las operaciones de cifrado y descifrado se registran con la gravedad INFO. Estas entradas se registran cuando las instancias de tu clúster de AlloyDB validan la clave de Cloud KMS, lo que ocurre aproximadamente cada cinco minutos.

  5. Si AlloyDB no puede acceder a la clave, las operaciones se registran como ERROR.

Ver las justificaciones de acceso de una clave de Cloud EKM

Si usas una clave de Cloud EKM, puedes usar Justificaciones de Acceso a Claves para ver el motivo de cada solicitud de Cloud EKM. Además, en función de la justificación proporcionada, puedes aprobar o denegar una solicitud automáticamente. Para obtener más información, consulta Ver y tomar medidas en relación con las justificaciones.