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:
- Restaurar una captura
- Crear una copia de seguridad de la instancia
- Eliminar una copia de seguridad
- Restaurar una instancia a partir de una copia de seguridad
- Actualizar o parchear una instancia
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 | Sí |
| Regional | Sí |
| Empresa | Sí |
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).
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_IDSustituye INSTANCE_PROJECT_NUMBER_OR_ID por el número o el ID del proyecto en el que quieras crear la instancia de Filestore.
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.cryptoKeyEncrypterDecrypterHaz 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:
En la consola, ve a la página de instancias de Filestore. Google Cloud
Haz clic en Crear instancia.
Seleccione un nivel de instancia que admita CMEKs y rellene todos los demás campos obligatorios y opcionales como lo haría normalmente.
Haz clic en Mostrar opciones avanzadas.
Marca la casilla Usar una clave de encriptado gestionada por el cliente (CMEK).
Selecciona la clave de Cloud KMS que quieras usar en la instancia.
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