2012-08-18 4 views
7

Je sais que Redis Cluster est toujours instable, mais il a passé tous les tests unitaires depuis assez longtemps, alors j'ai commencé à l'utiliser.Comment sécuriser Redis Cluster?

Je voudrais savoir si un cluster Redis fonctionnerait bien si les nœuds nécessitaient une authentification. Je suis enclin à penser oui, parce qu'ils se connectent via un port différent et utilisent un protocole différent, mais je ne suis pas sûr et je n'ai trouvé aucune documentation ou quoi que ce soit sur le spec pour le confirmer.

En outre, si le protocole de cluster redis survole la barrière d'authentification, n'est-ce pas un problème de sécurité? Ma base de données pourrait-elle être accessible par le monde extérieur? (le port doit au moins être accessible pour pouvoir communiquer avec les autres noeuds)

+0

Le port doit probablement être accessible uniquement aux autres nœuds qui se trouvent probablement sur le même réseau local. Vous ne devriez pas être ouvert au monde extérieur. – seppo0010

+0

@ seppo0010 il doit si vous voulez avoir la réplication des noeuds à travers les centres de données .. –

+1

@ JoãoPintoJerónimo, si vous ne pouvez pas le faire avec par exemple. Outils AWS, vous pouvez ouvrir le port à partir de certaines adresses IP uniquement. –

Répondre

3

Si un protocole survole Internet, vous aurez besoin d'un cryptage ("ssl"), par exemple, entre les centres de données. Ceci en général affectera les performances. Dans la spécification de sécurité actuelle de Redis -

http://redis.io/topics/security

il est conseillé que ssl est pas pris en charge et vous auriez besoin d'un proxy SSL. Cela devrait en général provoquer une atteinte des performances du système, par ex. la latence que vous auriez à prendre en compte.

Donc, idéalement, les nœuds de cluster devraient être co-localisés. Si tel n'est pas le cas, le cluster doit être conçu de manière à limiter le transport de données entre sites ou à le déconnecter sans contrainte de temps réel.

J'ai également choisi de désactiver/activer les commandes uniquement pour chaque nœud (voir les détails dans la spécification de sécurité ci-dessus). Je ne suis pas sûr que ce soit pris en charge en mode cluster ou non.

+0

Avez-vous une idée de la performance? Est-ce vraiment très mauvais? En mode cluster, seul un sous-ensemble de commandes est disponible sur un serveur Redis traditionnel, uniquement les commandes qui fonctionnent avec une seule clé. Je pense que le plus de communication entre les clusters serait pour pub/sub, et que cela passerait par un proxy SSL ... –

+0

Le hit de perf est généralement très subjectif quant à la quantité de données qui coule dans le proxy SSL, à quel point le proxy ssl est costaud etc. La meilleure façon de faire est de configurer un cluster et d'effectuer des tests de performance et de performance. – NiladriBose

6

tunnel SSH peut être une solution facile:

  1. Vous n'avez pas besoin d'exposer le port Redis au monde extérieur. seulement le ssh.
  2. SSH prend en charge la compression des données, ce qui peut réduire le transfert entre les centres de données.

rapide Exemple: ssh -f -L 1234:localhost:6379 server.com -NC

Cette route de toute volonté connexion entrante à localhost: 1234 à la server.com:6379 à distance. Ainsi, vous pouvez remplacer server.com:6379 par localhost: 1234 dans votre fichier de configuration Redis.

Vous pouvez vérifier man ssh pour plus d'informations.

+0

Cela ne fonctionnerait que pour Redis à un nœud, pas pour Cluster.A partir des documents Redis à partir de 2016: "Actuellement Redis Cluster ne prend pas en charge les environnements NATted et dans les environnements généraux où les adresses IP ou les ports TCP sont remappés." Le tunnelage romprait le protocole inter-nœuds utilisé sur le port 10000. – Ivan

Questions connexes