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 de uso diferentes para configurar el control de acceso:
Otorga a los miembros del equipo acceso al proyecto de Google Cloud para que puedan implementar apps y configurar servicios.
Otorga a la 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 la API, incluidas las llamadas que se originan en tu app de App Engine.
Otorga a los usuarios acceso a los recursos de un proyecto de Google 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 de uso.
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 otorgar acceso a un desarrollador al proyecto de Google 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:
- Consola de Google Cloud
- Google Cloud CLI
- IDE y herramientas de compilación que usan la CLI de gcloud para implementar y probar apps 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:
- CLI de gcloud
- IDE y herramientas de compilación que usan herramientas de la CLI de gcloud para implementar y probar apps de App Engine
Crea una cuenta de usuario
Abre la página de IAM en la consola de Google Cloud.
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 la consola de Google Cloud y autorizar la CLI de gcloud.
También puedes crear cuentas de usuario desde gcloud, la API de REST o las bibliotecas cliente.
Crear una cuenta de servicio
Abre la página Cuentas de servicio en la consola de Google Cloud.
Selecciona tu proyecto y haz clic en Abrir.
Haz clic en Crear cuenta de servicio.
Ingresa un nombre de cuenta de servicio. Debe ser un nombre fácil de usar para mostrar.
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 Guardar.
Aparecerá una lista de las cuentas de servicio existentes.
Si necesitas usar la cuenta de servicio fuera de Google Cloud, sigue las instrucciones para crear una clave de cuenta de servicio (opcional).
Próximos pasos
- Si usas la cuenta de servicio en tus procesos automatizados de compilación y de implementación, autoriza a la CLI de gcloud con una cuenta de servicio.
- Si usas la cuenta de servicio con un IDE, sigue las instrucciones que proporciona el IDE.
- Si necesitas usar una identidad única para una versión de tu aplicación de App Engine cuando accedes a otros servicios de Google Cloud o ejecutas tareas, puedes especificar una cuenta de servicio administrada por el usuario en App Engine.
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:
Go
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 Google Cloud.
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 de Cloud 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 tus credenciales en una ubicación segura, como Firestore en modo Datastore (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.
Para obtener información sobre las ventajas de cada uno de estos enfoques, consulta Elige una solución de administración de secretos.
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.
Especifica una cuenta de servicio
App Engine te permite usar dos tipos de cuentas de servicio:
- 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. Para obtener más información, consulta Configura cuentas de servicio de App Engine.
Cuenta de servicio predeterminada a nivel de la app: si no configuras una cuenta de servicio por versión, Google Cloud usa la cuenta de servicio predeterminada a nivel de la app para todos los servicios implementados. Debes asignar la cuenta de servicio predeterminada a nivel de la app cuando creas la app. Para obtener más información, consulta Asigna una cuenta de servicio predeterminada a nivel de la app.
Si no asignas una cuenta de servicio predeterminada a nivel de la app, Google Cloud usa la cuenta de servicio predeterminada de App Engine creada de forma automática (
PROJECT_ID@appspot.gserviceaccount.com
).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.