Différents types de méthodes d'authentification sont disponibles pour différents modes d'accès :
Cas d'utilisation | Méthode d'authentification | À propos de cette méthode d'authentification |
---|---|---|
Accédez aux sources de données directement depuis un agent. | Compte de service | Les agents déployés ont accès à toutes les ressources auxquelles leur compte de service est autorisé à accéder. |
Envoyez des requêtes aux points de terminaison à l'aide de clés API depuis un agent. | Clés API | Avant d'utiliser cette méthode d'authentification, vérifiez que l'API que vous souhaitez utiliser est compatible avec les clés API. |
Gérez les comptes utilisateur, l'inscription, la connexion ou l'autorisation pour les utilisateurs finaux de l'agent. | ID client OAuth | Votre agent doit demander et obtenir le consentement de l'utilisateur. |
Rôles
Les agents que vous déployez sur Vertex AI Agent Engine s'exécutent à l'aide de l'agent de service AI Platform Reasoning Engine ou de votre compte de service personnalisé. Pour en savoir plus, consultez Configurer l'identité et les autorisations de votre agent.
Agent de service AI Platform Reasoning Engine
Le compte de service Agent de service AI Platform Reasoning Engine utilise le format service-PROJECT_NUMBER@gcp-sa-aiplatform-re.iam.gserviceaccount.com
.
Le compte de service dispose d'un rôle Agent de service Vertex AI Reasoning Engine (roles/aiplatform.reasoningEngineServiceAgent
) qui accorde les autorisations par défaut requises pour les agents déployés. Vous pouvez consulter la liste complète des autorisations par défaut dans la documentation IAM.
Lister les rôles d'un agent déployé
Console
Accédez à la page IAM.
Sélectionnez le projet correspondant à votre projet Google Cloud .
Recherchez le principal qui correspond au compte de service utilisé comme identité de votre agent.
Les rôles de l'agent déployé se trouvent dans la colonne Rôle.
gcloud
Commencez par installer et initialiser la CLI gcloud
. Exécutez ensuite la commande suivante :
gcloud projects get-iam-policy PROJECT_ID_OR_NUMBER \
--flatten="bindings[].members" \
--filter="bindings.members:serviceAccount:PRINCIPAL" \
--format="value(bindings.role)"
Où :
PROJECT_ID_OR_NUMBER
correspond à l'ID ou au numéro de votre projet.PRINCIPAL
est basé sur le compte de service utilisé lors du déploiement de l'agent sur Vertex AI Agent Engine.
Pour en savoir plus, consultez la documentation IAM et la documentation de référence de la CLI.
Python
Commencez par installer la bibliothèque cliente en exécutant
pip install google-api-python-client
Ensuite, authentifiez-vous et exécutez la commande suivante pour lister les rôles d'un agent déployé :
from google.cloud import resourcemanager_v3
from google.iam.v1 import iam_policy_pb2
project_id = "PROJECT_ID"
principal = "PRINCIPAL"
crm_service = resourcemanager_v3.ProjectsClient()
policy = crm_service.get_iam_policy(iam_policy_pb2.GetIamPolicyRequest(
resource=f"projects/{project_id}"
))
for binding in policy.bindings:
for member in binding.members:
if principal in member:
print(binding.role)
Où PRINCIPAL
est basé sur le compte de service utilisé lors du déploiement de l'agent sur Vertex AI Agent Engine.
Attribuer des rôles pour un agent déployé
Console (recommandé)
Accédez à la page IAM.
Sélectionnez le projet correspondant à votre projet Google Cloud .
Recherchez le principal qui correspond au compte de service utilisé comme identité de votre agent.
Ajoutez les rôles requis au compte principal en cliquant sur le bouton de modification, en ajoutant les rôles, puis en cliquant sur le bouton d'enregistrement.
gcloud
Commencez par installer et initialiser la CLI gcloud
. Exécutez ensuite la commande suivante :
gcloud projects add-iam-policy-binding PROJECT_ID --member=PRINCIPAL --role=ROLE_NAME
Où :
PRINCIPAL
est basé sur le compte de service utilisé lors du déploiement de l'agent sur Vertex AI Agent Engine.ROLE_NAME
: nom du rôle que vous souhaitez attribuer. Pour obtenir la liste complète des rôles prédéfinis, consultez la page Comprendre les rôles.
Pour en savoir plus, consultez la documentation IAM et la documentation de référence de la CLI.
Python
Nous vous déconseillons d'écrire votre propre code Python pour accorder ou révoquer des rôles pour les agents déployés. Nous vous recommandons plutôt d'utiliser la console Google Cloud ou gcloud
pour les opérations ponctuelles, ou Terraform pour gérer contrôle des accès IAM de manière programmatique. Si vous souhaitez ou devez le faire en Python, consultez la documentation de la bibliothèque cliente IAM.
Révoquer des rôles d'un agent déployé
Console (recommandé)
Accédez à la page IAM.
Sélectionnez le projet correspondant à votre projet Google Cloud .
Recherchez le principal qui correspond au compte de service utilisé comme identité de votre agent.
Révoquez les rôles du compte principal en cliquant sur le bouton de modification, en supprimant les rôles correspondants, puis en cliquant sur le bouton d'enregistrement.
gcloud
Commencez par installer et initialiser la CLI gcloud
. Exécutez ensuite la commande suivante :
gcloud projects remove-iam-policy-binding PROJECT_ID --member=PRINCIPAL --role=ROLE_NAME
Où :
PRINCIPAL
est basé sur le compte de service utilisé lors du déploiement de l'agent sur Vertex AI Agent Engine.ROLE_NAME
: nom du rôle que vous souhaitez révoquer. Pour obtenir la liste complète des rôles prédéfinis, consultez la page Comprendre les rôles.
Pour en savoir plus, consultez la documentation IAM et la documentation de référence de la CLI.
Python
Nous vous déconseillons d'écrire votre propre code Python pour accorder ou révoquer des rôles pour les agents déployés. Nous vous recommandons plutôt d'utiliser la console Google Cloud ou gcloud
pour les opérations ponctuelles, ou Terraform pour gérer contrôle des accès IAM de manière programmatique. Si vous souhaitez ou devez le faire en Python, consultez la documentation de la bibliothèque cliente IAM.
Secrets
Un secret contient une ou plusieurs versions de secret, ainsi que des métadonnées telles que des étiquettes et des informations de réplication. La charge utile réelle d'un secret est stockée dans une version de secret. Les secrets sont gérés (via Secret Manager) au niveau du projet et peuvent être partagés entre les agents déployés. Pour lister les secrets correspondant à un agent dans Secret Manager, vous pouvez ajouter des libellés et les utiliser pour filtrer.
Créer un secret
Console
Accédez à la page Secret Manager.
Sur la page Secret Manager, cliquez sur Créer un secret.
Dans le champ Nom, saisissez un nom pour le secret (par exemple,
my-secret
).Facultatif : Pour ajouter une version de secret au moment de sa création, saisissez une valeur dans le champ Valeur du secret (par exemple,
abcd1234
).Accédez à Libellés, puis cliquez sur Ajouter un libellé.
Saisissez une clé et la valeur correspondante pour créer un libellé.
Cliquez sur Créer un secret.
gcloud
Commencez par installer et initialiser la CLI gcloud
. Exécutez ensuite les commandes suivantes :
gcloud secrets create SECRET_ID --replication-policy="automatic"
gcloud secrets versions add SECRET_ID --data-file="FILE_PATH"
Où :
SECRET_ID
est l'ID ou l'identifiant complet du secret.FILE_PATH
est le chemin d'accès complet (y compris le nom du fichier) au fichier contenant les informations sur la version.
Pour en savoir plus, consultez la documentation Secret Manager sur la création d'un secret et d'une version de secret, ou la documentation de référence de la CLI sur la création d'un secret et d'une version de secret, respectivement.
Python
Commencez par installer la bibliothèque cliente en exécutant
pip install google-cloud-secret-manager
Ensuite, authentifiez-vous et exécutez la commande suivante :
from google.cloud import secretmanager
import google_crc32c
client = secretmanager.SecretManagerServiceClient()
secret = client.create_secret(request={
"parent": "projects/PROJECT_ID",
"secret_id": "SECRET_ID",
"secret": { # google.cloud.secretmanager_v1.types.Secret
# Required. The replication policy cannot be changed after the Secret has been created.
"replication": {"automatic": {}},
# Optional. Labels to associate with the secret.
"labels": {"type": "api_key", "provider": "anthropic"},
# Optional. The secret's time-to-live in seconds with format (e.g.,
# "900s" for 15 minutes). If specified, the secret versions will be
# automatically deleted upon reaching the end of the TTL period.
"ttl": "TTL",
},
})
anthropic_api_key = "API_KEY" # The secret to be stored.
payload_bytes = anthropic_api_key.encode("UTF-8")
# Optional. Calculate payload checksum.
crc32c = google_crc32c.Checksum()
crc32c.update(payload_bytes)
version = client.add_secret_version(request={
"parent": secret.name,
"payload": {
"data": payload_bytes,
"data_crc32c": int(crc32c.hexdigest(), 16), # Optional.
},
})
print(f"Added secret version: {version.name}")
Obtenir un secret
Console
Accédez à la page Secret Manager.
Sur la page Secret Manager, cliquez sur le nom d'un secret à décrire.
La page Informations détaillées sur le secret répertorie les informations sur le secret.
gcloud
Commencez par installer et initialiser la CLI gcloud
. Exécutez ensuite la commande suivante :
gcloud secrets versions describe VERSION_ID --secret=SECRET_ID
Où :
VERSION_ID
est l'ID de la version du secret.SECRET_ID
est l'ID du secret ou l'identifiant complet du secret.
Pour en savoir plus, consultez la documentation de Secret Manager ou la documentation de référence de la CLI.
Python
Commencez par installer la bibliothèque cliente en exécutant
pip install google-cloud-secret-manager
Ensuite, authentifiez-vous et exécutez la commande suivante :
from google.cloud import secretmanager
client = secretmanager.SecretManagerServiceClient()
name = client.secret_path("PROJECT_ID", "SECRET_ID")
response = client.get_secret(request={"name": name})
Répertorier les secrets
Console
Accédez à la page Secret Manager.
Dans le tableau "Secrets", cliquez dans le champ Filtre.
Choisissez une propriété de filtre et la valeur correspondante, par exemple
Location:asia-east1
.Le tableau est automatiquement filtré en fonction des valeurs saisies.
(Facultatif) Pour filtrer les versions d'un secret, sélectionnez un secret pour accéder à ses versions, puis utilisez l'option Filtrer dans le tableau Versions.
gcloud
Commencez par installer et initialiser la CLI gcloud
.
Pour lister tous les secrets d'un projet, exécutez la commande suivante :
gcloud secrets list --filter="FILTER"
où FILTER
est une chaîne (par exemple, name:asecret OR name:bsecret
) ou une expression régulière (par exemple, name ~ "secret_ab.*"
).
Pour lister toutes les versions d'un secret, exécutez la commande suivante :
gcloud secrets versions list SECRET_ID
où SECRET_ID
est l'ID ou l'identifiant complet du secret.
Pour en savoir plus, consultez la documentation Secret Manager sur le filtrage des secrets et la liste des versions de secrets, ou la documentation de référence de la CLI sur la liste des secrets et des versions de secrets, respectivement.
Python
Commencez par installer la bibliothèque cliente en exécutant
pip install google-cloud-secret-manager
Ensuite, authentifiez-vous et exécutez la commande suivante :
from google.cloud import secretmanager
client = secretmanager.SecretManagerServiceClient()
for secret in client.list_secrets(request={
"parent": "projects/PROJECT_ID",
"filter": "FILTER", # e.g. "labels.provider=anthropic"
}):
print(f"Found secret: {secret.name}")
Mettre à jour un secret
Console
Accédez à la page Secret Manager.
Sur la page Secret Manager, cochez la case située à côté du nom du secret.
Si le panneau d'informations est fermé, cliquez sur Afficher le panneau d'informations pour afficher celui-ci.
Dans le panneau d'informations, cliquez sur l'onglet Libellés.
Cliquez sur Ajouter un libellé, puis saisissez une clé et une valeur pour le libellé.
Cliquez sur Enregistrer.
gcloud
Commencez par installer et initialiser la CLI gcloud
. Exécutez ensuite la commande suivante :
gcloud secrets update SECRET_ID --update-labels=KEY=VALUE
Où :
SECRET_ID
est l'ID du secret ou l'identifiant complet du secret.KEY
est la clé du libellé.VALUE
est la valeur correspondante du libellé.
Pour en savoir plus, consultez la documentation Secret Manager ou la documentation de référence de la CLI.
Python
Commencez par installer la bibliothèque cliente en exécutant
pip install google-cloud-secret-manager
Ensuite, authentifiez-vous et exécutez la commande suivante :
from google.cloud import secretmanager
client = secretmanager.SecretManagerServiceClient()
name = client.secret_path("PROJECT_ID", "SECRET_ID")
response = client.update_secret(request={
"secret": {
"name": name,
"labels": {"type": "api_key", "provider": "anthropic"}, # updated labels
},
"update_mask": {"paths": ["labels"]},
})
print(f"Updated secret: {response.name}")
Supprimer un secret
Console
Accédez à la page Secret Manager.
Sur la page Secret Manager, cliquez sur Afficher plus dans la colonne Actions du secret.
Sélectionnez Supprimer dans le menu.
Saisissez le nom du secret dans la boîte de dialogue Supprimer le secret.
Cliquez sur le bouton Supprimer le secret.
gcloud
Commencez par installer et initialiser la CLI gcloud
.
Pour supprimer une version secrète, exécutez la commande suivante :
gcloud secrets versions destroy VERSION_ID --secret=SECRET_ID
Où :
VERSION_ID
est le nom de ressource de la version secrète.SECRET_ID
est l'ID du secret ou l'identifiant complet du secret.
Pour supprimer un secret et toutes ses versions, exécutez la commande suivante :
gcloud secrets delete SECRET_ID
où SECRET_ID
est l'ID du secret ou l'identifiant complet du secret.
Pour en savoir plus, consultez la documentation Secret Manager sur la suppression d'un secret et la destruction d'une version de secret, ou la référence de CLI sur la suppression d'un secret et la destruction d'une version de secret.
Python
Commencez par installer la bibliothèque cliente en exécutant
pip install google-cloud-secret-manager
Ensuite, authentifiez-vous et exécutez la commande suivante :
from google.cloud import secretmanager
client = secretmanager.SecretManagerServiceClient()
name = client.secret_path("PROJECT_ID", "SECRET_ID")
client.delete_secret(request={"name": name})
Clients et identifiants OAuth
Un ID client sert à identifier un agent unique auprès des serveurs OAuth de Google. Si votre agent s'exécute sur plusieurs plates-formes, chacune d'elle devra posséder son propre ID client. De manière générale, pour intégrer un agent basé sur OAuth, procédez comme suit :
Créez un client et un identifiant OAuth.
Stockez l'ID client et le code secret dans Secret Manager. (voir Créer un secret).
Accédez au secret dans votre agent pendant le développement.
Créer un identifiant client OAuth
Dans la console Google Cloud , accédez à la page Google Auth Platform > Clients.
(Si nécessaire) Si l'écran affiche "Google Auth Platform pas encore configuré", cliquez sur Commencer et remplissez les configurations du projet. (Vous pourrez les modifier ultérieurement.) Pour en savoir plus sur la préparation à la production, consultez Conformité avec les règles OAuth 2.0.
Cliquez sur Créer un client.
Définissez le paramètre Type d'application sur
Web application
.Définissez le nom du client OAuth sur
OAUTH_CLIENT_DISPLAY_NAME
.Sous URI de redirection autorisés, ajoutez l'URI pour
REDIRECT_URI
.Sous "Codes secrets du client", cliquez sur le bouton "Télécharger JSON". Un fichier
client_secret.json
contenant les éléments suivants sera téléchargé :
{'web': {
'client_id': "CLIENT_ID",
'client_secret': "CLIENT_SECRET",
'project_id': "PROJECT_ID",
'redirect_uris': [REDIRECT_URIs],
'auth_uri': 'https://accounts.google.com/o/oauth2/auth',
'token_uri': 'https://www.googleapis.com/oauth2/v3/token',
'auth_provider_x509_cert_url': 'https://www.googleapis.com/oauth2/v1/certs',
'javascript_origins': "JAVASCRIPT_ORIGINS", # Optional.
}}
- Stockez l'ID client et le code secret dans Secret Manager, par exemple.
from google.cloud import secretmanager
import google_crc32c
import json
client = secretmanager.SecretManagerServiceClient()
secret = client.create_secret(request={
"parent": "projects/PROJECT_ID",
"secret_id": "OAUTH_SECRET_ID", # e.g. "oauth-client-demo"
"secret": {
"labels": {"type": "oauth_client"},
"replication": {"automatic": {}},
},
})
payload_bytes = json.dumps(cred).encode("UTF-8")
crc32c = google_crc32c.Checksum()
crc32c.update(payload_bytes)
client.add_secret_version(request={
"parent": secret.name,
"payload": {
"data": payload_bytes,
"data_crc32c": int(crc32c.hexdigest(), 16),
},
})
Répertorier les clients OAuth
Dans la console Google Cloud , accédez à la page Google Auth Platform > Clients.
La liste des identifiants client OAuth s'affiche.
Supprimer un client OAuth
Dans la console Google Cloud , accédez à la page Google Auth Platform > Clients.
Sélectionnez le ou les identifiants de client OAuth à supprimer, puis cliquez sur "Supprimer".
Clés de chiffrement gérées par le client (CMEK)
Par défaut, Google Cloud chiffre automatiquement les données au repos à l'aide de clés de chiffrement gérées par Google. Si vous avez des exigences réglementaires ou de conformité spécifiques concernant les clés qui protègent vos données, vous pouvez utiliser des clés de chiffrement gérées par le client (CMEK) pour vos agents déployés.
Consultez la documentation CMEK pour Vertex AI pour connaître les exigences générales et obtenir des conseils sur l'utilisation de CMEK avec Vertex AI, y compris :
- Configuration du projet (facturation et API activées)
- Créer des trousseaux de clés et des clés
- Autorisations requises
Pour activer CMEK pour votre agent, vous devez spécifier encryption_spec
avec votre clé Cloud KMS lorsque vous créez une instance Agent Engine. Pour obtenir des exemples de code, consultez Configurer des clés de chiffrement gérées par le client.
Limites
Les limites suivantes s'appliquent lorsque vous utilisez CMEK avec Vertex AI Agent Engine :
Les clés multirégionales ne sont pas autorisées : seules les clés spécifiques à une région sont acceptées. La région du trousseau de clés et de la clé doit être la même que celle de votre instance Agent Engine.
Les instances CMEK déployées ne peuvent pas être mises à jour : une fois qu'un agent est déployé avec une clé CMEK, l'instance ne peut pas être mise à jour ni modifiée pour ce déploiement. Pour utiliser une spécification Agent Engine différente (pour une nouvelle clé ou pour d'autres configurations), vous devez déployer une nouvelle instance Agent Engine.
Certaines métadonnées et données opérationnelles ne sont pas chiffrées : CMEK chiffre les données principales de l'agent au repos. Toutefois, certaines métadonnées et données opérationnelles d'exécution ne sont pas chiffrées. Par exemple :
- Métadonnées de l'agent :
- Noms à afficher
- Descriptions
- Données opérationnelles de l'environnement d'exécution :
- Adresses e-mail du compte de service
- Noms des méthodes de classe d'objet d'agent
- Variables d'environnement
- Métadonnées de l'agent :