Permisos otorgados a una Extensión de Firebase

Para que una Firebase Extension realice sus acciones especificadas, Firebase otorga a cada instancia de una extensión instalada acceso limitado a tu proyecto y datos a través de una cuenta de servicio.

¿Qué es una cuenta de servicio?

Una cuenta de servicio es un tipo especial de cuenta de usuario de Google. Representa a un usuario no humano autorizado para acceder a los datos mediante las API de Google.

Firebase crea una cuenta de servicio en tu proyecto durante la instalación de una extensión. Cada instancia instalada de una extensión tiene su propia cuenta de servicio.

Firebase limita el acceso a tu proyecto y a los datos mediante la asignación de funciones específicas de la cuenta de servicio de una extensión (conjuntos de permisos). Durante el desarrollo de una extensión, Firebase determina las funciones que esta requiere. Durante la instalación, Firebase asigna estos roles a la cuenta de servicio de una extensión, y no debes modificar, agregar ni borrar ninguno de los roles asignados (de lo contrario, la extensión instalada no funcionará como se espera). Sin embargo, puedes desinstalar la extensión, lo que borra la cuenta de servicio (y su acceso) por completo.

Las cuentas de servicio creadas para las extensiones tienen el siguiente formato: ext-extension-instance-id@project-id.iam.gserviceaccount.com.

Puedes ver todas las cuentas de servicio asociadas con tu proyecto de Firebase en la pestaña Cuentas de servicio de la Configuración del proyecto.

Permisos y roles

Durante el desarrollo de una extensión, Firebase determina el nivel de acceso que esta requiere para funcionar.

Firebase define este nivel de acceso mediante una lista explícita de los roles (conjuntos de permisos) que Firebase debe asignar a la cuenta de servicio de la extensión durante su instalación.

Cada rol (y sus permisos inherentes) se basa en un producto o servicio específico. Algunos ejemplos de roles son firebasehosting.admin, bigquery.dataEditor y firebasedatabase.admin. Firebase enumera los roles necesarios para una extensión en el archivo de especificación (el archivo extension.yaml).

En el caso de las extensiones oficiales de Firebase, la plataforma revisa de forma detallada esta lista de roles para garantizar que el acceso de una extensión esté estrictamente limitado al permiso de sus tareas. También puedes revisar y confirmar el acceso otorgado a una extensión en su página de detalles en el panel Firebase Extensions o en el archivo README.

A continuación, podrás obtener información sobre los permisos incluidos en cada rol:

¿Qué sucede cuando desinstalo una extensión?

Cuando desinstalas una extensión de tu proyecto, Firebase borra la cuenta de servicio creada para esa instancia de la extensión. Una vez eliminada la cuenta de servicio, la extensión no se puede ejecutar en tu proyecto porque ya no tiene derechos de acceso a tu proyecto ni a tus datos.