Configura cuentas de servicio de App Engine

Las aplicaciones de App Engine requieren una cuenta de servicio para acceder a otros servicios de Google Cloud y ejecutar tareas.

Existen dos tipos de cuentas de servicio en App Engine y se puede asignar cualquier cuenta de servicio en tu proyecto de Cloud para que actúe como la cuenta de servicio predeterminada a nivel de app o por versión:

  • Cuenta de servicio predeterminada a nivel de la app: Esta cuenta de servicio se usa para todos los servicios implementados cuando no configuras una "cuenta de servicio por versión". Puedes asignar la cuenta de servicio que creaste o usar la cuenta de servicio predeterminada creada de forma automática que se crea cuando implementas inicialmente un servicio en el proyecto de Cloud. Por ejemplo, la cuenta de servicio predeterminada de App Engine (PROJECT_ID@appspot.gserviceaccount.com).

  • Cuenta de servicio por versión: una cuenta de servicio configurada como la identidad de una versión específica del servicio implementado. Cuando implementas una versión existente o una nueva, puedes especificar una cuenta de servicio para que actúe como la identidad de esa versión. Por ejemplo, si una versión requiere permisos que difieren de la cuenta de servicio predeterminada a nivel de la app, puedes asignar una cuenta de servicio específica para esa versión.

Visualiza las cuentas de servicio configuradas

Para ver la cuenta de servicio predeterminada a nivel de la app actual, ejecuta el comando gcloud app describe.

Para ver la cuenta de servicio que usa una versión implementada, haz lo siguiente:

gcloud

Ejecuta el comando gcloud app versions describe:

  gcloud app versions describe VERSION_ID --service=SERVICE_NAME

Reemplaza lo siguiente:

  • VERSION_ID por el ID de la versión.
  • SERVICE_NAME por el nombre del servicio que creaste.

Console

  1. Ve a la pestaña Versiones de App Engine en la consola. Ir a Versiones
  2. Busca la dirección de correo electrónico de la cuenta de servicio específica de la versión de App Engine. Ejemplo: SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com

Asigna una cuenta de servicio predeterminada a nivel de la app

De forma predeterminada, la cuenta de servicio predeterminada a nivel de la app es la cuenta de servicio PROJECT_ID@appspot.gserviceaccount.com creada de forma automática. Puedes asignar otra cuenta de servicio para que actúe como la cuenta de servicio predeterminada a nivel de la app mediante Google Cloud CLI, la consola de Google Cloud o la API de Admin.

Especifica una cuenta de servicio predeterminada a nivel de la app durante la creación de la app

Durante el proceso inicial de creación de la aplicación de App Engine, puedes elegir asignar una cuenta de servicio que creaste o usar la cuenta de servicio PROJECT_ID@appspot.gserviceaccount.com creada de forma automática para que actúe como predeterminada.

Para crear una aplicación de App Engine y asignar una cuenta de servicio predeterminada a nivel de la app, puedes usar una de las siguientes opciones:

gcloud

Ejecuta el comando gcloud app create:

gcloud app create --service-account=SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com

Reemplaza lo siguiente:

  • SERVICE_ACCOUNT_NAME por el nombre de la cuenta de servicio que creaste.
  • PROJECT_ID por el ID del proyecto de Google Cloud en el que deseas asignar la cuenta de servicio.

Console

  1. Ve a la página App Engine:

    Ir a App Engine

  2. Crea un proyecto de Google Cloud.

  3. En la sección Create App, selecciona una cuenta de servicio en Identidad y acceso a la API.

Actualiza la cuenta de servicio predeterminada a nivel de la app

A fin de actualizar la cuenta de servicio predeterminada a nivel de la app para tu aplicación, puedes usar una de las siguientes opciones a fin de asignar una cuenta de servicio nueva:

gcloud

Ejecuta el comando gcloud app update.

    gcloud app update --service-account=SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com

