Encriptar datos con claves de encriptación administradas por el cliente

De forma predeterminada, Filestore encripta el contenido del cliente almacenado en reposo. Filestore controla la encriptación por ti sin que debas realizar ninguna acción adicional. Esta opción se denomina Encriptación predeterminada de Google.

Si deseas controlar tus claves de encriptación, puedes usar las claves de encriptación administradas por el cliente (CMEK) en Cloud KMS con servicios integrados en CMEK, incluido Filestore. El uso de claves de Cloud KMS te permite controlar su nivel de protección, ubicación, programa de rotación, permisos de uso y acceso, y límites criptográficos. El uso de Cloud KMS también te permite ver los registros de auditoría y controlar los ciclos de vida de las claves. En lugar de que Google posea y administre las claves de encriptación de claves (KEK) simétricas que protegen tus datos, tú las controlas y administras en Cloud KMS.

Después de configurar tus recursos con CMEK, la experiencia de acceso a tus recursos de Filestore es similar a usar la encriptación predeterminada de Google. Para obtener más información sobre tus opciones de encriptación, consulta Claves de encriptación administradas por el cliente (CMEK).

Los CMEK se pueden usar con las instancias y las copias de seguridad de Filestore.

Opciones de CMEK

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

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

Interrupciones del servicio de EKM

De forma predeterminada, un tercero administra las claves externas. En estas circunstancias, Google Cloud no es responsable de la disponibilidad de las claves.

Si el administrador de claves externo (EKM) le notifica al Cloud Key Management Service (Cloud KMS) que no se puede acceder a una clave externa, los usuarios reciben una notificación ekm_key_unreachable_detected. Durante un máximo de una hora, los usuarios tienen acceso limitado a las operaciones en la instancia. Después de una hora, si el estado de la clave no cambia, se aplican las siguientes acciones:

  • La clave está inhabilitada.
  • Todas las operaciones de encriptación y desencriptación fallan.
  • La instancia de Filestore está suspendida.

En algunos casos, como un evento no planificado, como un reinicio de la VM, es posible que el acceso a la instancia se interrumpa antes de una hora.

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

Vaya a la página de instancias de Filestore

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

Niveles admitidos

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

Nivel Compatibilidad con CMEK
HDD básico No
SSD básico No
Zonal
Regional
Enterprise

Crea un llavero de claves y una clave para usar con tu instancia

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

Otorga 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 encriptador/desencriptador 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
    

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

  2. Ejecuta el comando projects add-iam-policy-binding para asignar a la cuenta de servicio de Filestore el rol de encriptador/desencriptador de CryptoKey de Cloud KMS:

    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
    

    Reemplaza lo siguiente:

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

Crea una instancia que use tu clave de Cloud KMS

Consola de Google Cloud

Para crear una instancia que use tu clave de Cloud KMS para la encriptación de datos, haz lo siguiente:

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

    Vaya a la página de instancias de Filestore

  2. Haz clic en Crear instancia.

  3. Selecciona un nivel de instancia que admita CMEK y completa todos los otros campos obligatorios y opcionales como lo harías normalmente.

  4. Haz clic en Mostrar opciones avanzadas.

  5. Selecciona la casilla de verificación Usar una clave de encriptación administrada por el cliente (CMEK).

  6. Selecciona la clave de Cloud KMS que deseas usar para la instancia.

  7. Haz clic en Crear.

gcloud CLI

Para crear una instancia de Filestore que use tu clave de Cloud KMS para la encriptación de 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

Reemplaza lo siguiente:

  • TIER con un nivel de Filestore que admita CMEK
  • KMS_KEY con el nombre completo de la clave de Cloud KMS que deseas usar. Como alternativa, puedes especificar cada argumento separadamente en el formato:
--kms-key=KMS_KEY : --kms-keyring=KEY_RING --kms-location=KMS_REGION --kms-project=KMS_PROJECT_NUMBER_OR_ID

Reemplaza lo siguiente:

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

Obtén 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

Reemplaza lo siguiente:

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

La columna Name del resultado muestra el nombre completamente calificado de las claves existentes. Por ejemplo:

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

