Cette page explique comment chiffrer les données stockées dans des instances d'AML basée sur l'IA à l'aide de clés de chiffrement gérées par le client (CMEK).
Présentation
Toutes les données client d'une instance d'AML basée sur l'IA sont chiffrées à l'aide d'une clé CMEK lorsqu'elles sont stockées au repos. Vous gérez la clé dans Cloud Key Management Service et en contrôlez l'accès à l'aide d'Identity and Access Management. Si vous désactivez temporairement ou détruisez définitivement la clé CMEK, les données chiffrées avec cette clé ne sont pas accessibles.
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'AML basée sur l'IA, ou dans un projet distinct dans lequel vous gérez de manière centralisée les clés de plusieurs projets.
Vous attribuez une clé CMEK lorsque vous créez une instance. Toutes les instances doivent être configurées à l'aide de clés CMEK et ne peuvent pas être modifiées pour utiliser le chiffrement par défaut de Google.
Pour plus d'informations sur CMEK en général, y compris quand et pourquoi l'activer, consultez la documentation Cloud KMS.
Données client
Toutes les données client gérées par l'AML basée sur l'IA 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 d'AML basées sur l'IA, telles que les ensembles de données, les configurations de moteur, les modèles, etc. Tout stockage temporaire et persistant des données client, y compris les copies des entrées et les sorties, les fonctionnalités ML générées, les journaux, les hyperparamètres du modèle, les pondérations de modèle et les résultats de prédiction, sont chiffrés à l'aide de la clé CMEK de l'instance correspondante.
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, vous devez configurer une clé CMEK distincte dans votre projet Google Cloud. La clé KMS spécifiée dans une instance est utilisée pour les ressources d'AML basée sur l'IA et leurs données.
Créer une clé et accorder des autorisations
Les instructions suivantes expliquent comment créer une clé pour une instance, et accorder des autorisations pour chiffrer et déchiffrer les données d'instance à l'aide de cette clé. Vous pouvez utiliser une clé créée directement dans Cloud KMS ou une clé gérée en externe que vous mettez à disposition avec Cloud External Key Manager.
Dans le projet Google Cloud dans lequel vous souhaitez gérer vos clés, procédez comme suit :
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, 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 :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 ContentVous devriez recevoir une réponse JSON de ce type :
{ "name": "projects/KMS_PROJECT_ID/locations/LOCATION/keyRings/KEY_RING_ID", "createTime": CREATE_TIME }
gcloud
Avant d'utiliser les données de la commande ci-dessous, effectuez les remplacements suivants :
LOCATION
: emplacement du trousseau de clés ; utilisez l'une des régions disponibles :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 \ --location LOCATION
Windows (PowerShell)
gcloud kms keyrings create KEY_RING_ID ` --location LOCATION
Windows (cmd.exe)
gcloud kms keyrings create KEY_RING_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, 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 :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é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": CREATE_TIME, "protectionLevel": "SOFTWARE", "algorithm": "GOOGLE_SYMMETRIC_ENCRYPTION", "generateTime": GENERATE_TIME }, "purpose": "ENCRYPT_DECRYPT", "createTime": CREATE_TIME, "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 :
LOCATION
: emplacement du trousseau de clés ; utilisez l'une des régions disponibles :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é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 \ --location LOCATION \ --purpose "encryption"
Windows (PowerShell)
gcloud kms keys create KEY_ID ` --keyring KEY_RING_ID ` --location LOCATION ` --purpose "encryption"
Windows (cmd.exe)
gcloud kms keys create KEY_ID ^ --keyring KEY_RING_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 s'exécute l'AML basée sur l'IA
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
Attribuez le rôle IAM Chiffreur/Déchiffreur de CryptoKeys (
roles/cloudkms.cryptoKeyEncrypterDecrypter
) au compte de service d'AML basée sur l'IA. 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 s'exécute l'AML basée sur l'IAKEY_ID
: identifiant défini par l'utilisateur pour la cléLOCATION
: emplacement du trousseau de clés ; utilisez l'une des régions disponibles :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ésPROJECT_NUMBER
: numéro du projet Google Cloud dans lequel l'AML AI 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 à une instance chiffrée par CMEK:
- Révoquez le rôle Cloud KMS Chiffreur/Déchiffreur de CryptoKeys du compte de service AML AI à l'aide de la console Google Cloud ou de la gcloud CLI.
- Désactivez 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, ce qui vous permet d'observer les conséquences de la désactivation ou de la destruction d'une clé.
Lorsque vous désactivez ou détruisez la clé de chiffrement d'une instance, vous ne pouvez plus afficher ni récupérer les données de l'instance. Toutes les données stockées dans l'instance deviennent inaccessibles, y compris les ressources d'API telles que les ensembles de données, les modèles, les configurations de moteur, les résultats des tests backtest et les résultats des prédictions. Les utilisateurs dotés du rôle de lecteur de l'AML basée sur l'IA peuvent toujours afficher les métadonnées d'instance, telles que le nom de l'instance.
Les utilisateurs dotés du rôle "Administrateur de l'AML basée sur l'IA" ou "Propriétaire" peuvent supprimer l'instance.
Règles d'administration CMEK
L'AML basée sur l'IA n'est pas compatible avec les règles d'administration CMEK. Cependant, l'AML basée sur l'IA nécessite toujours l'utilisation de CMEK, quelle que soit la règle d'administration constraints/gcp.restrictNonCmekServices
.
Étape suivante
- Créer une instance
- Apprenez-en davantage sur CMEK
- En savoir plus sur le chiffrement par défaut de Google