Vous certainement ne souhaitez pas exposer directement votre ou vos serveurs MongoDB à l'application Android, surtout si l'application aura un rôle d'utilisateur permettant l'accès en écriture à la base de données. Toute personne ayant accès à l'application Android pourrait potentiellement découvrir et extraire ces informations d'identification, et si votre application Android est conçue pour se connecter à partir d'un réseau plus large, cela expose inutilement votre serveur MongoDB. Vous pouvez également ouvrir votre serveur MongoDB à d'éventuelles attaques par déni de service ou à des requêtes malveillantes.
La documentation MongoDB contient une section détaillée sur Concepts de sécurité y compris l'exposition et la sécurité du réseau. La meilleure pratique pour tout déploiement de base de données consiste à limiter la plage d'adresses réseau pouvant se connecter directement. En règle générale, les connexions directes doivent être limitées à vos serveurs d'applications et applications de surveillance, qui sont probablement hébergés au sein de la même infrastructure réseau.
Oui, une approche recommandée serait d'écrire votre propre interface qui fournit une API et des contrôles d'authentification appropriés. Vous devriez pouvoir trouver un framework PHP et/ou des bibliothèques pour minimiser la quantité de code personnalisé que vous devez écrire (par exemple, REST, JSON, Oauth).
L'interface que vous implémentez peut :
- imposer des contraintes sur le type de requêtes que les utilisateurs finaux peuvent exécuter (uniquement ce que vous fournissez, plutôt que l'API MongoDB complète)
- autoriser l'application à s'authentifier avec les privilèges utilisateur appropriés sans avoir les informations d'identification de la base de données intégrées dans l'application Android
- ajouter une sécurité utilisateur supplémentaire telle que OAuth basée sur des jetons ou authentification Twitter/Facebook
- abstraire le point de terminaison auquel l'application Android se connecte (votre interface Web) à partir des détails de l'infrastructure de votre déploiement MongoDB
- inclure éventuellement la mise en cache pour les requêtes courantes ou les données de session