Activez les clés de chiffrement gérées par le client (CMEK) pour les ensembles de données de l'API Cloud Healthcare

Par défaut, Google Cloud applique automatiquement chiffre les données au repos à l'aide de clés de chiffrement gérés par Google. Si vous avez des exigences réglementaires ou de conformité spécifiques concernant les clés qui protègent vos données, vous pouvez utiliser des clés des clés de chiffrement (CMEK) pour votre API Cloud Healthcare ensembles de données. Au lieu de laisser Google posséder et gérer les clés de chiffrement qui protègent vos données, vos ensembles de données de l'API Cloud Healthcare sont chiffrés à l'aide d'une clé que vous contrôlez et gérez Cloud Key Management Service (Cloud KMS) :

Pour en savoir plus sur les CMEK en général, y compris quand et pourquoi l'activer, consultez Clés de chiffrement gérées par le client (CMEK).

Avant de commencer

Déterminez si votre ensemble de données et votre Cloud KMS se trouve dans le même projet Google Cloud ou dans un projet uns. Pour en savoir plus, consultez la section Séparation des tâches.

À des fins de documentation, les conventions suivantes sont utilisées:

  • PROJECT_ID: ID du projet de l'API Cloud Healthcare
  • KMS_PROJECT_ID: ID du projet dans lequel Cloud KMS s'exécute, ce qui peut être identique à PROJECT_ID

Pour en savoir plus sur les ID et numéros de projet Google Cloud, consultez la section Identifier des projets.

Limites

  • Vous ne pouvez utiliser des clés Cloud KMS que lorsque vous créez un ensemble de données pour l'API Cloud Healthcare. Vous ne pouvez pas activer, modifier ni désactiver des clés Cloud KMS sur une API Cloud Healthcare existante ensemble de données.
  • Seuls les stores FHIR, DICOM et HL7v2 sont compatibles avec les ensembles de données chiffrés par CMEK. La protection CMEK s'applique aux magasins DICOM, FHIR et HL7v2 de l'ensemble de données. et leurs ressources.
  • Vous ne pouvez pas anonymiser les ressources chiffrées par CMEK.

Opérations CMEK

Les clés Cloud KMS sont utilisées lorsqu'une ressource chiffrée par CMEK est créée, lue, mise à jour ou supprimées, et pour les tâches opérationnelles comme la facturation ou la garantie que la clé est disponible.

Remarques importantes concernant les clés externes

Pour en savoir plus sur l'utilisation des clés que vous gérez dans un système partenaire de gestion des clés externes compatible pour protéger les données dans Google Cloud, consultez la page Cloud External Key Manager.

Si vous perdez des clés que vous gérez en dehors de Google Cloud, Google ne pourra pas récupérer vos données.

Indisponibilité des clés et perte de données

Si un ensemble de données est chiffré par une clé, et que cette clé devient indisponible et demeure indisponible, l'API Cloud Healthcare se désactive, puis supprime le jeu de données. Parfois, une clé devient indisponible si elle est désactivée ou détruite, ou si il est inaccessible en raison d'autorisations révoquées, mais ce comportement se produit si la clé n'est pas disponible pour une raison quelconque. Niveau de protection de la clé ou s'il s'agit d'une clé externe n'affecte pas ce comportement. Les clés externes peuvent aussi devenir indisponibles de manière imprévisible. Par exemple, des problèmes de connectivité peuvent les ressources Google Cloud et votre EKM.

Le processus suivant décrit comment la disponibilité des clés est vérifiée et comment un ensemble de données peut être désactivé et supprimé:

  1. Après la création d'un ensemble de données pour l'API Cloud Healthcare chiffré par CMEK, L'API Cloud Healthcare vérifie l'état de la clé toutes les cinq minutes. pour vous assurer que la clé est disponible. Si la clé n'est pas disponible, l'API Cloud Healthcare continue pour prendre en charge les requêtes sur l'ensemble de données pendant une heure maximum.

  2. Au bout d'une heure, si l'API Cloud Healthcare ne parvient toujours pas à se connecter à Cloud KMS, l'ensemble de données de l'API Cloud Healthcare est désactivé, car mesurer. Pour réactiver l'ensemble de données de l'API Cloud Healthcare, contactez votre représentant du service d'assistance.

    Lorsque cette option est désactivée, vous ne pouvez envoyer que datasets.get et datasets.delete à l'ensemble de données de l'API Cloud Healthcare. Les autres requêtes échouent avec une erreur 400 FAILED_PRECONDITION.

  3. Si l'ensemble de données de l'API Cloud Healthcare reste indisponible pendant plus de 30 jours, il est définitivement supprimé. Tous les datastores DICOM, FHIR et HL7v2 de l'ensemble de données et les données associées sont également supprimés. Si vous supprimez ces données, vous ne pourrez pas les récupérer.

