Usa una cuenta de servicio personalizada

Puedes configurar AI Platform Prediction a fin de que use una cuenta de servicio de tu elección cuando ejecute código personalizado para entregar predicciones. Específicamente, puedes especificar una cuenta de servicio personalizada cuando realizas una de las siguientes acciones:

Usar una cuenta de servicio personalizada te permite personalizar a qué recursos de Google Cloud puede acceder tu código de entrega personalizado sin otorgar permisos demasiado amplios a la cuenta de servicio que usa AI Platform Prediction de forma predeterminada.

En esta guía, se analizan los permisos de los recursos de AI Platform Prediction para acceder a otros recursos de Google Cloud. Si quieres obtener más información sobre los permisos que necesitas para acceder a los recursos de AI Platform Prediction, consulta Control de acceso.

Información sobre el agente de servicio

De forma predeterminada, AI Platform Prediction usa un agente de servicio para entregar predicciones en línea de versiones de modelos que no usan contenedores personalizados. Este agente de servicio se identifica con una dirección de correo electrónico que tiene el siguiente formato:

service-PROJECT_NUMBER@cloud-ml.google.com.iam.gserviceaccount.com

PROJECT_NUMBER se reemplaza por el número de proyecto de tu proyecto de Google Cloud.

Encuentra la cuenta de servicio correspondiente para tu proyecto en la consola de Google Cloud o mediante Google Cloud CLI:

Consola de Google Cloud

Ve a la página IAM en la consola de Google Cloud, selecciona Incluir asignaciones de roles proporcionados por Google y busca la principal que coincide con la dirección de correo electrónico que se describió antes en esta sección. La cuenta de servicio también tiene el nombre Google Cloud ML Engine Service Agent.

Ir a la página IAM

gcloud

Ejecuta el siguiente comando en el entorno de shell en el que inicializaste la CLI de gcloud:

gcloud projects get-iam-policy PROJECT_ID \
  --flatten="bindings[].members" \
  --format="table(bindings.members)" \
  --filter="bindings.role:roles/ml.serviceAgent" \
  | grep serviceAccount:

Reemplaza PROJECT_ID por el ID del proyecto de Google Cloud.

Con este comando se genera lo siguiente:

serviceAccount:GOOGLE_MANAGED_SERVICE_ACCOUNT

GOOGLE_MANAGED_SERVICE_ACCOUNT es la dirección de correo electrónico del agente de servicio de AI Platform de tu proyecto.

Este agente de servicio tiene permisos adecuados para la mayoría de las versiones del modelo. Por ejemplo, puede leer datos de depósitos de Cloud Storage en el mismo proyecto de Google Cloud.

Si necesitas que tus rutinas de predicción personalizadas se ejecuten con permisos adicionales, puedes asignar funciones adicionales de Identity and Access Management (IAM) a esta cuenta de servicio. Por ejemplo, puedes otorgarle acceso a los depósitos de Cloud Storage en otros proyectos de Google Cloud.

Cuenta de servicio que se usa de forma predeterminada en contenedores personalizados

Si tu versión del modelo usa un contenedor personalizado, de forma predeterminada, el contenedor no se ejecuta con el agente de servicio de AI Platform. En su lugar, se ejecuta con una cuenta de servicio administrada por AI Platform Prediction. Esta cuenta de servicio tiene permiso para leer artefactos de modelo que AI Platform Prediction pone a disposición en un URI almacenado en la variable de entorno AIP_STORAGE_URI.

No puedes personalizar los permisos de esta cuenta de servicio que se usa de forma predeterminada en contenedores personalizados. Si deseas personalizar los permisos disponibles para tu contenedor personalizado, lee las secciones siguientes para usar una cuenta de servicio personalizada con tu versión del modelo.

Usa una cuenta de servicio personalizada

Si deseas otorgar o limitar los permisos de Google Cloud para una versión del modelo específica, usa una cuenta de servicio personalizada en lugar del agente de servicio.

Para ello, primero configura una cuenta de servicio personalizada. Luego, especifica la cuenta de servicio personalizada cuando crees una versión del modelo.

Configura una cuenta de servicio personalizada

Para configurar una cuenta de servicio personalizada, haz lo siguiente:

  1. Crea una cuenta de servicio administrada por el usuario.

  2. Otorga tus funciones de IAM nuevas a la cuenta de servicio para proporcionar tu código de entrega de predicciones cualquier permiso que necesite cuando se ejecuta.

  3. Si la cuenta de servicio administrada por el usuario está en un proyecto diferente al de tus versiones de modelo, configura la cuenta de servicio administrada por el usuario para que puedas adjuntarla a tus versiones de modelo.

  1. Otorga al agente de servicio de AI Platform de tu proyecto el rol de administrador de cuenta de servicio (roles/iam.serviceAccountAdmin) para tu cuenta de servicio personalizada nueva. Para hacerlo, usa la CLI de gcloud a fin de ejecutar el siguiente comando:

    gcloud iam service-accounts add-iam-policy-binding \
      --role=roles/iam.serviceAccountAdmin \
      --member=serviceAccount:GOOGLE_MANAGED_SERVICE_ACCOUNT \
      CUSTOM_SERVICE_ACCOUNT
    

    En este comando, reemplaza los siguientes marcadores de posición:

    • GOOGLE_MANAGED_SERVICE_ACCOUNT: Es la dirección de correo electrónico del Google Cloud ML Engine Service Agent de tu proyecto. Obtén información sobre cómo encontrar esta dirección de correo electrónico en una sección anterior de esta guía.

    • CUSTOM_SERVICE_ACCOUNT: Es la dirección de correo electrónico de la cuenta de servicio administrada por el usuario nueva que acabas de crear en un paso anterior de esta sección.

Especifica la cuenta de servicio personalizada para tu versión de modelo

Para otorgar a tu código de entrega de predicción acceso a una cuenta de servicio personalizada, especifica el campo serviceAccount cuando crees una versión del modelo. Recuerda que la versión del modelo debe usar un contenedor personalizado o una rutina de predicción personalizada.

Si usas la CLI de gcloud para crear una versión del modelo, puedes usar la marca --service-account con el componente gcloud beta. Por ejemplo:

gcloud beta ai-platform versions create VERSION \
  --service-account CUSTOM_SERVICE_ACCOUNT \
  ...

Reemplaza lo siguiente:

¿Qué sigue?