Gérer l'accès des agents aux API Google Cloud

Les développeurs d'applications peuvent demander une identité d'agent pour les agents d'IA qui s'exécutent sur Google Kubernetes Engine (GKE). L'identité de l'agent est une identité par pod qui peut être liée de manière cryptographique à chaque pod de la charge de travail. Les agents peuvent ensuite s'authentifier auprès des API Google Cloud en utilisant l'identité de l'agent. Vous pouvez contrôler les ressources auxquelles un agent peut accéder en l'incluant en tant que principal dans les stratégies Identity and Access Management (IAM). Ce document explique comment gérer l'accès aux API et aux services Google Cloud pour les agents qui utilisent une identité d'agent.

Ce document est destiné aux administrateurs de sécurité et de plate-forme qui gèrent l'autorisation des agents que les développeurs déploient dans les clusters GKE. Vous devez déjà connaître les thèmes suivants :

Avant de commencer

Avant de commencer, effectuez les tâches suivantes :

  • Activez l'API Google Kubernetes Engine.
  • Activer l'API Google Kubernetes Engine
  • Pour utiliser Google Cloud CLI pour cette tâche, installez puis initialisez la gcloud CLI. Si vous avez déjà installé la gcloud CLI, obtenez la dernière version en exécutant la commande gcloud components update. Il est possible que les versions antérieures de la gcloud CLI ne permettent pas d'exécuter les commandes de ce document.
  • Vérifiez que vous disposez d'un cluster Autopilot ou standard existant sur lequel la Workload Identity Federation for GKE est activée et qui exécute la version 1.37.0-gke.3503000 ou ultérieure de GKE.

Rôles requis

Pour obtenir les autorisations nécessaires pour gérer l'accès aux API Google Cloud pour les agents, demandez à votre administrateur de vous accorder les rôles IAM suivants sur le projet Google Cloud  :

Pour en savoir plus sur l'attribution de rôles, consultez Gérer l'accès aux projets, aux dossiers et aux organisations.

Vous pouvez également obtenir les autorisations requises avec des rôles personnalisés ou d'autres rôles prédéfinis.

Trouver l'identifiant principal d'un agent

Cette section explique comment construire l'identifiant principal d'un agent. Vous pouvez utiliser cet identifiant dans les stratégies IAM pour contrôler les ressources auxquelles l'agent peut accéder.

Toute charge de travail d'agent qui demande une identité d'agent reçoit une chaîne d'identité SPIFFE unique pour cette charge de travail. Lorsque l'application appelle les API Google Cloud , les appels sont authentifiés à l'aide d'un jeton d'accès à l'identité de l'agent qui valide le fait que la charge de travail possède une identité d'agent. Ce jeton d'accès inclut un identifiant principal IAM pour la charge de travail de l'agent, que vous pouvez inclure dans les stratégies IAM pour contrôler les ressources auxquelles cet agent a accès.

Lorsque vous concevez vos stratégies IAM, vous pouvez créer les identifiants principaux pour les agents à l'aide des informations suivantes :

  • Hiérarchie des ressources du projet.
  • Nom du cluster.
  • Espace de noms Kubernetes et compte de service Kubernetes dans cet espace de noms.

Lorsque les développeurs déploient des agents qui obtiennent une identité d'agent correspondant à l'identifiant principal, l'agent hérite de l'accès que vous avez spécifié dans votre règle.

Pour trouver l'identifiant principal à utiliser dans vos règles, procédez comme suit :

  1. Identifiez le domaine de confiance pour l'identité. Le domaine de confiance dépend de l'appartenance du projet à une organisation :

    • Projets appartenant à une organisation :

      agents.global.org-ORGANIZATION_ID.system.id.goog
      

      Remplacez ORGANIZATION_ID par l'ID d'organisation.

    • Projets qui ne font pas partie d'une organisation :

      agents.global.proj-PROJECT_NUMBER.system.id.goog
      

      Remplacez PROJECT_NUMBER par le numéro du projet de cluster.

  2. Identifiez les informations suivantes sur le cluster :

    • Nom du cluster GKE.
    • Emplacement du plan de contrôle du cluster, par exemple us-central1.
    • Espace de noms Kubernetes dans lequel les développeurs déploient les charges de travail.
    • Nom du compte de service Kubernetes que les développeurs doivent utiliser pour la charge de travail de l'agent.

    Si vous ne disposez pas de ces informations, demandez-les à votre équipe de plate-forme. L'équipe de plate-forme doit configurer les espaces de noms, les comptes de service et les règles RBAC dans le cluster afin que les agents ayant des exigences d'accès différentes obtiennent des identités différentes.

  3. Construisez l'identifiant principal :

    principal://TRUST_DOMAIN/resources/container/projects/PROJECT_NUMBER/locations/CONTROL_PLANE_LOCATION/clusters/CLUSTER_NAME/ns/KUBERNETES_NAMESPACE/sa/KUBERNETES_SERVICEACCOUNT
    

    Remplacez les éléments suivants :

    • TRUST_DOMAIN : domaine de confiance pour l'identité de l'agent.
    • PROJECT_NUMBER : numéro du projet de cluster.
    • CONTROL_PLANE_LOCATION : région ou zone du plan de contrôle du cluster.
    • CLUSTER_NAME : nom du cluster.
    • KUBERNETES_NAMESPACE : nom de l'espace de noms Kubernetes.
    • KUBERNETES_SERVICEACCOUNT : nom du compte de service Kubernetes

Utiliser des règles pour contrôler les accès

Cette section explique comment utiliser l'identifiant principal d'un agent pour contrôler les API et services auxquels il peut accéder. Google Cloud Pour contrôler l'accès, incluez l'identifiant du compte principal dans l'une des stratégies IAM suivantes :

Une fois que vous avez créé ou mis à jour une règle, tout agent qui demande une identité d'agent, s'exécute dans cet espace de noms et utilise ce compte de service dispose de l'accès que vous spécifiez dans vos règles.

Autoriser les agents à accéder au gestionnaire d'authentification

Le gestionnaire d'authentification des identités d'agent est un courtier d'authentification et un coffre-fort d'identifiants que les agents peuvent utiliser pour obtenir des identifiants permettant d'accéder à des outils et services externes, soit en tant qu'identité propre de l'agent, soit au nom d'un utilisateur final. Le gestionnaire d'authentification peut comporter un ou plusieurs fournisseurs d'authentification, chacun gérant un flux d'authentification et d'acquisition d'identifiants spécifique pour un service donné. Pour accorder aux agents GKE l'accès à des fournisseurs d'authentification spécifiques, procédez comme suit :

  1. Recherchez l'identifiant principal de l'agent.
  2. Obtenez le nom du fournisseur d'authentification auquel l'agent doit accéder.
  3. Attribuez le rôle Utilisateur de l'identité de l'agent (roles/agentidentity.user) au compte principal de l'agent sur le fournisseur d'authentification :

    gcloud agent-identity auth-providers add-iam-policy-binding AUTH_PROVIDER_NAME \
        --location=AUTH_PROVIDER_LOCATION \
        --member=PRINCIPAL_IDENTIFIER \
        --role=roles/agentidentity.user
    

    Remplacez les éléments suivants :

    • AUTH_PROVIDER_NAME : nom du fournisseur d'authentification.
    • AUTH_PROVIDER_LOCATION : région du fournisseur d'authentification.
    • PRINCIPAL_IDENTIFIER : identifiant principal de l'agent.

    Vous pouvez également gérer l'accès aux fournisseurs d'authentification pour les agents enregistrés dans le registre des agents en créant une liaison de fournisseur d'authentification.

Étapes suivantes