Encriptar datos con claves de encriptado gestionadas por el cliente (CMEK)

De forma predeterminada, Filestore cifra el contenido del cliente en reposo. Filestore se encarga del cifrado sin que tengas que hacer nada más. Esta opción se llama Cifrado predeterminado de Google.

Si quieres controlar tus claves de encriptado, puedes usar claves de encriptado gestionadas por el cliente (CMEKs) en Cloud KMS con servicios integrados con CMEKs, como Filestore. Si usas claves de Cloud KMS, tendrás control sobre su nivel de protección, ubicación, calendario de rotación, permisos de uso y acceso, y límites criptográficos. Además, Cloud KMS te permite ver los registros de auditoría y controlar los ciclos de vida de las claves. En lugar de que Google sea el propietario y gestione las claves de cifrado de claves (KEKs) simétricas que protegen tus datos, tú controlas y gestionas estas claves en Cloud KMS.

Una vez que hayas configurado tus recursos con CMEKs, la experiencia de acceder a tus recursos de Filestore será similar a la de usar el cifrado predeterminado de Google. Para obtener más información sobre las opciones de encriptado, consulta Claves de encriptado gestionadas por el cliente (CMEK).

Las CMEKs se pueden usar con instancias y copias de seguridad de Filestore.

Opciones de CMEK

Filestore admite CMEKs almacenadas como claves de software, como claves de hardware en un clúster de HSM y como claves almacenadas externamente en Cloud External Key Manager (Cloud EKM).

Para obtener más información, consulta Cloud Key Management Service.

Interrupciones del servicio de EKM

Por diseño, las claves externas las gestiona un tercero. En estas circunstancias,Google Cloud no se responsabiliza de la disponibilidad de las claves.

Si Cloud Key Management Service (Cloud KMS) recibe una notificación de External Key Manager (EKM) que indica que no se puede acceder a una clave externa, los usuarios recibirán una ekm_key_unreachable_detected notificación. Durante un máximo de una hora, los usuarios tienen acceso limitado a las operaciones de la instancia. Si el estado de la clave no cambia en una hora, se aplican las siguientes acciones:

  • La clave está inhabilitada.
  • Todas las operaciones de cifrado y descifrado fallan.
  • La instancia de Filestore está suspendida.

En algunos casos, como un evento imprevisto (por ejemplo, el reinicio de una VM), el acceso a la instancia puede interrumpirse antes de una hora.

Las notificaciones de claves inaccesibles se pueden ver en la página de detalles de la instancia de Filestore:

Ve a la página Instancias de Filestore.

Los usuarios también reciben ekm_key_unreachable_detected notificaciones sobre cualquiera de las siguientes operaciones si se realizan en el plazo de una hora desde la primera notificación:

Niveles admitidos

En la siguiente tabla se muestran los niveles de servicio de Filestore que admiten CMEKs:

Nivel Compatibilidad con CMEK
HDD básico No
SSD básico No
Por zonas
Regional
Empresa

Crear un conjunto de claves y una clave para usar con tu instancia

El conjunto de claves y la clave pueden estar en un proyecto distinto de la instancia de Filestore, pero deben estar en la misma ubicación. Si ya tienes un llavero de claves y una clave de Cloud KMS que quieres usar con Filestore, ve a la siguiente sección. De lo contrario, sigue las instrucciones para crear claves de cifrado simétricas y, a continuación, crea un conjunto de claves y una clave.

Conceder permiso de acceso a la clave a la cuenta de servicio de Filestore

Para poder crear una instancia de Filestore que use una CMEK, la cuenta de servicio de Filestore debe tener el rol de encargado de cifrar o descifrar claves de CryptoKey de Cloud KMS (roles/cloudkms.cryptoKeyEncrypterDecrypter).

  1. Se crea una cuenta de servicio de Filestore la primera vez que creas una instancia de Filestore en el proyecto. Si aún no tienes una cuenta de servicio de Filestore, ejecuta el siguiente comando services identity create:

    gcloud beta services identity create --service=file.googleapis.com --project=INSTANCE_PROJECT_NUMBER_OR_ID
    

    Sustituye INSTANCE_PROJECT_NUMBER_OR_ID por el número o el ID del proyecto en el que quieras crear la instancia de Filestore.

  2. Asigna a la cuenta de servicio de Filestore el rol Encargado del encriptado y desencriptado de la clave criptográfica Cloud KMS ejecutando el comando projects add-iam-policy-binding:

    gcloud projects add-iam-policy-binding KMS_PROJECT_NUMBER_OR_ID \
        --member serviceAccount:service-INSTANCE_PROJECT_NUMBER@cloud-filer.iam.gserviceaccount.com \
        --role roles/cloudkms.cryptoKeyEncrypterDecrypter
    

    Haz los cambios siguientes:

    • KMS_PROJECT_NUMBER_OR_ID con el número o el ID del proyecto que contiene la clave de Cloud KMS que quieres usar.
    • INSTANCE_PROJECT_NUMBER con el número de proyecto (no el ID del proyecto) en el que quieras crear la instancia de Filestore.

