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 chiffre automatiquement les données au repos à l'aide de clés de chiffrement gérées par Google. Si vous avez des exigences réglementaires ou de conformité spécifiques liées aux clés qui protègent vos données, vous pouvez utiliser des clés de chiffrement gérées par le client (CMEK) pour les ensembles de données de votre API Cloud Healthcare. Au lieu que Google détienne et gère 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 dans Cloud Key Management Service (Cloud KMS).

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

Avant de commencer

Déterminez si votre ensemble de données de l'API Cloud Healthcare et Cloud KMS se trouvent dans le même projet Google Cloud ou dans des projets différents. 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, 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 un ensemble de données existant de l'API Cloud Healthcare.
  • 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ée, ainsi que pour des tâches opérationnelles telles que la facturation ou la vérification de la disponibilité de la clé.

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 de clés externes compatible pour protéger les données au sein de 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 le reste, l'API Cloud Healthcare désactive, puis supprime l'ensemble de données. Parfois, une clé devient indisponible si elle est désactivée ou détruite, ou si elle est inaccessible en raison d'autorisations révoquées. Ce comportement se produit si la clé est indisponible pour une raison quelconque. Le niveau de protection de la clé ou le fait qu'il s'agisse d'une clé externe n'ont aucune incidence sur ce comportement. Les clés externes peuvent également devenir indisponibles de manière imprévisible. Par exemple, des problèmes de connectivité peuvent survenir entre vos ressources Google Cloud et votre EKM.

Le processus suivant décrit comment vérifier la disponibilité des clés, et comment désactiver et supprimer un ensemble de données:

  1. Une fois qu'un ensemble de données de l'API Cloud Healthcare chiffré par CMEK a été créé, l'API Cloud Healthcare vérifie l'état de la clé toutes les cinq minutes pour s'assurer qu'elle est disponible. Si la clé n'est pas disponible, l'API Cloud Healthcare continue à traiter les requêtes adressées à 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é par mesure de protection. Pour réactiver l'ensemble de données de l'API Cloud Healthcare, contactez votre représentant du service d'assistance.

    Lorsqu'elle est désactivée, vous ne pouvez envoyer des requêtes datasets.get et datasets.delete qu'à 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 stores 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 et une clé Cloud KMS. 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 situé dans la région us doit être protégé par un trousseau de clés de la région us. De même, un ensemble de données de l'API Cloud Healthcare situé dans la région eu doit être protégé par un trousseau de clés 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 un trousseau de clés de la région asia-northeast1.

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

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

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

Effectuez les étapes suivantes dans le projet Google Cloud qui 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 au compte de service Agent de service Cloud Healthcare le rôle Chiffreur/Déchiffreur de CryptoKeys (roles/cloudkms.cryptoKeyEncrypterDecrypter) sur cette clé. Pour obtenir des instructions, consultez la section Autorisations CMEK pour les ensembles de données.

Une fois le rôle attribué au compte de service, l'API Cloud Healthcare peut chiffrer et déchiffrer les ressources chiffrées par CMEK. Vos applications n'ont pas besoin de spécifier des clés 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 une clé Cloud KMS, il accède à l'objet normalement. Lors de la requête, l'agent de service chiffre ou déchiffre automatiquement 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 l'ensemble 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 la section Obtenir 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 aux 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 réside de manière permanente dans un emplacement qui s'étend sur plusieurs régions Google Cloud. Après avoir sélectionné cette option, saisissez ou sélectionnez un emplacement multirégional dans le champ Multirégion.

  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 qui protègent 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.

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

    APIs 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 un identifiant pour 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, 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

    APIs Explorer

    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. 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 vos ensembles de données de l'API Cloud Healthcare, vous pouvez afficher les ressources protégées par la 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 à l'aide de la clé ne sont pas automatiquement chiffrées une nouvelle fois 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 à cet ensemble de données échouent. Pour en savoir plus, consultez Considérations relatives aux 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 désactiver, détruire ou révoquer les autorisations associées à celles-ci afin que l'API Cloud Healthcare ne puisse pas accéder aux données chiffrées par CMEK. Lorsque vous détruisez une clé ou une version de clé associée à un ensemble de données de l'API Cloud Healthcare, toutes les données chiffrées à l'aide de cette clé ou version de clé sont définitivement perdues.

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 peut plus être utilisée. Il existe également un délai entre le moment où vous révoquez l'agent de service Cloud Healthcare sur la clé et le moment où il n'est plus accessible. Pour en savoir plus, consultez la page Cohérence des ressources Cloud KMS.

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

Pour que vos données restent chiffrées avec une clé gérée par le client lors d'une opération d'exportation, vous devez définir une clé CMEK sur la destination de stockage avant de commencer l'exportation. Il n'existe pas d'exigences ni de restrictions particulières pour l'importation de données vers un ensemble de données chiffré par CMEK lors de l'importation depuis un espace de stockage non CMEK ou chiffré par CMEK.

Restrictions

Tarification

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 opérations cryptographiques effectuées 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 devraient être minimes, compte tenu du nombre attendu d'opérations de chiffrement générées par l'API Cloud Healthcare. Pour en savoir plus, consultez la page Tarifs de Cloud KMS.

Quotas Cloud KMS et API Cloud Healthcare

Lorsque vous utilisez des clés CMEK dans l'API Cloud Healthcare, vos projets peuvent utiliser les quotas de requêtes de chiffrement Cloud KMS. 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 la page Quotas Cloud KMS.

Étapes suivantes