Utiliser un compte de service personnalisé

Vous pouvez configurer AI Platform Prediction afin qu'il utilise le compte de service de votre choix lorsqu'il exécute du code personnalisé pour diffuser des prédictions. Plus précisément, vous pouvez spécifier un compte de service personnalisé lorsque vous effectuez l'une des opérations suivantes :

L'utilisation d'un compte de service personnalisé vous permet de personnaliser les ressources Google Cloud auxquelles votre code de diffusion personnalisé peut accéder sans accorder trop d'autorisations au compte de service utilisé par AI Platform Prediction par défaut.

Ce guide se concentre sur les autorisations des ressources AI Platform Prediction pour accéder à d'autres ressources Google Cloud. Pour en savoir plus sur les autorisations nécessaires pour accéder directement aux ressources AI Platform Prediction, consultez la page Contrôle des accès.

Comprendre l'agent de service

Par défaut, AI Platform Prediction utilise un agent de service pour diffuser des prédictions en ligne à partir de versions de modèle qui n'utilisent pas de conteneurs personnalisés. Cet agent de service est identifié par une adresse e-mail au format suivant:

service-PROJECT_NUMBER@cloud-ml.google.com.iam.gserviceaccount.com

PROJECT_NUMBER est remplacé par le numéro de projet correspondant à votre projet Google Cloud.

Recherchez le compte de service correspondant pour votre projet dans Google Cloud Console ou à l'aide de Google Cloud CLI :

console Google Cloud

Accédez à la page IAM de la console Google Cloud, sélectionnez Inclure les attributions de rôles fournis par Google, puis recherchez le compte principal correspondant au format d'adresse e-mail décrit précédemment dans cette section. Le compte de service porte également le nom Google Cloud ML Engine Service Agent.

Accéder à la page IAM

gcloud

Exécutez la commande suivante dans un environnement Shell dans lequel vous avez initialisé la CLI gcloud :

gcloud projects get-iam-policy PROJECT_ID \
  --flatten="bindings[].members" \
  --format="table(bindings.members)" \
  --filter="bindings.role:roles/ml.serviceAgent" \
  | grep serviceAccount:

Remplacez PROJECT_ID par l'ID de votre projet Google Cloud.

Cette commande génère les éléments suivants :

serviceAccount:GOOGLE_MANAGED_SERVICE_ACCOUNT

GOOGLE_MANAGED_SERVICE_ACCOUNT est l'adresse e-mail de l'agent de service AI Platform de votre projet.

Cet agent de service dispose d'autorisations appropriées pour la plupart des versions de modèle. Par exemple, il peut lire à partir de buckets Cloud Storage situés dans le même projet Google Cloud.

Si vous souhaitez que vos routines de prédiction personnalisées s'exécutent avec des autorisations supplémentaires, vous pouvez attribuer des rôles IAM supplémentaires à ce compte de service. Par exemple, vous pouvez l'autoriser à accéder aux buckets Cloud Storage d'autres projets Google Cloud.

Compte de service utilisé par défaut dans les conteneurs personnalisés

Si la version de votre modèle utilise un conteneur personnalisé, par défaut le conteneur ne s'exécute pas à l'aide de l'agent de service AI Platform. Il utilise plutôt un compte de service géré par AI Platform Prediction. Ce compte de service est autorisé à lire les artefacts de modèle qu'AI Platform Prediction rend disponible via un URI stocké dans la variable d'environnement AIP_STORAGE_URI.

Vous ne pouvez pas personnaliser les autorisations de ce compte de service utilisé par défaut dans les conteneurs personnalisés. Si vous souhaitez personnaliser les autorisations disponibles pour votre conteneur personnalisé, lisez les sections suivantes afin d'utiliser un compte de service personnalisé avec votre version de modèle.

Utiliser un compte de service personnalisé

Si vous souhaitez accorder ou limiter des autorisations Google Cloud pour une version de modèle spécifique, utilisez un compte de service personnalisé au lieu de l'agent de service.

Pour ce faire, commencez par configurer un compte de service personnalisé. Ensuite, spécifiez le compte de service personnalisé lorsque vous créez une version de modèle.

Configurer un compte de service personnalisé

Pour configurer un compte de service personnalisé, procédez comme suit :

  1. Créez un compte de service géré par l'utilisateur.

  2. Attribuez des rôles IAM à votre nouveau compte de service afin de fournir à votre code diffuseur de prédictions toutes les autorisations nécessaires à son exécution.

  3. Si le compte de service géré par l'utilisateur se trouve dans un projet différent des versions de votre modèle, configurez le compte de service géré par l'utilisateur pour pouvoir l'associer à vos versions de modèle.

  1. Attribuez au agent de service AI Platform de votre projet le rôle "Administrateur de compte de service" (roles/iam.serviceAccountAdmin) pour votre nouveau compte de service personnalisé. Pour ce faire, utilisez la CLI gcloud afin d'exécuter la commande suivante :

    gcloud iam service-accounts add-iam-policy-binding \
      --role=roles/iam.serviceAccountAdmin \
      --member=serviceAccount:GOOGLE_MANAGED_SERVICE_ACCOUNT \
      CUSTOM_SERVICE_ACCOUNT
    

    Dans cette commande, remplacez les espaces réservés suivants :

Spécifier le compte de service personnalisé pour votre version de modèle

Pour permettre à votre code diffuseur de prédictions d'accéder à un compte de service personnalisé, spécifiez le champ serviceAccount lorsque vous créez une version de modèle. Rappelez-vous que la version de modèle doit utiliser un conteneur personnalisé ou une routine de prédiction personnalisée.

Si vous utilisez la CLI gcloud pour créer une version de modèle, vous pouvez utiliser l'indicateur --service-account avec le composant gcloud beta. Exemple :

gcloud beta ai-platform versions create VERSION \
  --service-account CUSTOM_SERVICE_ACCOUNT \
  ...

Remplacez l'élément suivant :

Étape suivante