Crear una instancia que use tu clave de Cloud KMS

Google Cloud consola

Para crear una instancia que use tu clave de Cloud KMS para cifrar datos, sigue estos pasos:

  1. En la consola, ve a la página de instancias de Filestore. Google Cloud

    Ve a la página Instancias de Filestore.

  2. Haz clic en Crear instancia.

  3. Seleccione un nivel de instancia que admita CMEKs y rellene todos los demás campos obligatorios y opcionales como lo haría normalmente.

  4. Haz clic en Mostrar opciones avanzadas.

  5. Marca la casilla Usar una clave de encriptado gestionada por el cliente (CMEK).

  6. Selecciona la clave de Cloud KMS que quieras usar en la instancia.

  7. Haz clic en Crear.

CLI de gcloud

Para crear una instancia de Filestore que use tu clave de Cloud KMS para cifrar datos, especifica la marca --kms-key en el comando filestore instances create:

gcloud filestore instances create nfs-server \
    --tier=<var>TIER</var> \
    --location=us-central1 \
    --file-share=name="vol1",capacity=1TiB \
    --network=name="default" \
    --kms-key=KMS_KEY

Haz los cambios siguientes:

  • TIER con un nivel de Filestore que admita las CMEKs.
  • KMS_KEY con el nombre completo de la clave de Cloud KMS que quieras usar. También puedes especificar cada argumento por separado con el siguiente formato:
--kms-key=KMS_KEY : --kms-keyring=KEY_RING --kms-location=KMS_REGION --kms-project=KMS_PROJECT_NUMBER_OR_ID

Haz los cambios siguientes:

  • KMS_KEY con el nombre de la clave de Cloud KMS.
  • KMS_PROJECT_NUMBER_OR_ID por el número o el ID del proyecto en el que se crea la clave.
  • KMS_KEY_RING con el nombre del conjunto de claves.
  • KMS_REGION con la región del conjunto de claves. El conjunto de claves y la instancia deben estar en la misma región.

Obtener una lista de claves

Para obtener una lista de claves, ejecuta el comando kms keys list:

  gcloud kms keys list \
  --project=KMS_PROJECT_NUMBER_OR_ID \
  --keyring=KEY_RING \
  --location=KMS_REGION

Haz los cambios siguientes:

  • KMS_PROJECT_NUMBER_OR_ID por el número o el ID del proyecto en el que se crea la clave.
  • KEY_RING con el nombre del conjunto de claves.
  • KMS_REGION con la región del conjunto de claves.

La columna Nombre de la salida muestra el nombre completo de las claves existentes. Por ejemplo:

projects/example-project/locations/us-central1/keyRings/example-ring/cryptoKeys/example-key

Obtener información sobre la clave de instancia

En las siguientes secciones se explica cómo obtener información sobre la clave de instancia.

Listar las instancias que usan una clave de Cloud KMS concreta

Para mostrar las instancias de Filestore que usan una clave concreta, ejecuta el comando instances list:

gcloud filestore instances list --filter="kmsKeyName=KMS_KEY"

Sustituye KMS_KEY por el nombre completo de la clave que quieras usar.

Ejemplo:

gcloud filestore instances list \
    --filter="kmsKeyName=projects/example-project/locations/us-central1/keyRings/example-ring/cryptoKeys/example-key"

El resultado tiene este aspecto:

INSTANCE_NAME LOCATION    TIER       CAPACITY_GB FILE_SHARE_NAME IP_ADDRESS   STATE CREATE_TIME
nfs-server    us-central1 ENTERPRISE 1024        vol1            10.166.108.2 READY