database - password - redis security
¿Cómo asegurar Redis Cluster? (2)
Sé que Redis Cluster sigue siendo inestable, pero ha pasado todas las pruebas unitarias desde hace bastante tiempo, así que comencé a usarlo.
Me gustaría saber si un Clúster Redis funcionaría bien si los nodos requieren autenticación. Me inclino a pensar que sí, porque se conectan a través de un puerto diferente y usan un protocolo diferente, pero no estoy seguro y no pude encontrar ninguna documentación o algo sobre la especificación para confirmar esto.
Además, si el protocolo del cluster redis sobrepasa la barrera de autenticación, ¿no es un agujero en la seguridad? ¿Podría acceder a mi base de datos el mundo exterior? (el puerto al menos debe estar accesible para que pueda comunicarse con los otros nodos)
Si algún protocolo vuela a través de Internet, necesitaría cifrado ("ssl"), por ejemplo, a través de centros de datos. Esto en general afectará el rendimiento. En la especificación de seguridad actual de Redis -
http://redis.io/topics/security
Se recomienda que no se admite SSL y que se requiere un proxy SSL. En general, esto debería causar un golpe de rendimiento del sistema, por ejemplo, latencia que tendría que tener en cuenta.
Por lo tanto, idealmente, los nodos del clúster deberían ubicarse conjuntamente. Si no pueden ser, entonces el clúster debe diseñarse de modo que limite el transporte de datos entre sitios o lo desconecte sin restricciones de tiempo real.
También he elegido desactivar / activar comandos solo para cada nodo (ver detalles en la especificación de seguridad más arriba). No estoy seguro si esto es compatible con el modo de clúster o no.
El túnel SSH puede ser una solución fácil:
- No necesita exponer el puerto redis al mundo exterior. solo el ssh.
- La compresión de datos de soporte SSH, que puede reducir la transferencia entre los centros de datos.
Ejemplo rápido: ssh -f -L 1234:localhost:6379 server.com -NC
Esto enrutará cualquier conexión entrante a localhost: 1234 al servidor remoto.com:6379. Por lo tanto, puede reemplazar server.com:6379 con localhost: 1234 en su archivo de configuración redis.
Puede consultar man ssh
para obtener más información.