Cómo compartir modelos

Cloud Machine Learning Engine 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, grupo o cuenta de servicio. Para compartir un modelo, otorga una función que da acceso a tu modelo y sus versiones.

Esta guía se centra en dos funciones de Cloud ML Engine predefinidas que se pueden usar para otorgar acceso a los recursos del modelo:

  • Propietario del modelo de Cloud ML Engine
  • Usuario del modelo de Cloud ML Engine

Para obtener detalles sobre otras funciones, consulta la explicación completa de todas las funciones de IAM disponibles para su uso con Cloud ML Engine.

Antes de comenzar

Funciones del modelo

Las funciones Propietario y Usuario del modelo de Cloud ML Engine otorgan diferentes permisos a un recurso de modelo determinado.

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 Funciones
Propietario del modelo de Cloud ML Engine

roles/ml.modelOwner

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 Cloud ML Engine

roles/ml.modelUser

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

Cómo compartir modelos

Este ejemplo 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 políticas con la API, gcloud, o GCP Console.

Console

Comparte un modelo con una cuenta de servicio o usuario

  1. Abre la página de modelos de Cloud ML Engine.

    Abrir la página de modelos de Cloud ML Engine

  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 izquierda 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 para 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 en funciones del modelo.

  6. Haz clic en el botón Agregar junto al campo desplegable Seleccionar una función para finalizar tus selecciones de funciones.

  7. La página de GCP Console actualiza y muestra las funciones que asignaste en la pestaña Permisos con una lista de miembros asociados con la función.

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

gcloud

Cómo modificar la política de un modelo mediante la edición directa del archivo de políticas

Puedes usar los archivos JSON o YAML con los comandos de gcloud. Este ejemplo usa JSON.

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

    gcloud ml-engine models get-iam-policy <MODEL_NAME> --format json > iam.json
    
  2. Abre el archivo de políticas (iam.json, en este ejemplo), o ejecuta cat iam.json para ver la política. En la política de ejemplo a continuación, la cuenta de servicio se asigna a la función de Propietario del modelo de Cloud ML Engine 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 de la siguiente manera. Agrega un objeto nuevo al arreglo de bindings que defina los miembros del grupo y la función para esos miembros. Por ejemplo, para otorgar la función roles/ml.modelUser al usuario email2@gmail.com, modifica el ejemplo que se muestra arriba de la siguiente manera:

     {
        "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 objeto con el siguiente comando:

    gcloud ml-engine 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=
    

Cómo modificar una política con comandos de vinculación de política

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 una política de modelo de Cloud ML Engine existente de la siguiente manera:

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

    El comando muestra 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 una política de modelo de Cloud ML Engine existente de la siguiente manera:

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

    El comando muestra 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. Para dejar de compartir un modelo con un usuario o servicio, usa el comando remove-iam-policy-binding para quitar el usuario o servicio de una política de modelo de Cloud ML Engine existente. En este ejemplo, quitamos al Propietario del modelo email1@gmail.com de la política de modelo.

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

    El comando muestra 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

Cómo modificar una política a través de la API de JSON

  1. Obtén la política existente mediante el envío de 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 modificaste la política, actualízala mediante el envío de 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, hemos agregado el 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:

    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
    

Pasos siguientes

¿Te sirvió esta página? Envíanos tu opinión:

Enviar comentarios sobre…

Cloud ML Engine para TensorFlow