Par défaut, Gemini Data Analytics chiffre le contenu client au repos. Gemini Data Analytics gère le chiffrement pour vous sans aucune action supplémentaire 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 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 une 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 la CMEK indépendamment pour les ressources DataAgent et Conversation.
Vous ne pouvez configurer la CMEK qu'au moment de la création de la ressource. Pour utiliser la CMEK, vous devez spécifier le champ kms_key lorsque vous créez une ressource DataAgent ou Conversation. Vous ne pouvez pas ajouter ni modifier une clé Cloud KMS sur une ressource existante.
Éléments protégés par CMEK
La CMEK pour l'API Conversational Analytics protège les données suivantes au repos :
- Ressources
DataAgent: tous les contenus client principaux dans les champsstaging_context,published_contextetlast_published_contextdedata_analytics_agent. Cela inclut des champs tels quesystem_instructionetexample_queries. - Ressources
Conversation: tous les messages et l'historique des états.
Les données suivantes ne sont pas chiffrées avec la clé CMEK du client. Elles sont protégées par le chiffrement par défaut de Google :
DataAgentressources : champs de métadonnées, y comprisname,display_name,description,labels,create_time,update_time,delete_time,purge_timeetkms_key- Ressources
Conversation: champs de métadonnées, y comprisname,agents,labels,create_time,last_used_timeetkms_key
Limites
La CMEK pour l'API Conversational Analytics présente les limites suivantes :
- La CMEK doit être configurée lors de la création de la ressource. Elle ne peut pas être ajoutée ni modifiée sur une ressource existante.
- 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 compatible. - Pour les ressources de l'API Conversational Analytics, la CMEK est compatible dans la région
us-east4. - Pour les ressources de l'API Conversational Analytics, la CMEK n'est compatible qu'avec les sources de données Looker.
- 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 la CMEK avec l'API Conversational Analytics, procédez comme suit :
Activez les API requises dans la Google Cloud console ou Google Cloud CLI.
Console
Activez les API suivantes dans la Google Cloud console pour votre Google Cloud projet.
Activer l'API Gemini Data Analytics
gcloud
Avec Google Cloud CLI, exécutez les commandes
gcloud services enablesuivantes pour activer respectivement l'API Gemini Data Analytics, Gemini pour Google Cloud l'API 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 commandes gcloud CLI de l'exemple précédent, remplacez
project_idpar l'ID de votre Google Cloud projet.Ajoutez votre projet à la liste d'autorisation.
Votre Google Cloud projet doit être ajouté à une liste d'autorisation pour utiliser la CMEK avec Gemini Data Analytics. Pour demander l'ajout de votre projet à la liste d'autorisation, envoyez votre ID de projet via le formulaire de liste d'autorisation CMEK GDA. L'ajout de votre projet à la liste d'autorisation prend environ un à deux jours ouvrés.
Créez un trousseau de clés et une clé Cloud KMS au même emplacement que vos ressources de l'API Conversational Analytics. Pour en savoir plus, consultez la page 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 la 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 Google Cloud projet.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 pour permettre au service Gemini Data Analytics d'utiliser votre clé Cloud KMS pour chiffrer et déchiffrer les données de votre API Conversational Analytics.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 Gemini pour l' Google Cloud API :
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 dans lequel vous créez des ressources d'API. Google CloudKMS_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 une CMEK
Cette section explique comment protéger une nouvelle ressource DataAgent ou Conversation avec une CMEK à l'aide de 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 CMEK
Pour protéger une nouvelle ressource DataAgent avec une 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 la section 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 laissé vide,billing_projectest utilisé.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 la section 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 CMEK
Pour protéger une nouvelle ressource Conversation avec une 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 la section 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 laissé vide,billing_projectest utilisé.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 la section 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 la CMEK avec l'API Conversational Analytics.
Modifications de l'é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é est indisponible :
- Si la version de 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é est indisponible, vous pouvez toujours effectuer des opérations qui ne nécessitent pas de déchiffrer le contenu, comme la suppression de la ressource DataAgent ou Conversation.
Pour rétablir 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 la section 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 une CMEK nécessite 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.
Étape suivante
- Découvrez comment activer l'API Conversational Analytics.
- Découvrez comment vous authentifier et vous connecter à une source de données avec l'API Conversational Analytics.
- Découvrez comment créer un agent de données à l'aide du SDK Python.
- Découvrez comment créer un agent de données à l'aide de HTTP et Python.
- Découvrez Cloud KMS.
- Découvrez les règles d'administration CMEK.