El control de acceso determina quién tiene permiso para acceder a los servicios y recursos en un proyecto de Google Cloud. En App Engine, existen varios casos prácticos diferentes para configurar el control de acceso:
Otorga a los miembros del equipo acceso al proyecto de Cloud para que puedan implementar apps y configurar servicios.
Otorgarle a tu app acceso a servicios de Google Cloud, como Cloud Storage. Todos los servicios de Cloud requieren autenticación y autorización para cada llamada a una API, incluidas las llamadas que se originan en tu aplicación de App Engine.
Otorga a los usuarios acceso a los recursos de un proyecto de Cloud. Si bien este caso de uso no es común, puede haber situaciones en las que la app necesite solicitar acceso a un recurso de Cloud en nombre de un usuario. Por ejemplo, es posible que tu app necesite acceder a datos que pertenecen a los usuarios.
En esta página, se proporciona una descripción general de la configuración del control de acceso en cada caso práctico.
Para obtener información general sobre cómo Google Cloud Platform maneja el control de acceso, consulta la descripción general de la administración de identidades y accesos (IAM).
Otorga acceso a los miembros de tu equipo
Para otorgarle a un desarrollador acceso al proyecto de Cloud, crea uno de estos elementos o ambos:
Una cuenta de usuario asociada con una Cuenta de Google, cuyo propósito es representar a una persona específica en tu proyecto
Se puede usar una cuenta de usuario para autenticar desde las siguientes herramientas:
- Google Cloud Console
- Herramientas del SDK de Cloud, como la herramienta de línea de comandos de
gcloud
- IDE y herramientas de compilación que usan componentes del SDK de Cloud para probar e implementar aplicaciones de App Engine
Una cuenta de servicio, cuyo propósito no es representar a una persona sino a una aplicación o un proceso. Usa cuentas de servicio en tus procesos automatizados de compilación, de prueba y de implementación, especialmente si varios desarrolladores pueden ejecutar estos procesos.
Se puede usar una cuenta de servicio para autenticar desde las siguientes herramientas:
- Herramientas del SDK de Cloud, como la herramienta de línea de comandos de
gcloud
- IDE y herramientas de compilación que usan herramientas del SDK de Cloud para implementar y probar apps de App Engine
- Herramientas del SDK de Cloud, como la herramienta de línea de comandos de
Crea una cuenta de usuario
Abre la página IAM en Cloud Console.
Haz clic en Seleccionar un proyecto, elige un proyecto y haz clic en Abrir.
Haz clic en Agregar.
Ingresa una dirección de correo electrónico.
Selecciona funciones que otorguen acceso a las características de App Engine.
Si el usuario también necesita acceder a otros servicios de Cloud, selecciona funciones que otorguen acceso a otros servicios de Cloud.
Haz clic en Guardar.
Ahora el usuario puede acceder a Google Cloud Console y autorizar las herramientas del SDK de Cloud.
También puedes crear cuentas de usuario desde gcloud, la API de REST o las bibliotecas cliente.
Crea una cuenta de servicio
Abre la página Cuentas de servicio en Cloud Console.
Selecciona tu proyecto y haz clic en Abrir.
Haz clic en Crear cuenta de servicio.
Ingresa un nombre de cuenta de servicio (que permita identificarla fácilmente).
Haz clic en Crear.
Selecciona funciones que otorguen acceso a las características de App Engine.
Si la cuenta de servicio también necesita acceder a otros servicios de Cloud, selecciona funciones que otorguen acceso a otros servicios de Cloud.
Haz clic en Continuar.
Si lo deseas, puedes especificar cuentas de usuario con la capacidad de administrar la cuenta de servicio. También puedes especificar cuentas de usuario con la capacidad de usar la cuenta de servicio para acceder indirectamente a todos los recursos a los que tiene acceso la cuenta de servicio.
Haz clic en + Crear clave y sigue las instrucciones para descargar una clave JSON. Almacena el archivo de manera segura, ya que no podrás recuperar la clave si la pierdes.
Haz clic en Listo.
Próximos pasos
- Si usas la cuenta de servicio en tus procesos automatizados de compilación y de implementación, autoriza al SDK de Cloud con una cuenta de servicio.
- Si usas la cuenta de servicio con un IDE, sigue las instrucciones que proporciona el IDE.
Otórgale a tu app acceso a los servicios de Cloud
Cada llamada a un servicio de Cloud debe estar autenticada y autorizada, incluidas las llamadas provenientes de una aplicación de App Engine y destinadas a otros servicios de Cloud, como Cloud Storage.
De forma predeterminada, las llamadas de tu aplicación de App Engine a servicios pertenecientes al mismo proyecto están autorizadas. El flujo predeterminado funciona de la siguiente manera:
- Para iniciar llamadas a un servicio de Cloud, tu app crea un objeto cliente que contiene las credenciales y otros datos que tu app necesita para interactuar con el servicio. Si no especificas las credenciales en el constructor del cliente, este busca las credenciales en el entorno de la app.
A continuación, se muestra un ejemplo de cómo crear un cliente para Cloud Storage:
Comienza a usarlo
Java
Node.js
PHP
Python
Ruby
- De forma predeterminada, el entorno de la app contiene credenciales de la cuenta de servicio predeterminada de App Engine.
Cuando creas una aplicación de App Engine, Google genera esta cuenta de servicio y le otorga los permisos necesarios para administrar y usar todos los servicios de Cloud de un proyecto de GCP.
Si deseas anular este flujo predeterminado, sigue alguno de estos pasos:
Configura la variable de entorno
GOOGLE_APPLICATION_CREDENTIALS
. Si se establece esta variable, los servicios usarán las credenciales especificadas en ella en lugar de la cuenta de servicio predeterminada.Especifica las credenciales cuando crees una instancia del objeto
Client
para un servicio de Cloud. Por ejemplo, si la app llama a un servicio de Cloud que pertenece a otro proyecto, tal vez tengas que pasar las credenciales de forma manual.
- Almacena las credenciales en una ubicación segura, como Datastore, y recupéralas en el entorno de ejecución.
- Mantén las credenciales en el código, pero encríptalas con un almacén de claves, como Cloud KMS.
Consulta Elige una solución de administración de secretos para obtener más información sobre las ventajas de cada uno de estos enfoques.
Otorga a los usuarios acceso a los recursos de Cloud
Si quieres que tu app lea datos de los usuarios desde otros servicios de Google, deberás configurar OAuth 2.0 para aplicaciones de servidor web. Por ejemplo, si deseas extraer datos de un usuario desde Google Drive a fin de importarlos a tu app, usa OAuth 2.0 para aplicaciones de servidor web a fin de compartir datos específicos y mantener la privacidad de los otros datos, como nombres de usuario y contraseñas.
Delegación de autoridad de todo el dominio de Google Workspace
Si tienes un dominio de Google Workspace (antes conocido como G Suite), un administrador del dominio puede autorizar a una aplicación para que acceda a los datos del usuario en nombre de los usuarios del dominio de Google Workspace. Por ejemplo, una aplicación que usa la API de Calendario de Google para agregar eventos a los calendarios de todos los usuarios en un dominio de Google Workspace usará una cuenta de servicio para acceder a la API de Calendario de Google en nombre de los usuarios.
La autorización de una cuenta de servicio para acceder a los datos en nombre de los usuarios en un dominio se conoce como “delegación de la autoridad de todo el dominio” a una cuenta de servicio. Para esto, se usa OAuth 2.0 y se requiere que un administrador de dominio de Google Workspace autorice la delegación de autoridad de todo el dominio a la cuenta de servicio.