Chiffrer des données à l'aide de clés de chiffrement gérées par le client (CMEK)

Cette page explique comment chiffrer les données stockées dans l'AML basée sur l'IA à l'aide de clés de chiffrement gérées par le client (CMEK).

Présentation

Dans une instance d'AML basée sur l'IA, toutes les données client sont chiffrées au repos à l'aide d'une clé CMEK. Vous gérez la clé dans Cloud Key Management Service (Cloud KMS), et vous contrôlez l'accès à la clé à l'aide d'Identity and Access Management. Si vous désactivez temporairement ou détruire définitivement la clé CMEK, les données chiffrées avec cette clé ne peuvent pas être y accéder.

L'AML basée sur l'IA n'accepte que les CMEK Cloud KMS : Il n'est pas compatible avec Chiffrement par défaut.

Les clés CMEK vous permettent de contrôler davantage d'aspects du cycle de vie et de la gestion ce qui entraîne des coûts supplémentaires service Cloud KMS.

Cloud KMS peut s'exécuter dans le même projet Google Cloud que d'AML basée sur l'IA ou dans un projet distinct où vous gérez les clés de façon centralisée pour plusieurs projets.

La configuration du chiffrement est définie lorsque vous créez une instance. Une fois l'instance créée, vous ne pouvez pas attribuer une autre clé Cloud KMS. Vous pouvez toujours faire tourner la clé.

Pour en savoir plus sur les CMEK en général, consultez la Documentation Cloud KMS

Niveaux de protection

Cloud KMS vous permet de choisir parmi différents niveaux de protection : y compris:

  • Touches logicielles
  • Modules de sécurité matériels (HSM) utilisant Cloud HSM

Découvrez comment configurer des CMEK dans l'AML basée sur l'IA. Il est possible que sont disponibles dans toutes les régions. Notez que l'AML basée sur l'IA n'est pas compatible avec les clés de chiffrement fournies par le client (CSEK) ni avec Cloud External Key Manager.

Données client

Toutes les données client sont gérées par L'AML basée sur l'IA est chiffrée au repos à l'aide de la clé CMEK spécifiée dans les l'instance parente correspondante ressource. Cela inclut toutes les Données client associées à l'AML basée sur l'IA telles que les ensembles de données, les configurations de moteur, les modèles, etc. Toutes les opérations temporaires un stockage persistant des Données client, y compris des copies des entrées et des sorties ; caractéristiques de ML générées, hyperparamètres du modèle, pondérations du modèle et prédiction sont chiffrés à l'aide de la clé CMEK de l'instance correspondante.

Consultez les conditions spécifiques aux services pour connaître la définition de les données client, qui peuvent ne pas inclure d'identifiants de ressources, d'attributs ou d'autres étiquettes de données.

Chiffrer les données d'entrée et de sortie

La configuration du chiffrement AML basée sur l'IA dans une instance n'est utilisée pour les ressources d'AML basée sur l'IA et leurs données. AML basée sur l'IA ne gère pas le chiffrement des données d'entrée ou de sortie dans votre projet. Si vous souhaitez que ces données soient chiffrées à l'aide d'une clé CMEK, vous devez configurer une clé Cloud KMS correspondant au niveau de protection de clé que vous avez choisi et configuré sur ensemble de données BigQuery. Vous pouvez également réutiliser la clé utilisée par l'AML basée sur l'IA.

En savoir plus sur le chiffrement dans BigQuery

Rotation des clés

La rotation régulière et automatique des clés est une pratique de sécurité recommandée. Avec les CMEK, c'est vous qui contrôlez la rotation des clés. Lorsque vous effectuez la rotation d'une clé, chiffrées avec les versions précédentes de la clé n'est pas automatiquement chiffrée à nouveau nouvelle version de clé.

Une même ressource d'AML basée sur l'IA peut être stockée en interne sous forme de unités de mesure. Si, au cours de la durée de vie d'une ressource d'AML basée sur l'IA, la clé est alternée, il est possible que toutes les unités ne soient pas chiffrées avec la même version de clé.

Si vous effectuez la rotation d'une clé, l'AML basée sur l'IA ne peut pas forcer un rechiffrement ou pour déterminer si les anciennes versions de clé peuvent être supprimées en toute sécurité.

