El control de acceso determina quién tiene permiso para acceder a los servicios y recursos de un Google Cloud proyecto. En App Engine, hay varios casos prácticos independientes para configurar el control de acceso:
Conceder acceso a los miembros del equipo a tu proyecto de Google Cloud para que puedan configurar servicios e implementar aplicaciones.
Conceder acceso a tu aplicación a servicios de Google Cloud, como Cloud Storage. Todos los servicios de Cloud requieren autenticación y autorización para cada llamada a la API, incluidas las llamadas de tu aplicación de App Engine.
Conceder acceso a los recursos de un Google Cloud proyecto a los usuarios. Aunque este caso práctico no es habitual, puede haber situaciones en las que tu aplicación necesite solicitar acceso a un recurso de Cloud en nombre de un usuario. Por ejemplo, es posible que tu aplicación necesite acceder a datos que pertenecen a tus usuarios.
En esta página se ofrece una descripción general de cómo configurar el control de acceso en cada caso práctico.
Para obtener información general sobre cómo gestiona Google Cloud Platform el control de acceso, consulta la descripción general de Gestión de Identidades y Accesos (IAM).
Conceder acceso a los miembros del equipo
Para dar acceso a un desarrollador a tu Google Cloud proyecto, crea uno o ambos de los siguientes elementos:
Una cuenta de usuario, que está asociada a una cuenta de Google y representa a una persona concreta en tu proyecto.
Una cuenta de usuario se puede usar para autenticarte en las siguientes herramientas:
- Google Cloud consola
- Google Cloud CLI
- IDEs y herramientas de compilación que usan gcloud CLI para probar y desplegar aplicaciones de App Engine
Una cuenta de servicio, que representa una aplicación o un proceso en lugar de a una persona. Usa cuentas de servicio en tus procesos automatizados de compilación, prueba y despliegue, sobre todo si varios desarrolladores pueden ejecutar estos procesos.
Una cuenta de servicio se puede usar para autenticarte desde las siguientes herramientas:
- CLI de gcloud
- IDEs y herramientas de compilación que usan las herramientas de gcloud CLI para probar y desplegar aplicaciones de App Engine
Crear una cuenta de usuario
Abre la página de IAM en la Google Cloud consola.
Haz clic en Seleccionar un proyecto, elige un proyecto y haz clic en Abrir.
Haz clic en Añadir.
Introduce una dirección de correo electrónico.
Selecciona los roles que conceden acceso a las funciones de App Engine.
Si el usuario también necesita acceder a otros servicios de Cloud, selecciona roles que le permitan acceder a otros servicios de Cloud.
Haz clic en Guardar.
Ahora el usuario puede iniciar sesión en la consola de Google Cloud y autorizar la CLI de gcloud.
También puedes crear cuentas de usuario desde gcloud, la API REST o bibliotecas de cliente.
Creando una cuenta de servicio
Abre la página Cuentas de servicio en la consola de Google Cloud .
Selecciona el proyecto y haz clic en Abrir.
Haz clic en Create Service Account (Crear cuenta de servicio).
Introduce un nombre de cuenta de servicio. Debe ser un nombre fácil de usar para mostrar.
Haz clic en Crear.
Selecciona los roles que conceden acceso a las funciones de App Engine.
Si la cuenta de servicio también necesita acceder a otros servicios de Cloud, selecciona los roles que le concedan acceso a otros servicios de Cloud.
Haz clic en Continuar.
Opcionalmente, especifica las cuentas de usuario que pueden gestionar la cuenta de servicio. También puedes especificar las cuentas de usuario que pueden usar la cuenta de servicio para acceder indirectamente a todos los recursos a los que tiene acceso la cuenta de servicio.
Haz clic en Guardar.
Se muestra una lista de las cuentas de servicio disponibles.
Si necesitas usar tu cuenta de servicio fuera deGoogle Cloud, sigue las instrucciones para crear una clave de cuenta de servicio.
Pasos siguientes
- Si vas a usar la cuenta de servicio en tus procesos automatizados de compilación y despliegue, autoriza la CLI de gcloud con una cuenta de servicio.
- Si utilizas la cuenta de servicio con un IDE, sigue las instrucciones que te proporcione el IDE.
- Si necesitas usar una identidad única para una versión de tu aplicación de App Engine al acceder a otros servicios o ejecutar tareas, puedes especificar una cuenta de servicio gestionada por el usuario en App Engine. Google Cloud
Conceder acceso a los servicios de Cloud a tu aplicación
Cada llamada a un servicio de Cloud debe autenticarse y autorizarse, incluidas las llamadas de una aplicación de App Engine a otros servicios de Cloud, como Cloud Storage.
De forma predeterminada, las llamadas de tu aplicación de App Engine a los servicios del mismo proyecto están autorizadas. Así funciona el flujo predeterminado:
Para iniciar llamadas a un servicio de Cloud, tu aplicación crea un objeto cliente, que contiene las credenciales y otros datos que necesita tu aplicación para interactuar con el servicio. Si no especificas las credenciales en el constructor del cliente, el cliente buscará las credenciales en el entorno de la aplicación.
A continuación, se muestra un ejemplo de cómo crear un cliente para Cloud Storage:
Go
Java
Node.js
PHP
Python
Ruby
- De forma predeterminada, el entorno de la aplicación contiene credenciales de la cuenta de servicio predeterminada de App Engine.
Google crea esta cuenta de servicio cuando creas una aplicación de App Engine y le otorga permisos completos para gestionar y usar todos los servicios de Cloud en un Google Cloud proyecto.
Puedes anular este flujo predeterminado de cualquiera de las siguientes formas:
Define la variable de entorno
GOOGLE_APPLICATION_CREDENTIALS
. Si se define esta variable, los servicios de Cloud usarán las credenciales especificadas en la variable en lugar de la cuenta de servicio predeterminada.Especifica las credenciales al crear una instancia del objeto
Client
para un servicio de Cloud. Por ejemplo, si tu aplicación llama a un servicio de Cloud en otro proyecto, es posible que tengas que transferir las credenciales manualmente.
- Almacena tus credenciales en una ubicación segura, como Firestore en el modo de Datastore (Datastore), y recupéralas en el tiempo de ejecución.
- Mantén las credenciales en tu código, pero encripta las con un almacén de claves, como Cloud KMS.
Para obtener información sobre las ventajas de cada enfoque, consulta el artículo Elegir una solución de gestión de secretos.
Conceder acceso a los recursos de Cloud a los usuarios
Si quieres que tu aplicación lea datos de usuario de otro servicio de Google, tendrás que configurar OAuth 2.0 para aplicaciones de servidor web. Por ejemplo, si quieres extraer los datos de un usuario de Google Drive e incorporarlos a tu aplicación, usa OAuth 2.0 para aplicaciones de servidor web para compartir datos específicos y, al mismo tiempo, mantener privados otros datos, como nombres de usuario y contraseñas.
Delegación de autoridad en todo el dominio de Google Workspace
Si tienes un dominio de Google Workspace (anteriormente llamado G Suite), un administrador del dominio puede autorizar a una aplicación para que acceda a los datos de los usuarios en nombre de los usuarios del dominio de Google Workspace. Por ejemplo, una aplicación que utilice la API de Google Calendar para añadir eventos a los calendarios de todos los usuarios de un dominio de Google Workspace usaría una cuenta de servicio para acceder a la API de Google Calendar en nombre de los usuarios.
A veces, se denomina "delegar autoridad en todo el dominio" a una cuenta de servicio cuando se autoriza a esta cuenta para que acceda a datos en nombre de los usuarios de un dominio. Este método sigue usando OAuth 2.0 y requiere que un administrador del dominio de Google Workspace autorice a la cuenta de servicio para que tenga autoridad sobre todo el dominio.
Especificar una cuenta de servicio
App Engine te permite usar dos tipos de cuentas de servicio:
- Cuenta de servicio por versión: cuenta de servicio configurada como identidad de una versión específica de tu servicio implementado. Al desplegar una versión nueva o una ya creada, puedes especificar una cuenta de servicio que actúe como identidad de esa versión. Por ejemplo, si una versión requiere permisos diferentes a los de la cuenta de servicio predeterminada a nivel de aplicación, puedes asignarle una cuenta de servicio específica para esa versión. Para obtener más información, consulta Configurar cuentas de servicio de App Engine.
Cuenta de servicio predeterminada a nivel de aplicación: si no configuras una cuenta de servicio por versión, Google Cloud utiliza la cuenta de servicio predeterminada a nivel de aplicación para todos tus servicios implementados. La cuenta de servicio predeterminada a nivel de aplicación se asigna al crear la aplicación. Para obtener más información, consulta Asignar una cuenta de servicio predeterminada a nivel de aplicación.
Si no asignas una cuenta de servicio predeterminada a nivel de aplicación,Google Cloud utiliza la cuenta de servicio predeterminada de App Engine creada automáticamente (
PROJECT_ID@appspot.gserviceaccount.com
).En función de la configuración de la política de tu organización, es posible que se conceda automáticamente el rol Editor a la cuenta de servicio predeterminada de tu proyecto. Te recomendamos que inhabilites la asignación automática de roles aplicando la restricción de la política de organización
iam.automaticIamGrantsForDefaultServiceAccounts
. Si has creado tu organización después del 3 de mayo del 2024, esta restricción se aplica de forma predeterminada.Si inhabilitas la concesión automática de roles, debes decidir qué roles quieres conceder a las cuentas de servicio predeterminadas y, a continuación, concederlos tú mismo.
Si la cuenta de servicio predeterminada ya tiene el rol Editor, te recomendamos que lo sustituyas por roles con menos permisos.Para modificar los roles de la cuenta de servicio de forma segura, usa Simulador de políticas para ver el impacto del cambio y, a continuación, asigna y revoca los roles adecuados.