Création de clés

Dans les sections suivantes, nous allons voir comment créer un trousseau de clés Cloud KMS. et clé. Seules les clés de chiffrement symétriques Cloud KMS sont acceptées.

Pays acceptés

Les clés Cloud KMS sont disponibles dans les emplacements de l'API Cloud Healthcare. Créez le trousseau de clés dans un emplacement correspondant à la région ou à l'emplacement multirégional de votre ensemble de données de l'API Cloud Healthcare.

  • Tout ensemble de données multirégional de l'API Cloud Healthcare doit utiliser un trousseau de clés multirégional provenant d'un emplacement correspondant. Par exemple, un ensemble de données de l'API Cloud Healthcare dans la région us doit être protégée par un trousseau de clés de la région us et un ensemble de données de l'API Cloud Healthcare dans la région eu doit être protégé par un trousseau de clés provenant de la région europe.

  • Les ensembles de données régionaux de l'API Cloud Healthcare doivent utiliser des clés régionales correspondantes. Par exemple : Un ensemble de données de l'API Cloud Healthcare situé dans la région asia-northeast1 doit être protégé par une clé sonnerie de la région asia-northeast1.

  • Vous ne pouvez pas utiliser la région global lorsque vous configurez une clé CMEK pour dans un ensemble de données de l'API Cloud Healthcare.

Pour en savoir plus, consultez la page Emplacements de l'API Cloud Healthcare. et les emplacements Cloud KMS.

Créer un trousseau de clés et une clé

Effectuez les étapes suivantes dans le projet Google Cloud qui s'exécute Cloud KMS:

  1. Créez un trousseau de clés.
  2. Créez une clé.

Accorder des autorisations de chiffrement et de déchiffrement

Pour protéger les données de l'API Cloud Healthcare à l'aide d'une clé Cloud KMS, accordez le rôle Compte de service Agent de service Cloud Healthcare Chiffreur/Déchiffreur de CryptoKeys (roles/cloudkms.cryptoKeyEncrypterDecrypter) sur cette clé. Pour savoir comment procéder, consultez Autorisations CMEK d'ensemble de données.

Une fois le rôle attribué au compte de service, l'API Cloud Healthcare peut chiffrer et déchiffrer des ressources chiffrées par CMEK. Vos applications n'ont pas besoin lors de la lecture ou de l'écriture de données. L'API Cloud Healthcare gère le chiffrement.

Lorsqu'un demandeur lit ou écrit un objet chiffré avec Cloud KMS, ils accèdent à l'objet normalement. Pendant la requête, l'agent de service chiffre automatiquement déchiffre l'objet demandé, à condition que les deux conditions suivantes soient remplies:

  • L'agent de service dispose toujours des autorisations requises.
  • La clé est disponible et activée.

Créer un ensemble de données pour l'API Cloud Healthcare chiffré par CMEK

Les exemples suivants montrent comment créer un ensemble de données chiffré par CMEK.

Vous devez spécifier un ID de ressource de clé Cloud KMS lorsque vous créez le jeu de données. Cette clé est sensible à la casse et respecte le format suivant:

projects/KMS_PROJECT_ID/locations/LOCATION/keyRings/KEY_RING/cryptoKeys/KEY_NAME

Pour afficher les ID de ressource de votre clé Cloud KMS, consultez Obtenez un ID de ressource Cloud KMS.

