PDA

Ver la Versión Completa : Protección de información


andresenlared
01-07-2008, 21:00:38
Saludos.

Amigos tengo una pregunta: Resulta que en algunas partes se esta usando la base de datos que entrego, para sacar datos, y en ocaciones actualizarlos por medio de otras aplicaciones que usan conexion a mi base.

En el momento la unica proteccion de conexion es la que se usa al momento de cambiar la contraseña del motor por medio del IBOconsol, pero no es suficiente.

Se piensa en encriptamiento de informacion escencial pero considero que es muy complejo de realizar estos ajustes, debido a que se tienen varias aplicaciones que acceden a la misma base y seria un trabajo bien dispendioso.

Alguna idea mas rapida, o como podria controlar el acceso a mi base de datos desde otras aplicaciones que no sean las que libero??

Gracias por su ayuda.

pcicom
02-07-2008, 04:40:41
Temo que eso no es posible, ya que las BD puedes hasta transportarse tan facil como copiar el archivo, y accessarlas tan simple como instalar un componente de lectura de la BD como IBEXPRESS, IBOConsol..

Neftali [Germán.Estévez]
02-07-2008, 09:16:22
En SQL Server, por ejemplo, se pueden definir permisos sobre una tabla de forma individual. Para un usuario/grupo definir qué operaciones puede realizar (http://img71.imageshack.us/img71/4928/imagen478qn6.png).

¿Has mirado si en IB/FB hay algo similar? (Pregunto desde mi ignorancia en estas BD)

andresenlared
02-07-2008, 14:08:42
Muchas gracias por sus respuestas.

Si claro, en FB que es la base de datos que se esta manejando, se pueden crear roles y usuarios ligados a esos roles directamente sobre la base de datos. La conexion que se esta realizando es usando este tipo de configuracion sobre la base, definiendo permisos de lectura, actualizacion ejecucion etc para un tipo de rol que fuenciona muy bien accediendo desde mi aplicacion. El problema es cuando se conoce la base de datos en estructura y contenido y se crean otras aplicaciones que estan aprobechando el diseño para beneficio propio, y eso es lo que quiero controlar, el acceso desde otras aplicaciones. De lo que he mirado es muy poco lo que se puede hacer, y la seguridad de los datos por lo general esta dada en tecnicas de encriptamiento que es a lo que no quiero llegar porque el cambio tan grande que se tendria que hacer sobre la aplicacion.

Alguna otra idea o sugerencia...Muchas gracias.

Neftali [Germán.Estévez]
02-07-2008, 15:16:45
El problema es cuando se conoce la base de datos en estructura y contenido y se crean otras aplicaciones que estan aprobechando el diseño para beneficio propio, y eso es lo que quiero controlar, el acceso desde otras aplicaciones.

No acabo de enterder cómo, si has definido la seguridad correctamente, pueden desde otras aplicaciones abrir la BD y ver la estructura y contenido.:confused::confused:
Si has definido usuario y contraseña para caceder desde tu aplicación y la BD tiene configurada la seguridad, cualquier otra app/persona que no conozca esos datos no podrá abrir la BD.

Tal vez (seguramente) me estoy perdiendo algo...

pcicom
02-07-2008, 16:29:17
No acabo de enterder cómo, si has definido la seguridad correctamente, pueden desde otras aplicaciones abrir la BD y ver la estructura y contenido.:confused::confused:
Si has definido usuario y contraseña para caceder desde tu aplicación y la BD tiene configurada la seguridad, cualquier otra app/persona que no conozca esos datos no podrá abrir la BD.

Tal vez (seguramente) me estoy perdiendo algo...


El problema radica que obteniendo la clave de Administrador puedes hacer, lo que quieras con tu BD, aun y cuando existan reglas de usuarios... cuando eres Administrador eso no importa y podras accessar a cuanta BD tengas instalada.. aun asi es tambien tan sencillo como sacar una copia de tu BD he instalarla en una PC con FIREBIRD y con el usuarios SYSDBA puedes manipularla sin problemas..


Lo que se me ocurre a mi es que creees una DLL(Windows) o un .so(Linux) con una funcion UDF que encripte y desencripte ciertos datos, de tal manera que unicamente desde tu APP mande llamar las funciones, con algun parametro unico, de tal manera que si quisieran obrtener ese dato lo regresaria encriptado y no lo podrian utilizar y la unica seria desde tu APP...

Ejemplo: Obviamente la usariamos sobre campos importantes..

Tabla: CLientes
idCliente int
strCliente Varchar(80) <- se ecnriptaria

datos normales
idCleinte =1
strCliente = "JUAN PEREZ"

datos encriptados
idCliente =1
strCliente = "!"·"·$%$%$&&%"

Accesando desde tu logica de SQL seria

Para GRabar seria

INSERT INTO Clientes (idCliente,strCliente) VALUES (1,MyEncriptado('JUAN PEREZ'))

o para Actualizar

UPDATE Clientes Set strCliente=MyEcriptado('JUAN PEREZ') where idCliente=1



SELECT idCliente,MyDesEncriptado(strCliente,"miFraseUnica") FROM clientes
regresaria

1 JUAN PEREZ

Sin Encriptar regresaria

1 "!"·"·$%$%$&&%"


A quien le va a servir ?????

Crea una UDF,, es facil...


/////////////////////////////////
//// OTRA FORMA SERIA /////
/////////////////////////////////

Otra UDF pero que pueda establecerse en algun TRIGGER que detenga sierta ACCION..


No se si FIREBIRD pueda manejar el Evento de Conexion en el que tambien se pueda establecer la ejecucion de una funcion UDF...

Neftali [Germán.Estévez]
02-07-2008, 17:01:19
El problema radica que obteniendo la clave de Administrador puedes hacer, lo que quieras con tu BD, aun y cuando existan reglas de usuarios... cuando eres Administrador eso no importa y podras accessar a cuanta BD tengas instalada.. aun asi es tambien tan sencillo como sacar una copia de tu BD he instalarla en una PC con FIREBIRD y con el usuarios SYSDBA puedes manipularla sin problemas..

Ok.
Primero, entiendo que los usuarios de las otras aplicaciones no deberían ser administradores, porque si no esta discusión no tiene sentido.

En segundo lugar, como ya he dicho, no soy un experto en IB/FB pero me niego a pensar que la seguridad de FB es tan básica como lo que tú comentas. Lo primero que me enseñaron al trabajar con IB (y supongo que FB debe seguir la misma norma) es a eliminar el usuario sysDBA/masterkey y sustituirlo por otro que haga sus mismas funciones (Administrador).

Entiendo que realizado ese paso, lo de copiar la BD en otro servidor no debe funcionar.

AzidRain
02-07-2008, 19:45:16
Tan simple como:

Si la aplicación que entregaste fue hecha a medida hay que especificar en el contrato o documentación de entrega que tu aplicación funcionará SI y solo SI no se modifican las tablas de manera externa a lo cual ya no te harás responsable. El usuario SYSDBA o root en otros motores, debe existir siempre pues es el último reducto para poder mantener la base de datos. Normalmente se le coloca un password y se entrega a quien te recibe el sistema. Ahora bien si tu sistema se monta sobre un servidor que ya está trabajando obviamente no puedes exigir que nadie tenga acceso al servidor excepto tu aplicación.

Hay algunas soluciones para detectar que te modifquen campos o registros completos en tu aplicación. Una de las más simples es crear un campo checksum en el que haces alguna operación con todos los demás campos de manera que quien modifique algo no sabrá como calcular ese checksum y de esta forma tu aplicación podrá detectar cualquier alteración.

pcicom
02-07-2008, 19:57:46
Recibe un cordial saludo..

Ok.
Primero, entiendo que los usuarios de las otras aplicaciones no deberían ser administradores, porque si no esta discusión no tiene sentido.

En segundo lugar, como ya he dicho, no soy un experto en IB/FB pero me niego a pensar que la seguridad de FB es tan básica como lo que tú comentas. Lo primero que me enseñaron al trabajar con IB (y supongo que FB debe seguir la misma norma) es a eliminar el usuario sysDBA/masterkey y sustituirlo por otro que haga sus mismas funciones (Administrador).

Entiendo que realizado ese paso, lo de copiar la BD en otro servidor no debe funcionar.

Estimado Aporreador siento que me estas aporreando.... ejejjeejj , no te creas, aveces hay que quitar las suposiciones y mencionar lo hecho, te menciono esto porque el que le definas un usuario a tu acceso unico a tu BD no le hace unico acceso mientras que exista en cualquier BD un Administrador, este mismo puede crear otro usuario con accesos a las BD que se elijan..

Entonces volvemos a lo mismo tanto el Administrador como el o los nuevos usuarios autorizados tendran acceso a la BD...

He realizado lo que mencionas de quitar el SYSDBA, pero si copian la BD a otro equipo la podran abrir con el ADMINISTRADOR...

Saludos...

Por ahi encontre esto que puede servir para cuestiones de SEGURIDAD..

http://www.firebirdfaq.org/faq344/

andresenlared
03-07-2008, 17:08:53
Muchas gracias a todos por sus observaciones, espero encontrar la mejor manera de solucionar este problemilla.

Hasta pronto