readthedocs-fr / bin-server

Un outil pour héberger des snippets de code et les partager via une URL.
https://bin.readthedocs.fr
MIT License
14 stars 15 forks source link

Héberger une instance redis de testing #117

Open Julien00859 opened 3 years ago

Julien00859 commented 3 years ago

Nous avons eu des retours comme quoi certaines personnes voudraient bien contribuer au développement de bin mais qu'ils étaient ralenti par la nécessité d'héberger un serveur redis de leur côté pour les tests. C'est notamment un problème pour les développeurs sous Windows puisque redis ne propose aucun binaire pour ce système.

Que pensez-vous d'héberger une instance redis pour la communauté des développeurs. Redis propose des ACL uniquement depuis la version 6, hors le service est hébergé du une machine debian stable où le package est encore en version 5 (mais bonne nouvelle, debian 11 "Bullseyes" devrait passer en stable d'ici la fin de l'année). Le seul méchanisme de protection que je peux proposer est la configuration via un mot de passe unique qui serait partagé par toute la communauté, rendant très difficile le fait de cloturer un compte sans devoir changer le mot de passe et devoir le re-communiquer à tout le monde.

Une autre considération à avoir est que redis ne se veut pas être un système multi-tenant, à comprendre que la "database" auquel le développeur se connecte est en réalité juste un namespace au sain d'une même db redis, il n'y a aucune isolation entre les "database" (cf: https://github.com/redis/redis/issues/8099#issuecomment-741868975).

Julien00859 commented 3 years ago

Pour limiter les abus il faudrait toutes les protections suivantes:

  1. Limiter l'accès via pair de user/pwd généré pour chaque utilisateur faisant la demande d'accéder à cette base de donnée de testing
  2. Limiter via ACL la liste des commandes pouvant être exécutés (uniquement celles exécutées par la version stable de bin)
  3. Limiter drastiquement la taille de la mémoire (quelques MB tout au plus)
  4. Forcer un flushall tous les jours
  5. Monitorer les accès
Nauhai commented 3 years ago

Je suis sur Windows et Redis fonctionne très bien avec WSL.

Mesteery commented 3 years ago

Je suis dans le même cas que toi. Mais je doute fortement qu'une personne n'ayant pas Redis (et donc WSL) sur sa machine ait envie d'installer WSL, puis Redis, juste pour contribuer.

Mesteery commented 3 years ago

Il est possible, gratuitement, et très facilement/rapidement, d’héberger une instance Redis de test.

  1. La première solution est de simplement proposer d'utiliser RedisLabs qui suffit largement en Free (30 Mb).
  2. La deuxième solution est de nous même fournir le lien et le password vers une instance RedisLabs (sans faire grand chose d'autre, de toute façon il y a le Data Eviction Policy).

Les deux solutions marchent parfaitement, et personnellement je préfère la première. Cela requiert juste d'ajouter une option REDIS_PASSWORD dans la configuration.

Un exemple de mon .env (fonctionnel) :

RTDBIN_MAXSIZE=500kiB
REDIS_HOST=redis-XXXXX.c258.us-east-1-4.ec2.cloud.redislabs.com
REDIS_PORT=16265
REDIS_PASSWORD=UG8W4N....................JeWcfAbV
Julien00859 commented 2 years ago

Up, le serveur tourne maintenant avec bulleyes et on a donc redis v6. L'approche que je conseillerais serait de s'informer comment utiliser ces ACL pour sécuriser le serveur redis par un combo user/pwd ou bien un token d'accès. Il faudra surement changer la config et le code de bin pour permettre à bin de s'authentifier.