Reemplaza lo siguiente:

  • SERVICE_ACCOUNT_NAME por el nombre de la cuenta de servicio que creaste.
  • PROJECT_ID por el ID del proyecto de Google Cloud en el que deseas asignar la cuenta de servicio.

Cada versión nueva que implementes de ahora en adelante usa la cuenta de servicio predeterminada a nivel de la aplicación nueva, a menos que asignes una cuenta de servicio específica de la versión de forma explícita.

Console

  1. Ve a la pestaña Configuración de la aplicación de App Engine en la consola y haz clic en Editar configuración de la aplicación.

    Ir a Configuración de la aplicación

  2. Elige una cuenta de servicio predeterminada a nivel de app desde Seleccionar una cuenta de servicio y haz clic en Guardar.

    Se te redireccionará a la pestaña Configuración de la aplicación, en la que puedes ver la dirección de correo electrónico de tu cuenta de servicio predeterminada actualizada a nivel de la aplicación. Ejemplo: SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com.

    Cada versión nueva que implementes de ahora en adelante usa la cuenta de servicio predeterminada a nivel de la aplicación nueva, a menos que asignes una cuenta de servicio específica de la versión de forma explícita.

Implementa con una cuenta de servicio específica de la versión

Solo puedes establecer una cuenta de servicio específica de la versión durante la implementación de versiones nuevas. El uso de una cuenta de servicio específica de la versión te permite otorgar privilegios diferentes a cada versión de la aplicación, según las tareas específicas que realiza y evitar otorgar más privilegios de los necesarios.

Debes tener una cuenta de servicio existente antes de implementar tu aplicación. Tu cuenta de servicio específica de la versión debe estar en el mismo proyecto en el que implementas tu aplicación.

Configura una cuenta de servicio específica de la versión

gcloud

Ejecuta el comando gcloud app deploy:

  gcloud app deploy --service-account=SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com

Reemplaza lo siguiente:

  • SERVICE_ACCOUNT_NAME por el nombre de la cuenta de servicio que creaste.
  • PROJECT_ID por el ID del proyecto de Google Cloud en el que deseas asignar la cuenta de servicio. Tu cuenta de servicio específica de la versión debe estar en el mismo proyecto en el que implementas la aplicación.

app.yaml

En el archivo app.yaml, especifica tu cuenta de servicio; para ello, agrega el elemento service_account:

service_account: SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com

Reemplaza lo siguiente:

  • SERVICE_ACCOUNT_NAME por el nombre de la cuenta de servicio que creaste.
  • PROJECT_ID por el ID del proyecto de Google Cloud en el que deseas asignar la cuenta de servicio. Tu cuenta de servicio específica de la versión debe estar en el mismo proyecto en el que implementas la aplicación.

Cuenta de servicio predeterminada de App Engine

La cuenta de servicio predeterminada de App Engine se crea automáticamente cuando usas App Engine.

Según la configuración de la política de la organización, es posible que a la cuenta de servicio predeterminada se le otorgue automáticamente el rol de editor en tu proyecto. Te recomendamos inhabilitar la concesión automática de roles; para ello, aplica la restricción de la política de la organización iam.automaticIamGrantsForDefaultServiceAccounts. Si creaste tu organización después del 3 de mayo de 2024, esta restricción se aplica de forma predeterminada.

Si inhabilitas la concesión automática de roles, debes decidir qué roles se deben otorgar a las cuentas de servicio predeterminadas y, luego, otorgar estos roles a ti mismo.

Si la cuenta de servicio predeterminada ya tiene el rol de editor, te recomendamos que reemplaces el rol de editor por roles menos permisivos. Para modificar de forma segura los roles de la cuenta de servicio, usa Policy Simulator para ver el impacto del cambio y, luego, otorga y revoca los roles adecuados.

Para aprender a otorgar roles a las cuentas de servicio y otras principales, consulta Administra el acceso a los proyectos, las carpetas y las organizaciones.

Para modificar permisos, borrar y restablecer tus cuentas de servicio, consulta Crea y administra cuentas de servicio.