Partager des modèles

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

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

roles/ml.modelOwner

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

roles/ml.modelUser

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

  1. Ouvrez la page "Modèles" d'AI Platform Prediction".

    Page "Modèles" d'AI Platform Prediction

  2. Cochez la case correspondant à chaque modèle à partager.

  3. Cliquez sur le bouton Afficher le panneau d'informations dans l'angle supérieur droit pour afficher l'onglet Autorisations.

  4. Dans le champ Ajouter des membres, ajoutez les comptes Google des utilisateurs avec lesquels partager le modèle. Par exemple, "email1@gmail.com".

  5. 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.

  6. Cliquez sur le bouton Ajouter à côté du menu déroulant Sélectionnez un rôle pour finaliser les sélections de rôle.

  7. 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.

  1. 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
    
  2. Ouvrez le fichier de stratégie (iam.json dans cet exemple) ou exécutez cat 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=",
     }
    
  3. À l'aide d'un éditeur de texte, mettez à jour votre fichier iam.json comme suit : Ajoutez un nouvel objet au tableau bindings qui définit les membres du groupe et le rôle de ces membres. Par exemple, pour accorder le rôle roles/ml.modelUser à l'utilisateur email2@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=",
     }
    
  4. Mettez à jour la stratégie du projet en exécutant la commande suivante :

    gcloud ai-platform models set-iam-policy <MODEL_NAME> iam.json
    
  5. 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

  1. 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

  1. 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

  1. 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èle email1@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

  1. 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"
              ]
          }
          ]
       }
    
  2. 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"
                   ]
               }
               ]
           }
        }
    
  1. Pour obtenir un jeton d'accès :

    gcloud auth print-access-token
    
  2. 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