Console

  1. Dans la console Google Cloud, accédez à la page Navigateur.

    Accéder à la page du navigateur

  2. Cliquez sur  Créer un ensemble de données. La page Créer un ensemble de données s'affiche.

  3. Dans le champ Nom, saisissez un identifiant pour l'ensemble de données soumis à caractères autorisés et exigences de taille pour l'ensemble de données.

  4. Sélectionnez l'un des types d'emplacements suivants:

    • Région : L'ensemble de données réside de façon permanente dans une région Google Cloud. Après avoir sélectionné cette option, saisissez ou sélectionnez un emplacement dans le champ Région.

    • Multirégional : L'ensemble de données se trouve de façon permanente dans un emplacement qui s'étend plusieurs régions Google Cloud. Après avoir sélectionné cette option, saisissez ou sélectionnez un emplacement multirégional dans le champ Multirégional.

  5. Dans la section Chiffrement, sélectionnez l'un des types de chiffrement suivants:

    • Clé de chiffrement gérée par Google: méthode de chiffrement par défaut. Utilisez cette méthode si vous souhaitez que Google gère les clés de chiffrement pour protéger vos données dans cet ensemble de données de l'API Cloud Healthcare.

    • Clé Cloud KMS: utilisez une clé de chiffrement gérée par le client (CMEK).

  6. Cliquez sur Créer. La page Navigateur s'affiche. Le nouvel ensemble de données s'affiche dans la liste des ensembles de données.

gcloud

Créez l'ensemble de données à l'aide de la commande gcloud healthcare datasets create.

Avant d'utiliser les données de la commande ci-dessous, effectuez les remplacements suivants :

Exécutez la commande suivante :

Linux, macOS ou 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

Vous devriez obtenir un résultat semblable à celui-ci :

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. Créez l'ensemble de données à l'aide de la méthode datasets.create. .

    Avant d'utiliser les données de requête ci-dessous, effectuez les remplacements suivants :

    Corps JSON de la requête :

    {
      "encryptionSpec": {
        "kmsKeyName": "KEY_RESOURCE_ID"
      }
    }
    

    Pour envoyer votre requête, choisissez l'une des options suivantes :

    curl

    Enregistrez le corps de la requête dans un fichier nommé request.json. Exécutez la commande suivante dans le terminal pour créer ou écraser ce fichier dans le répertoire actuel :

    cat > request.json << 'EOF'
    {
      "encryptionSpec": {
        "kmsKeyName": "KEY_RESOURCE_ID"
      }
    }
    EOF

    Exécutez ensuite la commande suivante pour envoyer votre requête 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

    Enregistrez le corps de la requête dans un fichier nommé request.json. Exécutez la commande suivante dans le terminal pour créer ou écraser ce fichier dans le répertoire actuel :

    @'
    {
      "encryptionSpec": {
        "kmsKeyName": "KEY_RESOURCE_ID"
      }
    }
    '@  | Out-File -FilePath request.json -Encoding utf8

    Exécutez ensuite la commande suivante pour envoyer votre requête 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

    API Explorer

    Copiez le corps de la requête et ouvrez la page de référence de la méthode. Le panneau APIs Explorer s'ouvre dans la partie droite de la page. Vous pouvez interagir avec cet outil pour envoyer des requêtes. Collez le corps de la requête dans cet outil, renseignez tous les champs obligatoires, puis cliquez sur Execute (Exécuter).

    Le résultat est le suivant. La réponse contient l'identifiant d'une opération de longue durée (LRO). Les opérations de longue durée sont renvoyées lorsque les appels de méthode peuvent prendre davantage de temps. Notez la valeur de OPERATION_ID. Vous en aurez besoin à l'étape suivante.

  2. Obtenez l'état de l'opération de longue durée à l'aide de la méthode projects.locations.datasets.operations.get.

    Avant d'utiliser les données de requête ci-dessous, effectuez les remplacements suivants :

    • PROJECT_ID : ID de votre projet Google Cloud
    • LOCATION : emplacement de l'ensemble de données
    • DATASET_ID : ID de l'ensemble de données
    • OPERATION_ID : ID renvoyé par l'opération de longue durée

    Pour envoyer votre requête, choisissez l'une des options suivantes :

    curl

    Exécutez la commande suivante :

    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

    Exécutez la commande suivante :

    $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

    API Explorer

    Ouvrez le page de référence de la méthode. Le panneau APIs Explorer s'ouvre dans la partie droite de la page. Vous pouvez interagir avec cet outil pour envoyer des requêtes. Renseignez tous les champs obligatoires, puis cliquez sur Execute (Exécuter).

    Le résultat est le suivant. Lorsque la réponse contient "done": true, l'opération de longue durée est terminée.

