[OT] MySQL host remoto

30 views
Skip to first unread message

Matias Mascazzini

unread,
Aug 19, 2015, 9:40:06 AM8/19/15
to rubysur
Hola,
tengo una app. en Heroku y quiero conectarla con una base de datos MySQL que esta en otro servidor.

Resulta que como ya estoy pagando un hosting, le digo al del server que me de acceso remoto desde la URL de Heroku y me dijo que NO, que no se puede y que si lo hace compromete la seguridad del servidor.

1) ¿Están de acuerdo con el tema de seguidad?

2) ¿Es viable lo que le pido, habilitar el acceso remoto desde una URL especifica?

3) ¿Conocen y han usado algún Tunel en Ruby para MySQL? (HTTP Tunneling to MySQL)

4) ¿Cómo lo resuelven a este tema?

Matias Owsianik

unread,
Aug 19, 2015, 5:28:44 PM8/19/15
to rub...@googlegroups.com
1) Estoy de acuerdo con la respuesta que te dieron. Se compromete la seguridad porque si te levanta el firewall para las conexiones que vienen desde heroku, cualquier código que corra en heroku tiene acceso a la base de datos (incluso por lo que estás contando, supongo que hablás de un mysql compartido).

2) No sólo no tiene sentido en términos de seguridad, sino que además te estás comprando un problema de performance en tu aplicación. La comunicación entre tu aplicación y la base de datos debería ser rápida y con poca latencia. 

3) Existe Corkscrew pero necesitarías otro server para poder hacer el tunel (en Heroku no lo vas a poner hacer andar) y, de vuelta, no me parece una buena solución

4) Poniendo todos los servicios en la misma red. Por ejemplo, Heroku + AWS (Heroku corre en los datacenters de Amazon)


--
Has recibido este mensaje porque estás suscrito al grupo "rubysur" de Grupos de Google.
Para anular la suscripción a este grupo y dejar de recibir sus mensajes, envía un correo electrónico a rubysur+u...@googlegroups.com.
Para acceder a más opciones, visita https://groups.google.com/d/optout.

Juan Matías

unread,
Aug 19, 2015, 5:59:25 PM8/19/15
to rub...@googlegroups.com
No sé que tenés que hacer, pero...un tunnel SSH no sirve? 







--
Has recibido este mensaje porque estás suscrito al grupo "rubysur" de Grupos de Google.
Para anular la suscripción a este grupo y dejar de recibir sus mensajes, envía un correo electrónico a rubysur+u...@googlegroups.com.
Para acceder a más opciones, visita https://groups.google.com/d/optout.



--
Matías 

Matias Mascazzini

unread,
Aug 20, 2015, 6:33:02 AM8/20/15
to rubysur
Investigando un poco justo algo vi que algunos resolvían con tuneles SSH, investigare eso; el del hosting me dice que eso si me puede dar si cambio a un plan más caro.

Lo que quiero hacer es saltarme la restricción del hosting que tiene el MySQL. Y conectar a esa Base de Datos desde la aplicación Rails. Ya que esa base de datos se cobra por espacio que ocupa en disco.

El problema es no incrementar los costos del cliente (se que para muchos de ustedes esto es un chiste pero bue), ya que es una aplicación pequeña que tendrá de 5 a 20 usuarios registrados, y calculo que en simultáneo estarán 2 o 3 con suerte. Después si crece, y el cliente ve la necesidad, se pone algo más correcto.

Gracias por sus respuestas.

Matías Palomec

unread,
Aug 20, 2015, 11:43:43 AM8/20/15
to rubysur
Hola,

Mi mayor experiencia es como sysadmin, aparte de que hago varias cosa de desarrollador.

Si bien con tuneles ssh se puede resolver, es algo que en lo personal solo te lo recomendaria para algo de pruebas o por poco tiempo. Los tuneles se caen y la reactivacion del tunel no siempre es buena.

Si queres usar un SaaS, no podrias probar con otro para evaluar, por ejemplo openshift que te da 3 gears gratis (con la DB dentro del entorno de ellos).

Juan Manuel Pérez

unread,
Aug 20, 2015, 1:13:31 PM8/20/15
to rub...@googlegroups.com
El problema es no incrementar los costos del cliente (se que para muchos de ustedes esto es un chiste pero bue), ya que es una aplicación pequeña que tendrá de 5 a 20 usuarios registrados

¿Se considera parte de los gastos el tiempo que vas a estar arreglando esta chinada? Porque me parece que estás obviando este punto...

Y ni que hablar si necesita mantenimiento de un tercero en el futuro.

Matias Mascazzini

unread,
Aug 20, 2015, 5:10:36 PM8/20/15
to rubysur
Juan,
me pareció agresiva tu respuesta, no es la filosofía de la lista.

Justamente estoy preguntado como resuelven este tipo de conflictos, para tratar de hacerlo de la mejor manera posible con las limitaciones que tengo.

Maximiliano Guzman

unread,
Aug 20, 2015, 5:16:57 PM8/20/15
to rub...@googlegroups.com
El tema es balancear las necesidades de costos con hacer las cosas de forma ordenada. No se como es este caso particular, pero casi todos los clientes lloran costos. 

Aún si les aclarás los riesgos, el día que la solución “con alambre” falle, te van a culpar a vos y van a afectar tu reputación. 