En savoir plus sur la rotation des clés avec Cloud KMS

Créer une clé et accorder des autorisations

Les instructions suivantes expliquent comment créer une clé pour une instance et accorder les autorisations requises pour chiffrer et déchiffrer les données d'instance à l'aide de la clé. Vous pouvez utiliser une clé créée directement dans Cloud KMS ou une clé gérée en externe que vous rendre disponibles avec Cloud External Key Manager.

  1. Dans le projet Google Cloud dans lequel vous souhaitez gérer vos clés, procédez comme suit :

    1. Activez l'API Cloud KMS.

    2. Créez un trousseau de clés à l'aide du projects.locations.keyRings.create . L'emplacement du trousseau Cloud KMS doit correspondre au emplacement de l'instance que vous chiffrez.

      REST

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

      • KMS_PROJECT_ID: projet Google Cloud ID du projet contenant le trousseau de clés
      • LOCATION: emplacement du trousseau de clés utilisez l'un des régions où le service est disponible
        Afficher les lieux
        • us-central1
        • us-east1
        • asia-south1
        • europe-west1
        • europe-west2
        • europe-west4
        • northamerica-northeast1
        • southamerica-east1
      • KEY_RING_ID: identifiant défini par l'utilisateur pour le trousseau de clés

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

      curl

      Exécutez la commande suivante :

      curl -X POST \
      -H "Authorization: Bearer $(gcloud auth print-access-token)" \
      -H "Content-Type: application/json; charset=utf-8" \
      -d "" \
      "https://cloudkms.googleapis.com/v1/projects/KMS_PROJECT_ID/locations/LOCATION/keyRings?key_ring_id=KEY_RING_ID"

      PowerShell

      Exécutez la commande suivante :

      $cred = gcloud auth print-access-token
      $headers = @{ "Authorization" = "Bearer $cred" }

      Invoke-WebRequest `
      -Method POST `
      -Headers $headers `
      -Uri "https://cloudkms.googleapis.com/v1/projects/KMS_PROJECT_ID/locations/LOCATION/keyRings?key_ring_id=KEY_RING_ID" | Select-Object -Expand Content

      Vous devriez recevoir une réponse JSON de ce type :

      {
        "name": "projects/KMS_PROJECT_ID/locations/LOCATION/keyRings/KEY_RING_ID",
        "createTime": "2023-03-14T15:52:55.358979323Z"
      }
      

      gcloud

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

      • KMS_PROJECT_ID: projet Google Cloud ID du projet contenant le trousseau de clés
      • LOCATION: emplacement du trousseau de clés utilisez l'une des régions où le service est disponible
        Afficher les lieux
        • us-central1
        • us-east1
        • asia-south1
        • europe-west1
        • europe-west2
        • europe-west4
        • northamerica-northeast1
        • southamerica-east1
      • KEY_RING_ID: identifiant défini par l'utilisateur pour le trousseau de clés

      Exécutez la commande suivante :

      Linux, macOS ou Cloud Shell

      gcloud kms keyrings create KEY_RING_ID \
        --project KMS_PROJECT_ID --location LOCATION
      

      Windows (PowerShell)

      gcloud kms keyrings create KEY_RING_ID `
        --project KMS_PROJECT_ID --location LOCATION
      

      Windows (cmd.exe)

      gcloud kms keyrings create KEY_RING_ID ^
        --project KMS_PROJECT_ID --location LOCATION
      
      Vous devriez recevoir une réponse vide:
      $

    3. Créez une clé à l'aide de la méthode projects.locations.keyRings.cryptoKeys .

      REST

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

      • KMS_PROJECT_ID: projet Google Cloud ID du projet contenant le trousseau de clés
      • LOCATION: emplacement du trousseau de clés utilisez l'une des régions où le service est disponible
        Afficher les lieux
        • us-central1
        • us-east1
        • asia-south1
        • europe-west1
        • europe-west2
        • europe-west4
        • northamerica-northeast1
        • southamerica-east1
      • KEY_RING_ID: identifiant défini par l'utilisateur pour trousseau de clés
      • KEY_ID: identifiant défini par l'utilisateur pour la clé

      Corps JSON de la requête :

      {
        "purpose": "ENCRYPT_DECRYPT"
      }
      

      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'
      {
        "purpose": "ENCRYPT_DECRYPT"
      }
      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://cloudkms.googleapis.com/v1/projects/KMS_PROJECT_ID/locations/LOCATION/keyRings/KEY_RING_ID/cryptoKeys?crypto_key_id=KEY_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 :

      @'
      {
        "purpose": "ENCRYPT_DECRYPT"
      }
      '@  | 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://cloudkms.googleapis.com/v1/projects/KMS_PROJECT_ID/locations/LOCATION/keyRings/KEY_RING_ID/cryptoKeys?crypto_key_id=KEY_ID" | Select-Object -Expand Content

      Vous devriez recevoir une réponse JSON de ce type :

      {
        "name": "projects/KMS_PROJECT_ID/locations/LOCATION/keyRings/KEY_RING_ID/cryptoKeys/KEY_ID",
        "primary": {
          "name": "projects/KMS_PROJECT_ID/locations/LOCATION/keyRings/KEY_RING_ID/cryptoKeys/KEY_ID/cryptoKeyVersions/1",
          "state": "ENABLED",
          "createTime": "2023-03-14T15:52:55.358979323Z",
          "protectionLevel": "SOFTWARE",
          "algorithm": "GOOGLE_SYMMETRIC_ENCRYPTION",
          "generateTime": "2023-03-14T15:52:55.358979323Z"
        },
        "purpose": "ENCRYPT_DECRYPT",
        "createTime": "2023-03-14T15:52:55.358979323Z",
        "versionTemplate": {
          "protectionLevel": "SOFTWARE",
          "algorithm": "GOOGLE_SYMMETRIC_ENCRYPTION"
        },
        "destroyScheduledDuration": "86400s"
      }
      

      gcloud

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

      • KMS_PROJECT_ID: projet Google Cloud ID du projet contenant le trousseau de clés
      • LOCATION: emplacement du trousseau de clés utilisez l'un des régions où le service est disponible
        Afficher les lieux
        • us-central1
        • us-east1
        • asia-south1
        • europe-west1
        • europe-west2
        • europe-west4
        • northamerica-northeast1
        • southamerica-east1
      • KEY_RING_ID: identifiant défini par l'utilisateur pour trousseau de clés
      • KEY_ID: identifiant défini par l'utilisateur pour la clé

      Exécutez la commande suivante :

      Linux, macOS ou Cloud Shell

      gcloud kms keys create KEY_ID \
        --keyring KEY_RING_ID \
        --project KMS_PROJECT_ID \
        --location LOCATION \
        --purpose "encryption"
      

      Windows (PowerShell)

      gcloud kms keys create KEY_ID `
        --keyring KEY_RING_ID `
        --project KMS_PROJECT_ID `
        --location LOCATION `
        --purpose "encryption"
      

      Windows (cmd.exe)

      gcloud kms keys create KEY_ID ^
        --keyring KEY_RING_ID ^
        --project KMS_PROJECT_ID ^
        --location LOCATION ^
        --purpose "encryption"
      
      Vous devriez recevoir une réponse vide:
      $

  2. Si vous n'avez pas créé d'instance d'AML basée sur l'IA dans le le service d'AML basée sur l'IA, n'existe pas encore. Créez le compte de service.

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

    • PROJECT_ID: projet Google Cloud ID du projet dans lequel l'AML basée sur l'IA est exécutée

    Exécutez la commande suivante :

    Linux, macOS ou Cloud Shell

    gcloud beta services identity create --service=financialservices.googleapis.com --project=PROJECT_ID
    

    Windows (PowerShell)

    gcloud beta services identity create --service=financialservices.googleapis.com --project=PROJECT_ID
    

    Windows (cmd.exe)

    gcloud beta services identity create --service=financialservices.googleapis.com --project=PROJECT_ID
    

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

    Service identity created: service-PROJECT_NUMBER@gcp-sa-financialservices.iam.gserviceaccount.com

  3. Accordez le Rôle IAM "Chiffreur/Déchiffreur de CryptoKeys" (roles/cloudkms.cryptoKeyEncrypterDecrypter) à l'AML basée sur l'IA de service géré. Accordez cette autorisation pour la clé que vous avez créée.

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

    • PROJECT_ID: projet Google Cloud ID du projet dans lequel l'AML basée sur l'IA est exécutée
    • KEY_ID: identifiant défini par l'utilisateur pour la clé
    • LOCATION: emplacement du trousseau de clés utilisez l'une des régions où le service est disponible
      Afficher les lieux
      • us-central1
      • us-east1
      • asia-south1
      • europe-west1
      • europe-west2
      • europe-west4
      • northamerica-northeast1
      • southamerica-east1
    • KEY_RING_ID: identifiant défini par l'utilisateur pour le trousseau de clés
    • PROJECT_NUMBER: Google Cloud numéro du projet pour le projet dans lequel l'AML basée sur l'IA est exécutée

    Exécutez la commande suivante :

    Linux, macOS ou Cloud Shell

    gcloud kms keys add-iam-policy-binding KEY_ID --project=PROJECT_ID \
      --location LOCATION --keyring=KEY_RING_ID \
      --member serviceAccount:service-PROJECT_NUMBER@gcp-sa-financialservices.iam.gserviceaccount.com \
      --role roles/cloudkms.cryptoKeyEncrypterDecrypter
    

    Windows (PowerShell)

    gcloud kms keys add-iam-policy-binding KEY_ID --project=PROJECT_ID `
      --location LOCATION --keyring=KEY_RING_ID `
      --member serviceAccount:service-PROJECT_NUMBER@gcp-sa-financialservices.iam.gserviceaccount.com `
      --role roles/cloudkms.cryptoKeyEncrypterDecrypter
    

    Windows (cmd.exe)

    gcloud kms keys add-iam-policy-binding KEY_ID --project=PROJECT_ID ^
      --location LOCATION --keyring=KEY_RING_ID ^
      --member serviceAccount:service-PROJECT_NUMBER@gcp-sa-financialservices.iam.gserviceaccount.com ^
      --role roles/cloudkms.cryptoKeyEncrypterDecrypter
    

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

    Updated IAM policy for key KEY_ID.
    bindings:
    - members:
      - serviceAccount:service-PROJECT_NUMBER@gcp-sa-financialservices.iam.gserviceaccount.com
      role: roles/cloudkms.cryptoKeyEncrypterDecrypter
    etag: BwYCq0Sq4Ho=
    version: 1
    

    Pour plus d'informations sur cette commande, consultez la documentation gcloud kms keys add-iam-policy-binding.

Vous pouvez maintenant Créer une instance et spécifier la clé à utiliser pour le chiffrement.

Supprimer un accès

Il existe plusieurs façons de supprimer l'accès à la clé d'une instance chiffrée par CMEK:

Nous vous recommandons de révoquer les autorisations de l'AML AI compte de service avant de désactiver ou de détruire une clé. Les modifications apportées aux autorisations sont se propage en quelques secondes, afin que vous puissiez observer les effets de la désactivation ou la destruction d'une clé.

Lorsque vous désactivez ou détruisez la clé de chiffrement d'une instance, vous perdez d'utiliser ou de récupérer des données client associées à l'instance. Tout les données client stockées dans l'instance deviennent inaccessibles, y compris les modèles, les configurations de moteur, les résultats des tests rétrospectifs et les prédictions. Utilisateurs ayant Le rôle de lecteur AML AI peut toujours voir tels que le nom de l'instance ou les autres champs de ressource renvoyés par des ressources d'AML basée sur l'IA.

Toutes les opérations qui utilisent ou exportent des données client, comme l'exportation backtestResults, échouera.

Utilisateurs disposant du rôle Administrateur AML AI ou Propriétaire pour supprimer l'instance.

Règles d'administration CMEK

L'AML basée sur l'IA n'est pas Règles d'administration CMEK. Toutefois, L'AML basée sur l'IA nécessite toujours l'utilisation de CMEK, quelle que soit Règle d'administration constraints/gcp.restrictNonCmekServices.

Interaction avec VPC-SC

Si vous avez configuré l'AML basée sur l'IA dans un périmètre VPC-SC, La clé CMEK doit toujours être accessible au compte de service. Si la clé n'est pas dans le même périmètre VPC-SC, vous pouvez y parvenir de plusieurs manières, y compris:

  • Utiliser une règle de sortie pour ajouter la ressource à la liste d'autorisation
  • Utiliser l'appairage de périmètre VPC

Étape suivante