Obtén información de la clave de la instancia

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

Enumera las instancias que usan una clave de Cloud KMS específica

Para enumerar las instancias de Filestore que usan una clave en particular, ejecuta el comando instances list:

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

Reemplaza KMS_KEY por el nombre completamente calificado de la clave que deseas usar.

Ejemplo:

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

El resultado se verá de la siguiente manera:

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 2021-08-12T11:38:56

Obtén información de la clave de Cloud KMS para una instancia

Usa uno de los siguientes métodos para obtener información de la clave de Cloud KMS de una instancia de Filestore:

Consola de Google Cloud

  1. Vaya a la página de instancias de Filestore

    Vaya a la página de instancias de Filestore

  2. Haz clic en el ID de la instancia para abrir la página de detalles de la instancia.

  3. Haz clic en la pestaña Descripción general.

Si la instancia encripta datos con una clave de Cloud KMS en lugar de una clave que Google posee y administra, el nombre de la clave se muestra en el campo Clave de encriptación.

gcloud CLI

Ejecuta el siguiente comando instances describe:

gcloud filestore instances describe INSTANCE_ID \
   --location=INSTANCE_LOCATION

Reemplaza lo siguiente:

  • INSTANCE_ID por el ID de la instancia de Filestore sobre la que deseas obtener información.
  • INSTANCE_LOCATION por la región o zona en la que se encuentra la instancia.

El resultado se verá de la siguiente manera:

createTime: '2021-08-12T11:38:56.851157387Z'
fileShares:
- capacityGb: '1024'
  name: vol1
kmsKeyName: projects/example-project/locations/us-central1/keyRings/example-ring/cryptoKeys/example-key
labels:
  key: val
name: projects/consumer-project/locations/us-central1/instances/nfs-server
networks:
- ipAddresses:
  - 10.0.100.2
  modes:
  - MODE_IPV4
  network: network
  reservedIpRange: 10.166.108.0/23
state: READY
tier: ENTERPRISE

Inhabilita o destruye una clave de Cloud KMS que usa una instancia

Si se detecta un cambio en el estado de la clave de Cloud KMS, la instancia deja de entregar datos automáticamente. Estos son algunos ejemplos:

  • Inhabilitar una clave o una versión de clave
  • Destruir una clave o una versión de clave
  • Modificar los permisos de una clave

Por lo general, esta detección se produce a los pocos minutos del cambio en el estado de la clave, pero, en algunos casos, puede tardar hasta una hora.

Una vez que se detiene una instancia, se bloquea todo el acceso a los datos de los recursos compartidos de archivos y a las instantáneas. Se seguirá facturando por las instancias detenidas hasta que se borren.

Inicia una instancia detenida

Si una instancia de Filestore detenida usa una clave de Cloud KMS para la encriptación de datos, todas las versiones de la clave deben estar habilitadas o restablecidas antes de reiniciar la instancia.

Una vez que se habilite el estado de la clave de Cloud KMS, la instancia detectará automáticamente los cambios de clave y se reiniciará sin ninguna acción adicional, por lo general, en un plazo de 20 minutos.

Compatibilidad con CMEK para cadenas de copias de seguridad

Puedes usar CMEK para encriptar no solo tus instancias de Filestore, sino también tus cadenas de copias de seguridad.

Las cadenas de copias de seguridad residen en un solo bucket y región. Para almacenar y encriptar datos de copia de seguridad en una región fuera de la instancia de origen, los usuarios deben aplicar dos CMEK independientes: uno para la instancia y otro para la cadena de copia de seguridad. Se aplican algunos requisitos:

  • Una CMEK debe residir en la misma región que la cadena de copias de seguridad que encripta.

  • Se aplica una sola CMEK al bucket en el que se almacena la cadena de copias de seguridad y no se puede combinar ni reemplazar.

  • Para crear una copia de seguridad con una CMEK nueva, primero se debe borrar toda la cadena de copias de seguridad existente.

La compatibilidad con CMEK no está disponible para las copias de seguridad de nivel básico.

Para obtener más información, consulta Copias de seguridad.

¿Qué sigue?