Comparte modelos

AI Platform Prediction usa la administración de identidades y accesos (IAM) para administrar el acceso a los recursos. Para otorgar acceso a un recurso, asigna una o más funciones a un usuario, un grupo o una cuenta de servicio. Para compartir un modelo, otorga una función que proporcione acceso a tu modelo y sus versiones.

Esta guía se centra en dos funciones predefinidas de AI Platform Prediction que se pueden usar para otorgar acceso a los recursos de un modelo:

  • Propietario del modelo de AI Platform Prediction
  • Usuario del modelo de AI Platform Prediction

Si deseas obtener información sobre otras funciones, consulta la explicación completa de todas las funciones de IAM disponibles para usar con AI Platform Prediction.

Antes de comenzar

Funciones de modelos

Las funciones de propietario y usuario del modelo de AI Platform Prediction otorgan distintos permisos a un recurso de un modelo específico.

Puedes compartir los modelos con personas o servicios si les otorgas la función de usuario del modelo.

Título de la función Nombre de la función Capacidades
Propietario del modelo de AI Platform Prediction

roles/ml.modelOwner

Proporciona acceso total al modelo y sus versiones. Esta función se otorga de forma automática al usuario que crea el modelo.

Usuario del modelo de AI Platform Prediction

roles/ml.modelUser

Proporciona permisos para leer el modelo y sus versiones, y usarlos para la predicción. Si otorgas esta función, será más fácil compartir modelos específicos.

Otorga acceso a un modelo a individuos y cuentas de servicio

En este ejemplo, se muestra cómo editar una política de IAM para un modelo determinado si otorgas las funciones de usuario o propietario del modelo a cuentas de servicio o personas. Puedes editar el archivo de la política mediante la API, gcloud o Cloud Console.

Console

Comparte un modelo con un usuario o cuenta de servicio

  1. Abre la página Modelos de AI Platform Prediction.

    Abrir la página Modelos de AI Platform Prediction

  2. Selecciona la casilla de verificación de cada modelo que quieres compartir.

  3. Haz clic en el botón Mostrar el panel de información en la esquina superior derecha para mostrar la pestaña Permisos.

  4. En el campo Agregar miembros, agrega las Cuentas de Google de los usuarios con los que deseas compartir el modelo. Por ejemplo, "email1@gmail.com".

  5. En el campo desplegable Seleccionar una función, selecciona la función que deseas agregar a los usuarios. Para compartir un recurso del modelo, selecciona Propietario del modelo de ML Engine o Usuario del modelo de ML Engine.

    Si no estás seguro de qué función seleccionar, consulta más detalles sobre las funciones del modelo.

  6. Haz clic en el botón Agregar junto al campo desplegable Seleccionar una función para terminar de seleccionar las funciones.

  7. En la página de Cloud Console, se actualizan las funciones que asignaste y se muestran en la pestaña Permisos junto con una lista de los miembros asociados con cada función.

Para dejar de compartir un modelo con una cuenta de servicio o un usuario, haz clic en el ícono de papelera junto al ID de la cuenta.

gcloud

Modifica la política de un modelo mediante la edición directa del archivo de políticas

Puedes usar archivos JSON o YAML con los comandos de gcloud. En este ejemplo, se usa JSON.

  1. Obtén la política que quieres modificar y escríbela en un archivo JSON.

    gcloud ai-platform models get-iam-policy <MODEL_NAME> --format json > iam.json
    
  2. Abre el archivo de la política (iam.json en este ejemplo) o ejecuta cat iam.json para ver la política. En la siguiente política de ejemplo, a la cuenta de servicio se le asigna la función de propietario del modelo de AI Platform Prediction para que tenga acceso a la predicción en línea.

     {
        "bindings": [
        {
            "role": "roles/ml.modelOwner",
            "members": [
                "serviceAccount:my-other-app@appspot.gserviceaccount.com",
                "user:email1@gmail.com"
            ]
        }
        ],
        "etag": "BwVUJYGz8M4=",
     }
    
  3. Con un editor de texto, actualiza tu archivo iam.json como se indica a continuación. Agrega un objeto nuevo al arreglo bindings que define los miembros del grupo y la función de cada uno de esos miembros. Por ejemplo, para otorgar la función roles/ml.modelUser al usuario email2@gmail.com, cambia el ejemplo que se muestra arriba de esta forma:

     {
        "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. Actualiza la política del proyecto mediante la ejecución del siguiente comando:

    gcloud ai-platform models set-iam-policy <MODEL_NAME> iam.json
    
  5. El comando muestra la política actualizada en 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=
    

Modifica una política mediante comandos de vinculación de políticas

Usa los comandos add-iam-policy-binding y remove-iam-policy-binding para otorgar, revocar y actualizar el acceso a los modelos.

Comparte un modelo con un usuario

  1. Usa el comando add-iam-policy-binding para agregar un usuario a la política de un modelo de AI Platform Prediction existente de la siguiente manera:

    gcloud ai-platform models add-iam-policy-binding <MODEL_NAME> \
        --member user:email3@gmail.com --role roles/ml.modelUser
    

    El comando genera la política actualizada:

        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=
    

Comparte un modelo con un servicio

  1. Usa el comando add-iam-policy-binding para agregar una cuenta de servicio a la política de un modelo de AI Platform Prediction existente de la siguiente manera:

    gcloud ai-platform models add-iam-policy-binding <MODEL_NAME> \
        --member=serviceAccount:newserviceapp@appspot.gserviceaccount.com \
        --role=roles/ml.modelOwner
    

    El comando genera la política actualizada:

      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=
    

Deja de compartir un modelo

  1. Si deseas dejar de compartir un modelo con un usuario o un servicio, usa el comando remove-iam-policy-binding para quitar al usuario o al servicio de la política de un modelo de AI Platform Prediction existente. En este ejemplo, quitamos al propietario del modelo email1@gmail.com de la política del modelo.

    gcloud ai-platform models remove-iam-policy-binding <MODEL_NAME> \
          --member=user:email1@gmail.com \
          --role=roles/ml.modelOwner
    

    El comando genera la política actualizada:

      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 de REST

Modifica la política con la API de JSON

  1. Obtén la política existente mediante la siguiente solicitud:

    GET https://ml.googleapis.com/v1/projects/<project>/models/<model>:getIamPolicy
    

    El comando muestra la política actual en la respuesta:

       {
          "bindings": [
          {
              "role": "roles/ml.modelOwner",
              "members": [
                  "serviceAccount:my-other-app@appspot.gserviceaccount.com",
                  "user:email1@gmail.com"
              ]
          }
          ]
       }
    
  2. Una vez que hayas modificado la política, actualízala mediante la siguiente solicitud:

    POST https://ml.googleapis.com/v1/projects/<project>/models/<model>:setIamPolicy
    

    El comando muestra la política actualizada en la respuesta. En este ejemplo, agregamos al usuario email2@gmail.com como usuario del modelo:

        {
           "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. Para obtener un token de acceso, ejecuta este comando:

    gcloud auth print-access-token
    
  2. Cuando llames a la API, pasa el valor del token como un token del portador en un encabezado de Autorización:

    curl -s -H 'Authorization: Bearer <ACCESS_TOKEN>' \
        https://ml.googleapis.com/v1/projects/<project>/models/<model>:getIamPolicy