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
- Ve a la pestaña Versiones de App Engine en la consola. Ir a Versiones
- 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
Ve a la página App Engine:
Crea un proyecto de Google Cloud.
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
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.
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.
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.
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.
appengine-web.xml
Si usas los entornos de ejecución de Java y, además, incluyes los servicios en paquetes heredados de App Engine, especifica tu cuenta de servicio mediante el agregado de <service-account>
en tu archivo appengine-web.xml
:
<service-account>SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com</service-account>
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.
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.