Déterminer si un ensemble de données est protégé par Cloud KMS

Pour chacune des clés que vous avez créées ou qui protègent votre API Cloud Healthcare d'ensembles de données, vous pouvez voir quelles ressources sont protégées par une clé grâce au suivi de l'utilisation des clés. Pour en savoir plus, consultez Afficher l'utilisation des clés.

Rotation des clés

Cloud KMS permet la rotation des clés automatique et manuelle vers une nouvelle version.

La rotation d'une clé entraîne les résultats suivants:

  • Les ensembles de données de l'API Cloud Healthcare créés après la rotation utilisent la nouvelle version de clé pour le chiffrement et toutes les opérations.
  • Les ressources d'un ensemble de données existant qui sont chiffrées avec la clé ne sont pas automatiquement rechiffré avec la nouvelle version de clé primaire.

Pour que le chiffrement fonctionne, toutes les versions de clé doivent être disponibles. Sinon, l'ensemble de données de l'API Cloud Healthcare est désactivé et toutes les requêtes adressées à l'ensemble de données. Pour en savoir plus, consultez la section Remarques importantes sur les clés externes. et Ensembles de données désactivés et suppression définitive des ensembles de données.

Supprimer l'accès de l'API Cloud Healthcare à la clé Cloud KMS

Vous contrôlez vos clés et pouvez les désactiver, les détruire ou les révoquer autorisations sur la clé afin que l'API Cloud Healthcare ne puisse pas accéder aux données chiffrées par CMEK. Après avoir détruit une clé ou une version de clé associées à un ensemble de données de l'API Cloud Healthcare, toutes les données chiffrées avec cette clé ou la version de clé est définitivement perdue.

Il existe un délai entre le moment où vous désactivez une clé ou une version de clé et le moment où elle ne peuvent plus être utilisées. Il existe également un délai entre le moment où vous révoquer les autorisations du compte de service Agent de service Cloud Healthcare sur la clé et lorsqu'elle peut ne sont plus accessibles. Pour en savoir plus, consultez Cohérence des ressources Cloud KMS :

Exporter et importer des données vers une instance pour laquelle CMEK est activé

Pour conserver vos données chiffrées à l'aide d'une clé gérée par le client au cours d'une opération d'exportation, vous devez définir une clé CMEK sur la destination de stockage avant de lancer l'exportation. Il n'y a pas d'exigences particulières ou des restrictions pour l'importation de données vers un ensemble de données chiffré par CMEK lors de l'importation depuis un stockage non CMEK ou chiffré par CMEK.

Restrictions

Tarifs

Les ensembles de données sont facturés de la même manière, qu'ils soient chiffrés ou non avec une clé CMEK. Pour en savoir plus, consultez la page Tarifs de l'API Cloud Healthcare.

Cloud KMS vous facture à la fois le coût de la clé et les frais de chiffrement sur cette clé. Ces opérations se produisent lorsque l'API Cloud Healthcare utilise la clé pour le chiffrement ou le déchiffrement. Ces coûts sont généralement minimes, d'après le le nombre attendu d'opérations cryptographiques API Cloud Healthcare. Pour en savoir plus, consultez Tarifs de Cloud KMS

Quotas Cloud KMS et API Cloud Healthcare

Lorsque vous utilisez des CMEK dans l'API Cloud Healthcare, vos projets peuvent utiliser des requêtes de chiffrement Cloud KMS quotas. Les ensembles de données de l'API Cloud Healthcare chiffrés par CMEK et leurs magasins DICOM, FHIR et HL7v2 consomment ces quotas pour toutes les opérations, à l'exception de datasets.get. Les opérations de chiffrement et de déchiffrement à l'aide de clés CMEK n'affectent les quotas Cloud KMS que si vous utilisez des clés matérielles (Cloud HSM) ou externes (Cloud EKM). Pour en savoir plus, consultez Quotas Cloud KMS

Étape suivante