De forma predeterminada, Google Cloud automáticamente encripta los datos cuando están en reposo usar claves de encriptación administrada por Google. Si tienes requisitos reglamentarios o de cumplimiento específicos relacionadas con las claves que protegen tus datos, puedes usar claves claves de encriptación (CMEK) para tu API de Cloud Healthcare conjuntos de datos. En lugar de que Google sea propietario y administrador de las claves de encriptación que protegen tu tus conjuntos de datos de la API de Cloud Healthcare se encriptan con una clave que tú controlas y administras en Cloud Key Management Service (Cloud KMS).
Para obtener más información sobre CMEK en general, incluido cuándo y por qué habilitarla, consulta Claves de encriptación administradas por el cliente (CMEK).
Antes de comenzar
Decide si tu conjunto de datos de la API de Cloud Healthcare Cloud KMS estará en el mismo proyecto de Google Cloud o en y los recursos, especialmente aquellos sensibles. Para obtener orientación, consulta Separación de obligaciones.
Para fines de documentación, se usan las siguientes convenciones:
PROJECT_ID
: El ID del proyecto de la API de Cloud HealthcareKMS_PROJECT_ID
: Es el ID del proyecto en el que Cloud KMS que puede ser la misma que la dePROJECT_ID
Para obtener información sobre los números y los ID de los proyectos de Google Cloud, consulta la sección Identifica proyectos.
Limitaciones
- Solo puedes usar las claves de Cloud KMS cuando creas un conjunto de datos de la API de Cloud Healthcare. No puedes habilitar, cambiar ni inhabilitar las claves de Cloud KMS en una API de Cloud Healthcare existente. de tu conjunto de datos.
- Solo los almacenes de FHIR, DICOM y HL7v2 son compatibles con los conjuntos de datos encriptados con CMEK. La protección de CMEK se aplica a almacenes DICOM, FHIR y HL7v2 en el conjunto de datos y sus recursos.
- No puedes desidentificar los recursos encriptados con CMEK.
Operaciones de CMEK
Las claves de Cloud KMS se usan cuando se crea, lee, actualiza un recurso o borrarse, y para tareas operativas, como facturación o asegurarse de que la clave esté disponible.
Consideraciones de claves externas
Para obtener información sobre el uso de las claves que administras en una sistema de administración de claves externo admitido Para Google Cloud, consulta Cloud External Key Manager.
Si pierdes las claves que administras fuera de Google Cloud, Google no podrá recuperar tus datos.
Falta de disponibilidad y pérdida de datos de las claves
Si una clave encripta un conjunto de datos y esa clave deja de estar disponible y permanece no disponible, la API de Cloud Healthcare la inhabilita y, con el tiempo, borra del conjunto de datos. A veces, una clave deja de estar disponible si se inhabilita o se destruye, o si no se puede acceder a ellos debido a permisos revocados, pero este comportamiento ocurre si la no está disponible por algún motivo. El nivel de protección de la clave o si es una clave externa no afecta este comportamiento. Es posible que las claves externas tampoco estén disponibles de forma impredecible. Por ejemplo, pueden surgir problemas de conectividad recursos de Google Cloud y tu EKM.
En el siguiente proceso, se describe cómo se verifica la disponibilidad de las claves y cómo un conjunto de datos se puede inhabilitar y borrar:
Después de crear un conjunto de datos de la API de Cloud Healthcare encriptado con CMEK, La API de Cloud Healthcare verifica el estado de la clave cada cinco minutos para garantizar que la clave esté disponible. Si la clave no está disponible, la API de Cloud Healthcare continúa para admitir solicitudes al conjunto de datos por hasta una hora.
Después de una hora, si la API de Cloud Healthcare sigue sin poder conectarse con Cloud KMS, el conjunto de datos de la API de Cloud Healthcare está inhabilitado como protección medir. Para volver a habilitar el conjunto de datos de la API de Cloud Healthcare, comunícate con tu representante de asistencia.
Cuando se inhabilita, solo puedes enviar
datasets.get
ydatasets.delete
al conjunto de datos de la API de Cloud Healthcare. Otras solicitudes fallan con un error400 FAILED_PRECONDITION
Si el conjunto de datos de la API de Cloud Healthcare no está disponible durante más de 30 días, se borrará de forma permanente. Cualquier almacén de DICOM, FHIR y HL7v2 en el conjunto de datos y sus datos asociados también se borran. Si se borran, no se podrán recuperar.
Creación de claves
En las siguientes secciones, se describe cómo crear un llavero de claves de Cloud KMS. y la tecla. Solo se admiten las claves de encriptación simétricas de Cloud KMS.
Ubicaciones admitidas
Las claves de Cloud KMS están disponibles en las ubicaciones de la API de Cloud Healthcare. Crea el llavero de claves en un Ubicación que coincida con la región o multirregión de tu conjunto de datos de la API de Cloud Healthcare.
Cualquier conjunto de datos multirregional de la API de Cloud Healthcare debe usar un llavero de claves multirregional de un ubicación coincidente. Por ejemplo, un conjunto de datos de la API de Cloud Healthcare en la región
us
debe ser protegida con un llavero de claves de la regiónus
y un conjunto de datos de la API de Cloud Healthcare en la regióneu
debe protegerse con un llavero de claves de la regióneurope
.Los conjuntos de datos regionales de la API de Cloud Healthcare deben usar claves regionales coincidentes. Por ejemplo: un conjunto de datos de la API de Cloud Healthcare en la región
asia-northeast1
debe protegerse con una clave anillo de la regiónasia-northeast1
.No puedes usar la región
global
cuando configuras CMEK para un conjunto de datos de la API de Cloud Healthcare.
Para obtener más información, consulta Ubicaciones de la API de Cloud Healthcare. y ubicaciones de Cloud KMS.
Crea un llavero de claves y una clave
Completa los siguientes pasos en el proyecto de Google Cloud que se ejecuta Cloud KMS:
Otorga permisos de encriptación y desencriptación
Para proteger tus datos de la API de Cloud Healthcare con una clave de Cloud KMS, otorga la siguiente información:
Cuenta de servicio del agente de servicio de Cloud Healthcare
el Encriptador/Desencriptador de CryptoKey (roles/cloudkms.cryptoKeyEncrypterDecrypter
)
en la clave. Para obtener instrucciones, consulta
Permisos de CMEK del conjunto de datos.
Después de otorgar el rol a la cuenta de servicio, la API de Cloud Healthcare puede encriptar y desencriptar recursos con CMEK. Tus aplicaciones no necesitan especificar claves cuando se leen o escriben datos. La API de Cloud Healthcare controla la encriptación.
Cuando un solicitante lee o escribe un objeto encriptado con un Cloud KMS, acceden al objeto de forma normal. Durante la solicitud, el agente de servicio encripta o desencripta el objeto solicitado, siempre que se cumplan las siguientes condiciones:
- El agente de servicio aún tiene los permisos necesarios.
- La clave está disponible y habilitada.
Crea un conjunto de datos de la API de Cloud Healthcare encriptado con CMEK
En los siguientes ejemplos, se muestra cómo crear un conjunto de datos encriptado con CMEK.
Debes especificar un ID de recurso de clave de Cloud KMS cuando crees del conjunto de datos. Esta clave distingue mayúsculas de minúsculas y tiene el siguiente formato:
projects/KMS_PROJECT_ID/locations/LOCATION/keyRings/KEY_RING/cryptoKeys/KEY_NAME
Para ver los IDs de recursos de claves de Cloud KMS, consulta Obtener un ID de recurso de Cloud KMS
Console
En la consola de Google Cloud, ve a la página Navegador.
Haz clic en add_boxCrear conjunto de datos. Se muestra la página Crear conjunto de datos.
En el campo Nombre, ingresa un identificador para el conjunto de datos sujeto al Caracteres permitidos y requisitos de tamaño del conjunto de datos.
Selecciona uno de los siguientes tipos de ubicación:
Region. El conjunto de datos reside de forma permanente dentro de una región de Google Cloud. Después de seleccionar esta opción, escribe o selecciona una ubicación en el campo Región.
Multirregión. El conjunto de datos reside permanentemente en una ubicación que abarca en varias regiones de Google Cloud. Después de seleccionar esta opción, escribe o selecciona Una ubicación multirregional en el campo Multirregional.
En la sección Encriptación, selecciona uno de los siguientes tipos de encriptación:
Clave de encriptación administrada por Google: Es el método de encriptación predeterminado. Usa este método si quieres que Google administre las claves de encriptación que proteger tus datos en este conjunto de datos de la API de Cloud Healthcare.
Clave de Cloud KMS: Usa una clave de encriptación administrada por el cliente (CMEK).
Haz clic en Crear. Se muestra la página Navegador. El nuevo conjunto de datos se muestra en la lista de conjuntos de datos.
gcloud
Crea el conjunto de datos con el comando gcloud healthcare datasets create
.
Antes de usar cualquiera de los datos de comando a continuación, realiza los siguientes reemplazos:
DATASET_ID
un identificador sujeto a los caracteres y requisitos de tamaño permitidos del conjunto de datosLOCATION
: Es una ubicación compatible para el conjunto de datos.KEY_RESOURCE_ID
: Es el ID de recurso de una clave de Cloud KMS, en el formatoprojects/KMS_PROJECT_ID/locations/LOCATION/keyRings/KEY_RING/cryptoKeys/KEY_NAME
.
Ejecuta el siguiente comando:
Linux, macOS o Cloud Shell
gcloud healthcare datasets create DATASET_ID \ --location=LOCATION \ --encryption-key=KEY_RESOURCE_ID
Windows (PowerShell)
gcloud healthcare datasets create DATASET_ID ` --location=LOCATION ` --encryption-key=KEY_RESOURCE_ID
Windows (cmd.exe)
gcloud healthcare datasets create DATASET_ID ^ --location=LOCATION ^ --encryption-key=KEY_RESOURCE_ID
Deberías recibir una respuesta similar a la que figura a continuación:
Create request issued for: [DATASET_ID] Waiting for operation [projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/operations/OPERATION_ID] to complete... Created dataset [DATASET_ID].
REST
Crea el conjunto de datos con
datasets.create
. .Antes de usar cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:
PROJECT_ID
El ID de tu proyecto de Google Cloud.DATASET_ID
un identificador sujeto a los caracteres y requisitos de tamaño permitidos del conjunto de datosLOCATION
: Es una ubicación compatible para el conjunto de datos.KEY_RESOURCE_ID
: Es el ID de recurso de una clave de Cloud KMS, en el formatoprojects/KMS_PROJECT_ID/locations/LOCATION/keyRings/KEY_RING/cryptoKeys/KEY_NAME
.
Cuerpo JSON de la solicitud:
{ "encryptionSpec": { "kmsKeyName": "KEY_RESOURCE_ID" } }
Para enviar tu solicitud, elige una de estas opciones:
curl
Guarda el cuerpo de la solicitud en un archivo llamado
request.json
. Ejecuta el comando siguiente en la terminal para crear o reemplazar este archivo en el directorio actual:cat > request.json << 'EOF' { "encryptionSpec": { "kmsKeyName": "KEY_RESOURCE_ID" } } EOF
Luego, ejecuta el siguiente comando para enviar tu solicitud de REST:
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets?datasetId=DATASET_ID"PowerShell
Guarda el cuerpo de la solicitud en un archivo llamado
request.json
. Ejecuta el comando siguiente en la terminal para crear o reemplazar este archivo en el directorio actual:@' { "encryptionSpec": { "kmsKeyName": "KEY_RESOURCE_ID" } } '@ | Out-File -FilePath request.json -Encoding utf8
Luego, ejecuta el siguiente comando para enviar tu solicitud de REST:
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets?datasetId=DATASET_ID" | Select-Object -Expand ContentExplorador de API
Copia el cuerpo de la solicitud y abre la página de referencia del método. El panel del Explorador de API se abre en la parte derecha de la página. Puedes interactuar con esta herramienta para enviar solicitudes. Pega el cuerpo de la solicitud en esta herramienta, completa cualquier otro campo obligatorio y haz clic en Ejecutar.
OPERATION_ID
. Necesitarás este valor en el paso siguiente.Obtén el estado de la operación de larga duración con el método
projects.locations.datasets.operations.get
.Antes de usar cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:
PROJECT_ID
El ID de tu proyecto de Google Cloud.LOCATION
: La ubicación del conjunto de datos.DATASET_ID
: El ID del conjunto de datosOPERATION_ID
: Es el ID que muestra la operación de larga duración.
Para enviar tu solicitud, elige una de estas opciones:
curl
Ejecuta el siguiente comando:
curl -X GET \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
"https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/operations/OPERATION_ID"PowerShell
Ejecuta el siguiente comando:
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method GET `
-Headers $headers `
-Uri "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/operations/OPERATION_ID" | Select-Object -Expand ContentExplorador de API
Abre el página de referencia del método. El panel del Explorador de API se abre en la parte derecha de la página. Puedes interactuar con esta herramienta para enviar solicitudes. Completa los campos obligatorios y haz clic en Ejecutar.
"done": true
, significa que la operación de larga duración finalizó.
Determina si un conjunto de datos está protegido por Cloud KMS
Por cada una de las claves que creaste o que protegen tu API de Cloud Healthcare conjuntos de datos, puedes ver qué recursos protege esa clave con el seguimiento del uso de claves. Para obtener más información, consulta Ver uso de claves.
Rotación de claves
Cloud KMS admite la rotación de claves automática y manual a una versión nueva.
La rotación de una clave da como resultado lo siguiente:
- Los conjuntos de datos de la API de Cloud Healthcare creados después de la rotación usan la versión de clave nueva para la encriptación. y todas las operaciones.
- Los recursos de un conjunto de datos existente que están encriptados con la clave no con la nueva versión de la clave primaria.
Para que la encriptación funcione, todas las versiones de claves deben estar disponibles. De lo contrario, el conjunto de datos de la API de Cloud Healthcare se inhabilitará y todas las solicitudes a que el conjunto de datos falla. Para obtener más información, consulta Consideraciones clave externas y Inhabilitación de conjuntos de datos y eliminación permanente de conjuntos de datos.
Quita el acceso de la API de Cloud Healthcare a la clave de Cloud KMS
Tienes control sobre tus claves y puedes inhabilitar, destruir o revocar permisos en la clave para que la API de Cloud Healthcare no pueda acceder a datos encriptados con CMEK. Después de destruir una clave o versión de clave asociados con un conjunto de datos de la API de Cloud Healthcare, todos los datos encriptados con esa clave o se pierde permanentemente una versión de clave.
Existe una demora entre el momento en que se inhabilita una clave o versión de clave ya no se pueden usar. También hay una demora entre el momento revocar los permisos de la cuenta de servicio del agente de servicio de Cloud Healthcare para la clave y cuándo se puede ya no se podrá acceder a ellos. Para obtener más información, consulta Coherencia de los recursos de Cloud KMS.
Importa y exporta datos a una instancia con CMEK habilitadas
Para mantener tus datos encriptados con una clave administrada por el cliente durante una en una operación de exportación, debes configurar una CMEK en el destino de almacenamiento antes de comenzar la exportación. No hay requisitos especiales restricciones para importar datos a un conjunto de datos encriptado con CMEK cuando se importan almacenamiento sin CMEK ni encriptado con CMEK.
Restricciones
- Key Access Justifications no se admite Cloud External Key Manager.
- Existe un límite de 10 conjuntos de datos de CMEK por proyecto en un período de 30 días. Esta
la cuota se aplica mediante la métrica de cuota
cmek_datasets
. - No se admiten los Controles del servicio de VPC con CMEK.
- No se admiten las políticas de la organización de CMEK.
Precios
Los conjuntos de datos se facturan igual sin importar si están encriptados con CMEK. Para obtener más información, consulta los precios de la API de Cloud Healthcare.
Cloud KMS factura tanto el costo de la clave como operaciones en esa clave. Estas operaciones ocurren cuando la API de Cloud Healthcare usa la clave para encriptación o desencriptación. Puedes esperar que estos costos sean mínimos, según la cantidad esperada de operaciones criptográficas generadas por el API de Cloud Healthcare. Para obtener más información, consulta Precios de Cloud KMS.
Cuotas de Cloud KMS y API de Cloud Healthcare
Cuando usas CMEK en la API de Cloud Healthcare,
tus proyectos pueden consumir solicitudes criptográficas de Cloud KMS
y cuotas. Los conjuntos de datos de la API de Cloud Healthcare con encriptación CMEK y sus almacenes de DICOM, FHIR y HL7v2 consumen estas cuotas para todas las operaciones, excepto datasets.get
. Las operaciones de encriptación y desencriptación con claves CMEK afectan las cuotas de Cloud KMS solo si usas claves de hardware (Cloud HSM) o externas (Cloud EKM).
Para obtener más información, consulta
Cuotas de Cloud KMS
¿Qué sigue?
- Para obtener más información sobre CMEK en general, incluido cuándo y por qué habilitarla, consulta Claves de encriptación administradas por el cliente (CMEK).