AI Platform Prediction utilise IAM (Identity and Access Management) pour gérer l'accès aux ressources. Pour accorder l'accès à une ressource, attribuez un ou plusieurs rôles à un utilisateur, un groupe ou un compte de service. Pour partager un modèle, accordez un rôle donnant accès à ce modèle et à ses versions.
Ce guide porte sur deux rôles AI Platform Prediction prédéfinis qui peuvent être utilisés pour accorder l'accès aux ressources du modèle :
- Propriétaire du modèle AI Platform Prediction
- Utilisateur du modèle AI Platform Prediction
Pour en savoir plus sur les autres rôles, consultez les explications détaillées sur l'ensemble des rôles IAM disponibles pour une utilisation avec AI Platform Prediction.
Avant de commencer
- Entraînez votre modèle de machine learning.
- Déployez votre modèle sur AI Platform Prediction.
Rôles au niveau du modèle
Les rôles Propriétaire de modèle et Utilisateur de modèle AI Platform Prediction accordent diverses autorisations sur une ressource de modèle particulière.
Vous pouvez partager des modèles avec des personnes ou avec des services en leur attribuant le rôle Utilisateur de modèle.
Nom du rôle | Nom du rôle | Fonctions |
---|---|---|
Propriétaire du modèle AI Platform Prediction |
Accès complet au modèle et à ses versions. Ce rôle est automatiquement attribué à l'utilisateur qui crée le modèle. |
|
Utilisateur du modèle AI Platform Prediction |
Autorisations de lire le modèle et ses versions, et de les utiliser pour la prédiction. L'attribution de ce rôle facilite le partage de modèles spécifiques. |
Autoriser des utilisateurs et des comptes de service à accéder à un modèle
Cet exemple indique comment modifier une stratégie IAM pour un modèle spécifique en accordant le rôle de propriétaire ou d'utilisateur de modèle à des utilisateurs et à des comptes de service. Vous pouvez modifier le fichier de stratégie à l'aide de l'API, de gcloud
ou de la console Google Cloud.
Console
Partager un modèle avec un utilisateur ou un compte de service
Ouvrez la page "Modèles" d'AI Platform Prediction".
Cochez la case correspondant à chaque modèle à partager.
Cliquez sur le bouton Afficher le panneau d'informations dans l'angle supérieur droit pour afficher l'onglet Autorisations.
Dans le champ Ajouter des membres, ajoutez les comptes Google des utilisateurs avec lesquels partager le modèle. Par exemple, "email1@gmail.com".
Dans le menu déroulant Sélectionnez un rôle, sélectionnez le rôle à attribuer aux utilisateurs. Pour partager une ressource de modèle, sélectionnez Propriétaire de modèle ML Engine ou Utilisateur de modèle ML Engine.
Si vous ne savez pas quel rôle sélectionner, vous pouvez obtenir des informations supplémentaires sur les rôles au niveau du modèle.
Cliquez sur le bouton Ajouter à côté du menu déroulant Sélectionnez un rôle pour finaliser les sélections de rôle.
La page de la console Google Cloud s'actualise et affiche les rôles que vous avez attribués dans l'onglet Autorisations avec la liste des membres associés au rôle.
Pour arrêter de partager un modèle avec un utilisateur ou un compte de service, cliquez sur l'icône représentant une corbeille à côté de l'ID du compte.
gcloud
Changer de stratégie de modèle en modifiant directement le fichier de stratégie
Vous pouvez utiliser des fichiers JSON ou YAML avec les commandes gcloud
. Cet exemple implique un fichier JSON.
Obtenez la stratégie à modifier et écrivez-la dans un fichier JSON.
gcloud ai-platform models get-iam-policy <MODEL_NAME> --format json > iam.json
Ouvrez le fichier de stratégie (
iam.json
dans cet exemple) ou exécutezcat iam.json
pour afficher la stratégie. Dans l'exemple de stratégie suivant, le rôle de propriétaire du modèle AI Platform Prediction est attribué au compte de service afin qu'il dispose de l'accès aux prédictions en ligne.{ "bindings": [ { "role": "roles/ml.modelOwner", "members": [ "serviceAccount:my-other-app@appspot.gserviceaccount.com", "user:email1@gmail.com" ] } ], "etag": "BwVUJYGz8M4=", }
À l'aide d'un éditeur de texte, mettez à jour votre fichier
iam.json
comme suit : Ajoutez un nouvel objet au tableaubindings
qui définit les membres du groupe et le rôle de ces membres. Par exemple, pour accorder le rôleroles/ml.modelUser
à l'utilisateuremail2@gmail.com
, modifiez l'exemple ci-dessus comme suit :{ "bindings": [ { "role": "roles/ml.modelOwner", "members": [ "serviceAccount:my-other-app@appspot.gserviceaccount.com", "user:email1@gmail.com" ] }, { "role": "roles/ml.modelUser", "members": [ "user:email2@gmail.com" ] } ], "etag": "BwVUJYGz8M4=", }
Mettez à jour la stratégie du projet en exécutant la commande suivante :
gcloud ai-platform models set-iam-policy <MODEL_NAME> iam.json
La commande génère la stratégie mise à jour dans YAML :
bindings: - members: - user:email1@gmail.com - serviceAccount:otherapp@appspot.gserviceaccount.com role: roles/ml.modelOwner - members: - user:email2@gmail.com role: roles/ml.modelUser etag: BwVUJYGz8M4=
Modifier une stratégie avec des commandes de liaison de stratégie
Utilisez les commandes add-iam-policy-binding
et remove-iam-policy-binding
pour accorder, révoquer et mettre à jour les accès aux modèles.
Partager un modèle avec un utilisateur
Utilisez la commande
add-iam-policy-binding
pour ajouter un utilisateur à une stratégie de modèle AI Platform Prediction existante comme suit :gcloud ai-platform models add-iam-policy-binding <MODEL_NAME> \ --member user:email3@gmail.com --role roles/ml.modelUser
La commande génère la règle mise à jour :
bindings: - members: - user:email1@gmail.com - serviceAccount:otherapp@appspot.gserviceaccount.com role: roles/ml.modelOwner - members: - user:email2@gmail.com - user:email3@gmail.com role: roles/ml.modelUser etag: BwVUJYGz8M4=
Partager un modèle avec un service
Utilisez la commande
add-iam-policy-binding
pour ajouter un compte de service à une stratégie de modèle AI Platform Prediction existante comme suit :gcloud ai-platform models add-iam-policy-binding <MODEL_NAME> \ --member=serviceAccount:newserviceapp@appspot.gserviceaccount.com \ --role=roles/ml.modelOwner
La commande génère la règle mise à jour :
bindings: - members: - user:email1@gmail.com - serviceAccount:otherapp@appspot.gserviceaccount.com - serviceAccount:newserviceapp@appspot.gserviceaccount.com role: roles/ml.modelOwner - members: - user:email2@gmail.com - user:email3@gmail.com role: roles/ml.modelUser etag: BwVUJYGz8M4=
Arrêter de partager un modèle
Pour arrêter de partager un modèle avec un utilisateur ou un service, utilisez la commande
remove-iam-policy-binding
pour supprimer l'utilisateur ou le service d'une stratégie de modèle AI Platform Prediction existante. Dans cet exemple, nous supprimons le propriétaire du modèleemail1@gmail.com
de la stratégie de modèle.gcloud ai-platform models remove-iam-policy-binding <MODEL_NAME> \ --member=user:email1@gmail.com \ --role=roles/ml.modelOwner
La commande génère la règle mise à jour :
bindings: - members: - serviceAccount:otherapp@appspot.gserviceaccount.com - serviceAccount:newserviceapp@appspot.gserviceaccount.com role: roles/ml.modelOwner - members: - user:email2@gmail.com - user:email3@gmail.com role: roles/ml.modelUser etag: BwVUJYGz8M4=
API REST
Modifier la stratégie via l'API JSON
Obtenez la stratégie existante en envoyant la requête suivante :
GET https://ml.googleapis.com/v1/projects/<project>/models/<model>:getIamPolicy
La commande renvoie la stratégie actuelle dans la réponse :
{ "bindings": [ { "role": "roles/ml.modelOwner", "members": [ "serviceAccount:my-other-app@appspot.gserviceaccount.com", "user:email1@gmail.com" ] } ] }
Une fois la stratégie modifiée, mettez-la à jour en envoyant la requête suivante :
POST https://ml.googleapis.com/v1/projects/<project>/models/<model>:setIamPolicy
La commande renvoie la stratégie mise à jour dans la réponse. Dans cet exemple, nous avons ajouté l'utilisateur
email2@gmail.com
en tant qu'utilisateur du modèle :{ "policy": { "bindings": [ { "role": "roles/ml.modelOwner", "members": [ "serviceAccount:my-other-app@appspot.gserviceaccount.com", "user:email1@gmail.com" ] }, { "role": "roles/ml.modelUser", "members": [ "user:email2@gmail.com" ] } ] } }
Pour obtenir un jeton d'accès :
gcloud auth print-access-token
Lors de l'appel de l'API, transmettez la valeur du jeton en tant que jeton de support dans un en-tête d'autorisation :
curl -s -H 'Authorization: Bearer <ACCESS_TOKEN>' \ https://ml.googleapis.com/v1/projects/<project>/models/<model>:getIamPolicy