Sin mencionar el tener que salir a apagar los incendios de cuando el túnel se caiga.

Aguardientico

unread,
Aug 20, 2015, 5:17:52 PM8/20/15
to rubysur
Hola Matias,

Si se hace de la forma correcta, no veo ningún problema de seguridad.

Recomendaciones:
1. El usuario en la base de datos solo debe tener permiso para conectarse desde el dominio donde está tu aplicación Ej:  miapp.heroku.com
2. El usuario de base de datos solo debe tener permiso para manipular las tablas a las que tu aplicación accede

Tal vez este link sirva de algo: https://dev.mysql.com/doc/refman/5.1/en/connection-access.html

Maximiliano Guzman

unread,
Aug 20, 2015, 5:21:47 PM8/20/15
to rub...@googlegroups.com

On Aug 20, 2015, at 6:17 PM, Aguardientico <gonzalez...@gmail.com> wrote:

Hola Matias,

Si se hace de la forma correcta, no veo ningún problema de seguridad.


Hacerlo en la forma correcta significa que los sysadmin del proveedor se tengan que hacer cargo de un vector de ataque nuevo. No es algo menor. 

Si no tenéis mysql abierto hacia el mundo exterior, cualquier vulnerabilidad en este (fuera de cuestiones de inyeccion y esas yerbas) no es un problema. Pero una vez que lo abrís, tenés que preocuparte de parches y configuración en otra forma.

Otra cosa a considerar es la calidad de conexión entre el server con tu aplicación y el de mysql. Eso puede afectar a la experiencia de usuario.

Patricio Bruna

unread,
Aug 20, 2015, 5:26:25 PM8/20/15
to rub...@googlegroups.com
Ojo que esto no va a servir y el admin. del hosting tiene cierta razón.
El nombre de host, dominio o URL (miapp.heroku.com) puede resolver a muchas direcciones IP, Heroku seguramente balancea a través de muchas direcciones IP.

Los permisos a nivel de red, firewall, router, etc. no se dan usando nombre de hosts, se dan usando direcciones IP. Por lo que si el admin del hosting accediera a permitir la conexión, debería hacerlo para todas las posibles direcciones IP que tenga Heroku. No way:)

Lo que se hace en estos casos es acceder a los datos de la DB a través de una API: REST, SOAP, etc.

Si eres aventurero http://ilyabylich.svbtle.com/experimental-mysql-http-api-and-ruby pero dudo que el admin lo quiera instalar.

--------------------------------------------------
Patricio Bruna
CEO - IT Linux
(+56-2) 2963 9271

Correo enviado a través de
--

Aguardientico

unread,
Aug 20, 2015, 5:29:19 PM8/20/15
to rubysur
Concuerdo contigo Maximiliano, 

Precisamente para eso están (estamos) los sysadmin, y si el requerimiento del cliente es abrir la conexión de la base de datos para poder acceder desde su aplicación toca buscar la forma de hacerlo.

Matias si te resulta fácil cambiar de mysql a postgresql podrías usar el plugin de heroku en su versión gratuita dado que la cantidad de usuarios es pequeña, tal vez es una forma de solventar el problema sin incurrir en gastos grandes.

Aguardientico

unread,
Aug 20, 2015, 5:35:03 PM8/20/15
to rubysur
Patricio, tienes razón con lo del firewall, afortunadamente, heroku tiene un plugin llamado proximo, el cuál te permite tener una ip estática para el tráfico de salida de tu app.

Patricio Bruna

unread,
Aug 20, 2015, 6:22:59 PM8/20/15
to rub...@googlegroups.com
Mira eso... Que buen dato



Saludos. 

----------------------------------------
Patricio Bruna
CEO - IT Linux 
(+56-2) 2963 9271

Correo enviado a través de

Matias Owsianik

unread,
Aug 21, 2015, 4:38:09 PM8/21/15
to rub...@googlegroups.com
Igual muchachos, con eso no resuelven mucho. El problema de seguridad aún persiste. La comunicación con mysql va a estar encriptada? Porque, por default, mysql no usa ningún esquema de encriptación. Y, por lo que olfateo al tratarse de un hosting, dudo mucho que lo soporten, ya que requiere configuración de certificados, etc. Y en ese caso, passwords y datos viajarían de forma tan limpia que cualquiera en el medio las podría ver sin mucho esfuerzo.

Creo que ya es absurdo el nivel de complejidad que se le está dando al tema. 

Matías, creo que deberías recomendarle a tu cliente la solución técnicamente correcta, independientemente de lo que vos consideres que son los costos del cliente. Y, como dijo alguno más arriba (y sin evaluar si sus modos fueron agresivos o no), deberías considerar en el costo las horas de operación y mantenimiento de todo esto. Enseñarle a valorar ese costo a tu cliente, también es enseñarle a valorar tu propio trabajo como profesional.



Juan Matías

unread,
Aug 21, 2015, 5:52:15 PM8/21/15
to rub...@googlegroups.com
Yo creo que él sabe qué sería lo correcto. Sólo preguntó cómo ahorrarse 2 pesos haciendo uso de una técnica asiática. Y también creo que es consciente de las consecuencias. Al menos yo lo consideré así. Me arrepiento del consejo, no vayas por el túnel Matías, la luz al final es un tren en contra. 
Matías 
Reply all
Reply to author
Forward
0 new messages