Habilitar claves de encriptación administradas por el cliente (CMEK) para conjuntos de datos de la API de Cloud Healthcare

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 las 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 Healthcare
  • KMS_PROJECT_ID: Es el ID del proyecto en el que Cloud KMS que puede ser la misma que la de PROJECT_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:

  1. Después de que se crea 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.

  2. 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 y datasets.delete al conjunto de datos de la API de Cloud Healthcare. Otras solicitudes fallan con un error 400 FAILED_PRECONDITION

  3. 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ón us y un conjunto de datos de la API de Cloud Healthcare en la región eu debe protegerse con un llavero de claves de la región europe.

  • 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ón asia-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:

  1. Crea un llavero de claves.
  2. Crea una clave.

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 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

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

    Ir al navegador

  2. Haz clic en Crear conjunto de datos. Se muestra la página Crear conjunto de datos.

  3. 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.

  4. 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.

  5. 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).

  6. 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:

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

  1. Crea el conjunto de datos con datasets.create. .

    Antes de usar cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:

    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 Content

    Explorador 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.

    Este es el resultado. La respuesta contiene un identificador para un operación de larga duración (LRO). Las operaciones de larga duración se muestran cuando las llamadas de métodos pueden tardar más en completarse. Toma nota del valor de OPERATION_ID. Necesitarás este valor en el paso siguiente.

  2. 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_IDEl ID de tu proyecto de Google Cloud.
    • LOCATION: La ubicación del conjunto de datos.
    • DATASET_ID: El ID del conjunto de datos
    • OPERATION_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 Content

    Explorador 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.

    Este es el resultado. Cuando la respuesta contiene "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

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?