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 la cuenta de servicio administrada por Google

De forma predeterminada, AI Platform Prediction usa una cuenta de servicio administrada por Google para entregar predicciones en línea de versiones de modelos que no usan contenedores personalizados. Esta cuenta 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.

Busca la cuenta de servicio correspondiente para tu proyecto en Google Cloud Console o mediante la herramienta de línea de comandos de gcloud:

Cloud Console

Ve a la página IAM en Cloud Console y busca al miembro que coincida con el formato de 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 un entorno de shell en el que inicializaste la herramienta 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 de la cuenta de servicio de AI Platform de tu proyecto administrada por Google.

Esta cuenta de servicio administrada por Google 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 la cuenta de servicio administrada por Google 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 de la cuenta de servicio administrada por Google.

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 que tus versiones del modelo, configura la cuenta de servicio administrada por el usuario para que puedas adjuntarla a tu versiones del modelo.

  4. Otorga a la cuenta de servicio de AI Platform administrada por Google la función de administrador de cuenta de servicio (roles/iam.serviceAccountAdmin) para tu cuenta de servicio personalizada nueva. Para hacerlo, usa la herramienta 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 herramienta 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?