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 da 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
- Entrena tu modelo de aprendizaje automático.
- Implementa tu modelo en AI Platform Prediction.
Funciones de modelos
Las funciones de propietario y de usuario del modelo de AI Platform Prediction otorgan distintos permisos a un recurso de 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 |
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 |
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. |
Otorga acceso a un modelo a individuos y cuentas de servicio
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 la política mediante la API, gcloud
o la consola de Google Cloud.
Console
Comparte un modelo con un usuario o cuenta de servicio
Abre la página Modelos de AI Platform Prediction.
Selecciona la casilla de verificación de cada modelo que quieres compartir.
Haz clic en el botón Mostrar el panel de información en la esquina superior derecha para mostrar la pestaña Permisos.
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".
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 en funciones del modelo.
Haz clic en el botón Agregar junto al campo desplegable Seleccionar una función para terminar de seleccionar las funciones.
En la página de la consola de Google Cloud, 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 usuario, haz clic en el ícono de papelera junto al ID de 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.
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
Abre el archivo de la política (
iam.json
en este ejemplo) o ejecutacat 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=", }
Con un editor de texto, actualiza tu archivo
iam.json
como se indica a continuación. Agrega un objeto nuevo al arreglobindings
que define los miembros del grupo y la función de cada uno de esos miembros. Por ejemplo, para otorgar la funciónroles/ml.modelUser
al usuarioemail2@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=", }
Actualiza la política del proyecto mediante la ejecución del siguiente comando:
gcloud ai-platform models set-iam-policy <MODEL_NAME> iam.json
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
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
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
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 modeloemail1@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
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" ] } ] }
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" ] } ] } }
Para obtener un token de acceso, ejecuta este comando:
gcloud auth print-access-token
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