Cette page explique comment chiffrer les données stockées dans les instances AML AI à l'aide de clés de chiffrement gérées par le client (CMEK).
Présentation
Toutes les données client d'une instance AML AI 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 ou détruisez temporairement la clé CMEK, les données chiffrées avec cette clé ne sont plus accessibles.
L'IA AML n'accepte les CMEK qu'à l'aide de Cloud KMS. Il n'est pas compatible avec le chiffrement par défaut de Google.
CMEK vous permet de contrôler davantage d'aspects du cycle de vie et de la gestion de vos clés, mais entraîne également des coûts supplémentaires pour le service Cloud KMS.
Cloud KMS peut s'exécuter dans le même projet Google Cloud que l'IA AML ou dans un projet distinct dans lequel vous gérez de manière centralisée les clés de 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 lui attribuer une autre clé Cloud KMS. Vous pouvez toujours faire pivoter la clé.
Pour en savoir plus sur les clés 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 les suivants :
- Clés logicielles
- Modules de sécurité matérielle (HSM) utilisant Cloud HSM
Découvrez comment configurer CMEK dans AML AI. Tous les niveaux de protection ne sont pas disponibles dans toutes les régions. Notez qu'AML AI n'est pas compatible avec les clés de chiffrement fournies par le client (CSEK) ni avec Cloud External Key Manager.
Cymbal
Toutes les Données client traitées par AML AI sont chiffrées au repos à l'aide de la clé CMEK spécifiée dans la ressource Instance parente correspondante. Cela inclut toutes les données client associées aux ressources AML AI, telles que les ensembles de données, les configurations de moteur, les modèles, etc. Toutes les données client stockées de manière temporaire et persistante, y compris les copies des entrées et des sorties, les caractéristiques de ML générées, les hyperparamètres du modèle, les pondérations du modèle et les résultats de prédiction, sont chiffrées à l'aide de la clé CMEK de l'instance correspondante.
Consultez les Conditions d'utilisation spécifiques au service pour obtenir la définition des données client, qui peuvent ne pas inclure les identifiants de ressources, les attributs ni les autres libellés de données.
Chiffrer les données d'entrée et de sortie
La configuration du chiffrement de l'IA AML dans une instance n'est utilisée que pour les ressources d'IA AML et leurs données. L'AML basée sur l'IA ne gère pas le chiffrement des données d'entrée ou de sortie dans votre projet Google Cloud. Si vous souhaitez que ces données soient chiffrées à l'aide de CMEK, vous devez configurer une clé Cloud KMS correspondant au niveau de protection des clés choisi pour l'ensemble de données BigQuery. Vous pouvez également réutiliser la même clé que celle utilisée par AML AI.
En savoir plus sur le chiffrement dans BigQuery
Rotation des clés
La rotation périodique et automatique des clés est recommandée en termes de sécurité. Avec CMEK, la rotation des clés est contrôlée par vous. Lorsque vous effectuez la rotation d'une clé, les données chiffrées avec des versions de clé précédentes ne sont pas automatiquement rechiffrées avec la nouvelle version de clé.
Une même ressource AML AI peut être stockée en interne sous la forme de plusieurs unités. Si la version de clé est alternée au cours de la durée de vie d'une ressource AML AI, il est possible que toutes les unités ne soient pas chiffrées avec la même version de clé.
Si vous effectuez une rotation de clé, il n'existe aucun moyen dans AML AI de forcer un nouveau chiffrement ni de déterminer si les anciennes versions de clé peuvent être supprimées sans risque.
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 des autorisations de chiffrement et de déchiffrement des données d'instance avec la clé. Vous pouvez utiliser une clé créée directement dans Cloud KMS ou une clé gérée en externe que vous rendez disponible avec Cloud External Key Manager.
Dans le projet Google Cloud dans lequel vous souhaitez gérer vos clés :
Créez un trousseau de clés à l'aide de la méthode
projects.locations.keyRings.create
. L'emplacement du trousseau de clés Cloud KMS doit correspondre à l'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
: ID du projet Google Cloud contenant le trousseau de clésLOCATION
: emplacement du trousseau de clés. Utilisez l'une des régions disponibles.Afficher les zones géographiquesus-central1
us-east1
asia-south1
europe-west1
europe-west2
europe-west4
northamerica-northeast1
southamerica-east1
australia-southeast1
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 ContentVous 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
: ID du projet Google Cloud contenant le trousseau de clésLOCATION
: emplacement du trousseau de clés. Utilisez l'une des régions disponibles.Afficher les zones géographiquesus-central1
us-east1
asia-south1
europe-west1
europe-west2
europe-west4
northamerica-northeast1
southamerica-east1
australia-southeast1
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
$
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
: ID du projet Google Cloud contenant le trousseau de clésLOCATION
: emplacement du trousseau de clés. Utilisez l'une des régions disponibles.Afficher les zones géographiquesus-central1
us-east1
asia-south1
europe-west1
europe-west2
europe-west4
northamerica-northeast1
southamerica-east1
australia-southeast1
KEY_RING_ID
: identifiant défini par l'utilisateur pour le trousseau de clésKEY_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 ContentVous 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
: ID du projet Google Cloud contenant le trousseau de clésLOCATION
: emplacement du trousseau de clés. Utilisez l'une des régions disponibles.Afficher les zones géographiquesus-central1
us-east1
asia-south1
europe-west1
europe-west2
europe-west4
northamerica-northeast1
southamerica-east1
australia-southeast1
KEY_RING_ID
: identifiant défini par l'utilisateur pour le trousseau de clésKEY_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"
$
Si vous n'avez pas créé d'instance AML AI dans le projet AML AI, le compte de service AML AI 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
: ID du projet Google Cloud dans lequel AML AI s'exécute
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
Accordez le rôle IAM de chiffreur/déchiffreur de clés cryptographiques (
roles/cloudkms.cryptoKeyEncrypterDecrypter
) au compte de service AML AI. Accordez cette autorisation sur la clé que vous avez créée.Avant d'utiliser les données de la commande ci-dessous, effectuez les remplacements suivants :
PROJECT_ID
: ID du projet Google Cloud dans lequel AML AI s'exécuteKEY_ID
: identifiant défini par l'utilisateur pour la cléLOCATION
: emplacement du trousseau de clés. Utilisez l'une des régions disponibles.Afficher les zones géographiquesus-central1
us-east1
asia-south1
europe-west1
europe-west2
europe-west4
northamerica-northeast1
southamerica-east1
australia-southeast1
KEY_RING_ID
: identifiant défini par l'utilisateur pour le trousseau de clésPROJECT_NUMBER
: numéro de projet Google Cloudpour le projet dans lequel AML AI est exécuté
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é à partir de l'instance chiffrée par CMEK :
- Révoquez le rôle de chiffreur/déchiffreur de clés cryptographiques Cloud KMS du compte de service AML AI à l'aide de la consoleGoogle Cloud ou de la CLI gcloud.
- Désactiver temporairement la clé CMEK
- Détruire définitivement la clé CMEK
Nous vous recommandons de révoquer les autorisations du compte de service AML AI avant de désactiver ou de détruire une clé. Les modifications apportées aux autorisations sont propagées en quelques secondes. Vous pouvez donc observer les conséquences de la désactivation ou de la suppression d'une clé.
Lorsque vous désactivez ou détruisez la clé de chiffrement d'une instance, vous perdez la possibilité d'utiliser ou de récupérer les données client associées à l'instance. Toutes les données client stockées dans l'instance deviennent inaccessibles, y compris les modèles, les configurations du moteur, les résultats des backtests et les résultats des prédictions. Les utilisateurs disposant d'un rôle de lecteur AML AI peuvent toujours afficher des champs tels que le nom de l'instance ou les autres champs de ressources renvoyés lors de la récupération des ressources AML AI.
Toutes les opérations qui utilisent ou exportent des données client (par exemple, l'exportation de métadonnées backtestResults
) échoueront.
Les utilisateurs disposant du rôle Administrateur AML AI ou Propriétaire peuvent supprimer l'instance.
Règles d'administration CMEK
AML AI n'est pas compatible avec les règles d'administration CMEK. Toutefois, l'IA AML exige toujours l'utilisation de CMEK, quelle que soit la règle d'administration constraints/gcp.restrictNonCmekServices
.
Interaction avec VPC-SC
Si vous avez configuré AML AI dans un périmètre VPC-SC, la clé CMEK doit toujours être accessible au compte de service. Si la clé ne se trouve pas dans le même périmètre VPC-SC, il existe plusieurs façons d'y parvenir, y compris :
- Utiliser une règle de sortie pour ajouter la ressource à la liste d'autorisation
- Utiliser l'appairage de périmètres VPC
Étape suivante
- Créer une instance
- Apprenez-en davantage sur CMEK