Par défaut, Gemini Data Analytics chiffre les contenus client au repos. Gemini Data Analytics gère le chiffrement sans intervention de votre part. Cette option est appelée chiffrement par défaut de Google.
Si vous souhaitez contrôler vos clés de chiffrement, vous pouvez utiliser des clés de chiffrement gérées par le client (CMEK) dans Cloud KMS avec des services bénéficiant d'une intégration des CMEK, y compris Gemini Data Analytics. L'utilisation de clés Cloud KMS vous permet de contrôler leur niveau de protection, leur emplacement, leur calendrier de rotation, leurs autorisations d'utilisation et d'accès, ainsi que leurs limites cryptographiques. Grâce à Cloud KMS, vous pouvez également afficher les journaux d'audit et contrôler les cycles de vie des clés. Au lieu de laisser Google posséder et gérer les clés de chiffrement de clés (KEK) symétriques qui protègent vos données, c'est vous qui vous chargez de cette tâche dans Cloud KMS.
Une fois que vous avez configuré vos ressources avec des CMEK, l'accès à vos ressources Gemini Data Analytics est semblable à celui du chiffrement par défaut de Google. Pour en savoir plus sur les options de chiffrement, consultez Clés de chiffrement gérées par le client (CMEK).
Cette page explique comment utiliser les clés de chiffrement gérées par le client (CMEK) pour protéger les données utilisées par l'API Conversational Analytics avec les sources de données BigQuery et Looker. L'API Conversational Analytics est un produit du service Gemini Data Analytics (geminidataanalytics.googleapis.com).
CMEK pour les ressources de l'API Conversational Analytics
Lorsque vous configurez CMEK pour une ressource de l'API Conversational Analytics, la clé Cloud KMS spécifiée chiffre les données sensibles au repos. Vous pouvez configurer CMEK pour les ressources DataAgent et Conversation de manière indépendante.
Les clés CMEK pour l'API Conversational Analytics sont disponibles dans la région us-east4 et dans les emplacements multirégionaux us et eu. L'emplacement global n'est pas accepté. Pour en savoir plus sur les points de terminaison régionaux et les emplacements des données, consultez Résidence des données.
Pour exiger que toutes les ressources créées dans votre projet ou dossier utilisent CMEK, consultez Appliquer l'utilisation de CMEK avec des règles d'administration.
Éléments protégés par CMEK
CMEK pour l'API Conversational Analytics protège les données au repos suivantes :
- Pour les ressources
DataAgent, tout le contenu client principal du champdata_analytics_agentest protégé. Ce contenu inclut les champsstaging_context,published_contextetlast_published_context, ainsi que les champssystem_instructionetexample_queries. - Pour les ressources
Conversation, toutes les données d'historique des messages et des états sont protégées.
Les données suivantes ne sont pas chiffrées avec la clé CMEK du client. Ces données sont protégées par le chiffrement par défaut de Google :
- Pour les ressources
DataAgent, le chiffrement Google par défaut protège les champs de métadonnées tels quename,display_name,description,labels,create_time,update_time,delete_time,purge_timeetkms_key. - Pour les ressources
Conversation, le chiffrement Google par défaut protège les champs de métadonnées tels quename,agents,labels,create_time,last_used_timeetkms_key.
Règles d'administration
L'API Conversational Analytics est compatible avec les contraintes liées aux règles d'administration, qui peuvent exiger une protection CMEK pour la création de ressources et limiter les clés Cloud KMS utilisables pour la protection CMEK. Par exemple, vous pouvez utiliser les contraintes constraints/gcp.restrictNonCmekServices et constraints/gcp.restrictCmekCryptoKeyProjects pour assurer une protection cohérente des données dans toute votre organisation.
Pour en savoir plus, consultez la section Contraintes de règles d'administration.
Limites
L'utilisation de clés gérées par le client pour l'API Conversational Analytics présente les limites suivantes :
- CMEK doit être configuré lors de la création de la ressource. Vous ne pouvez pas l'ajouter à une ressource existante ni la modifier.
- La clé Cloud KMS et la ressource de l'API Conversational Analytics doivent se trouver au même emplacement.
- La région
globaln'est pas acceptée. - Vous ne pouvez utiliser qu'une seule CMEK par projet et par région pour toutes les ressources
Conversationde ce projet et de cette région.
Avant de commencer
Avant de pouvoir utiliser les CMEK avec l'API Conversational Analytics, effectuez les étapes suivantes :
Activez les API requises dans la console Google Cloud ou Google Cloud CLI.
Console
Activez les API suivantes dans la console Google Cloud pour votre projet Google Cloud .
Activer l'API Gemini Data Analytics
gcloud
Avec la Google Cloud CLI, exécutez les commandes
gcloud services enablesuivantes pour activer respectivement l'API Gemini Data Analytics, l'API Gemini pour Google Cloud et l'API Cloud Key Management Service :gcloud services enable geminidataanalytics.googleapis.com --project=project_id gcloud services enable cloudaicompanion.googleapis.com --project=project_id gcloud services enable cloudkms.googleapis.com --project=project_id
Dans les exemples de commandes gcloud CLI précédents, remplacez
project_idpar l'ID de votre projet Google Cloud .Créez un trousseau et une clé Cloud KMS au même emplacement que vos ressources de l'API Conversational Analytics. Pour en savoir plus, consultez Créer une clé.
Créez les agents de service gérés par Google, également appelés comptes de service par produit et par projet (P4SA), s'ils n'existent pas déjà. Ces agents de service sont nécessaires pour permettre aux services impliqués dans la protection de vos ressources de l'API Conversational Analytics avec des CMEK d'accéder à votre clé Cloud KMS.
Exécutez les commandes
gcloudsuivantes pour créer les agents de service : Remplacezgcloud beta services identity create --service=geminidataanalytics.googleapis.com --project PROJECT_ID gcloud beta services identity create --service=cloudaicompanion.googleapis.com --project PROJECT_ID
PROJECT_IDpar l'ID de votre projet Google Cloud .Accordez le rôle Chiffreur/Déchiffreur de clés cryptographiques Cloud KMS (
roles/cloudkms.cryptoKeyEncrypterDecrypter) dans Identity and Access Management (IAM) aux deux agents de service que vous avez créés à l'étape précédente. Cela permettra au service Gemini Data Analytics d'utiliser votre clé Cloud KMS pour chiffrer et déchiffrer vos données Conversational Analytics API.Accordez l'autorisation à l'agent de service Gemini Data Analytics :
gcloud kms keys add-iam-policy-binding KEY_NAME \ --location KEY_LOCATION \ --keyring KEY_RING_NAME \ --member serviceAccount:service-PROJECT_NUMBER@gcp-sa-geminidataanalytics.iam.gserviceaccount.com \ --role roles/cloudkms.cryptoKeyEncrypterDecrypter \ --project KMS_PROJECT_ID
Accordez l'autorisation à l'agent de service de l'API Gemini pour Google Cloud :
gcloud kms keys add-iam-policy-binding KEY_NAME \ --location KEY_LOCATION \ --keyring KEY_RING_NAME \ --member serviceAccount:service-PROJECT_NUMBER@gcp-sa-cloudaicompanion.iam.gserviceaccount.com \ --role roles/cloudkms.cryptoKeyEncrypterDecrypter \ --project KMS_PROJECT_ID
Dans les exemples de code précédents, remplacez les exemples de valeurs comme suit :
KEY_NAME: nom de votre clé Cloud KMS.KEY_LOCATION: région de votre trousseau de clés (par exemple,us-east4).KEY_RING_NAME: nom de votre trousseau de clés.PROJECT_NUMBER: numéro de votre projet Google Cloud dans lequel vous créez des ressources d'API.KMS_PROJECT_ID: ID du projet dans lequel la clé a été créée. Il peut s'agir du même projet que celui dans lequel vous créez des ressources d'API.
Protéger des ressources avec CMEK
Cette section explique comment protéger une nouvelle ressource DataAgent ou Conversation avec une CMEK en utilisant l'API REST pour spécifier une clé Cloud KMS dans le champ kms_key lors de la création de la ressource.
Vous ne pouvez activer la CMEK que lorsque vous créez une ressource DataAgent ou Conversation.
Une clé CMEK doit se trouver dans la même région que la ressource qu'elle protège. Pour en savoir plus, consultez la section Limites.
Protéger une ressource DataAgent avec une clé CMEK
Pour protéger une nouvelle ressource DataAgent avec CMEK, spécifiez une clé Cloud KMS dans le champ kms_key lorsque vous créez l'agent de données.
SDK Python
L'exemple suivant montre comment spécifier une clé Cloud KMS lorsque vous créez une ressource DataAgent avec le SDK Python. Pour obtenir un exemple de requête create complète, consultez Créer un agent de données à l'aide du SDK Python.
# Define the KMS key.
billing_project = "BILLING_PROJECT_ID"
key_ring = "KEY_RING_NAME"
key_name = "KEY_NAME"
key_project = "KMS_PROJECT_ID" # Project where the key was created
location = "LOCATION" # Region of your key ring
if key_project == "":
key_project = billing_project
kms_key_data_agent = f"projects/{key_project}/locations/{location}/keyRings/{key_ring}/cryptoKeys/{key_name}"
data_agent = geminidataanalytics.DataAgent()
data_agent.data_analytics_agent.published_context = published_context
data_agent.kms_key = kms_key_data_agent
Dans l'exemple précédent, remplacez les valeurs comme suit :
BILLING_PROJECT_ID: ID de votre projet de facturation.KEY_RING_NAME: nom de votre trousseau de clés Cloud KMS.KEY_NAME: nom de votre clé Cloud KMS.KMS_PROJECT_ID: ID du projet dans lequel la clé a été créée. Si ce champ est vide, la valeurbilling_projectest utilisée.LOCATION: région de votre trousseau de clés.
HTTP
L'exemple suivant montre comment spécifier une clé Cloud KMS dans le corps de la requête lorsque vous créez une ressource DataAgent avec HTTP et Python. Pour obtenir un exemple de requête create complète, consultez Créer un agent de données à l'aide de HTTP et Python.
data_agent_payload = {
"name": f"projects/{billing_project}/locations/{location}/dataAgents/{data_agent_id}",
"description": "This is the description of data_agent_1.",
# If using CMEK, include the kms_key field.
"kms_key": f"projects/{key_project}/locations/{location}/keyRings/{key_ring}/cryptoKeys/{key_name}",
"data_analytics_agent": {
"published_context": {
"datasource_references": looker_data_source,
"system_instruction": system_instruction,
}
}
}
Dans l'exemple précédent, remplacez les valeurs comme suit :
KMS_PROJECT_ID: ID du projet dans lequel la clé a été créée.LOCATION: région de votre trousseau de clés.KEY_RING_NAME: nom de votre trousseau de clés Cloud KMS.KEY_NAME: nom de votre clé Cloud KMS.
Protéger une ressource Conversation avec une clé CMEK
Pour protéger une nouvelle ressource Conversation avec CMEK, spécifiez une clé Cloud KMS dans le champ kms_key lorsque vous créez la conversation.
SDK Python
L'exemple suivant montre comment spécifier une clé Cloud KMS lorsque vous créez une ressource Conversation avec le SDK Python. Pour obtenir un exemple de requête create complète, consultez Créer un agent de données à l'aide du SDK Python.
# Define the KMS key.
billing_project = "BILLING_PROJECT_ID"
key_ring = "KEY_RING_NAME"
key_name = "KEY_NAME"
key_project = "KMS_PROJECT_ID" # Project where the key was created
location = "LOCATION" # Region of your key ring
if key_project == "":
key_project = billing_project
kms_key_conversation = f"projects/{key_project}/locations/{location}/keyRings/{key_ring}/cryptoKeys/{key_name}"
conversation = geminidataanalytics.Conversation()
conversation.agents = [f"projects/{billing_project}/locations/{location}/dataAgents/{data_agent_id}"]
conversation.kms_key = kms_key_conversation
Dans l'exemple précédent, remplacez les valeurs comme suit :
BILLING_PROJECT_ID: ID de votre projet de facturation.KEY_RING_NAME: nom de votre trousseau de clés Cloud KMS.KEY_NAME: nom de votre clé Cloud KMS.KMS_PROJECT_ID: ID du projet dans lequel la clé a été créée. Si ce champ est vide, la valeurbilling_projectest utilisée.LOCATION: région de votre trousseau de clés.
HTTP
L'exemple suivant montre comment spécifier une clé Cloud KMS dans le corps de la requête lorsque vous créez une ressource Conversation avec HTTP et Python. Pour obtenir un exemple de requête create complète, consultez Créer un agent de données à l'aide de HTTP et Python.
conversation_payload = {
"agents": [
f"projects/{billing_project}/locations/{location}/dataAgents/{data_agent_id}"
],
"name": f"projects/{billing_project}/locations/{location}/conversations/{conversation_id}",
# If using CMEK, include the kms_key field.
"kms_key": f"projects/{key_project}/locations/{location}/keyRings/{key_ring_name}/cryptoKeys/{key_name}"
}
Dans l'exemple précédent, remplacez les valeurs comme suit :
KMS_PROJECT_ID: ID du projet dans lequel la clé a été créée.LOCATION: région de votre trousseau de clés.KEY_RING_NAME: nom de votre trousseau de clés Cloud KMS.KEY_NAME: nom de votre clé Cloud KMS.
Dépannage
Cette section aborde les problèmes courants et les points importants à prendre en compte lorsque vous utilisez le chiffrement CMEK avec l'API Conversational Analytics.
Changements d'état des clés
Si une version de clé Cloud KMS qui protège une ressource de l'API Conversational Analytics devient indisponible, vous perdez l'accès aux données chiffrées par cette clé. Si vous tentez d'accéder à des données protégées alors que la clé est indisponible (par exemple, en lisant le contexte d'une ressource DataAgent ou en accédant à l'historique Conversation), la requête échoue. L'erreur renvoyée dépend de la raison pour laquelle la clé n'est pas disponible :
- Si la version de la clé est désactivée ou détruite, l'opération échoue généralement avec une erreur
FAILED_PRECONDITION. - Si le rôle IAM
cloudkms.cryptoKeyEncrypterDecrypterest révoqué de l'agent de servicegcp-sa-geminidataanalyticsougcp-sa-cloudaicompanion, l'opération échoue généralement avec une erreurPERMISSION_DENIEDouNOT_FOUND.
Même lorsque la clé n'est pas disponible, vous pouvez toujours effectuer des opérations qui ne nécessitent pas de déchiffrer le contenu, comme supprimer la ressource DataAgent ou Conversation.
Pour restaurer l'accès aux données chiffrées, réactivez la clé et assurez-vous que les agents de service disposent des autorisations IAM requises, comme décrit dans Avant de commencer.
Quotas Cloud KMS et API Conversational Analytics
Lorsque vous utilisez une CMEK dans l'API Conversational Analytics, vos projets peuvent consommer des quotas de requêtes de chiffrement Cloud KMS.
Par exemple, la lecture d'une ressource DataAgent ou l'accès à l'historique Conversation protégé par CMEK nécessitent que Cloud KMS déchiffre les données.
Les opérations de chiffrement et de déchiffrement utilisant des clés CMEK affectent les quotas de Cloud KMS de différentes manières :
- Pour les clés logicielles CMEK générées dans Cloud KMS, aucun quota Cloud KMS n'est consommé.
- Pour les clés CMEK matérielles (parfois appelées "clés Cloud HSM"), les opérations de chiffrement et de déchiffrement sont comptabilisées dans les quotas Cloud HSM du projet qui contient la clé.
- Pour les clés CMEK externes (parfois appelées "clés Cloud EKM"), les opérations de chiffrement et de déchiffrement sont comptabilisées dans les quotas Cloud EKM du projet qui contient la clé.
Pour en savoir plus, consultez Quotas Cloud KMS.
Étapes suivantes
- Découvrez comment activer l'API Conversational Analytics.
- En savoir plus sur la résidence des données
- Découvrez comment vous authentifier et vous connecter à une source de données avec l'API Conversational Analytics.
- Découvrez Cloud KMS.
- En savoir plus sur les règles d'administration CMEK