Proteger a las Bases de Datos visibles en Internet

9 comentarios

En ocasiones necesitas que tu Base de Datos pueda ser accedida desde Internet, generalmente a los usuarios les gusta tener esa opción: poder conectarse usando su notebook, su tableta, su teléfono celular o estando en un cybercafé es muy atractivo a simple vista.

Sin embargo como profesional informático debes saber que cualquier Base de Datos que no esté lo suficientemente protegida está en grave riesgo y puede ser atacada por los hackers. Una IP pública sin protección es una invitación para que cualquier malhechor intente el acceso.

cyberattack

Dos computadoras que se encuentran en Internet generalmente no tienen un comunicación directa entre ellas sino que la comunicación va pasando de servidor a servidor hasta llegar a su destino. A esas computadoras intermedias se las llama “nodos” y en algunos casos podría haber decenas de nodos entre ambas. Como se ve en el gráfico superior, para ir desde “A” hasta “B” se requiere pasar por varios nodos. ¿Y cuál es el problema? que cualquiera de esos nodos puede interceptar los datos que pasan por él y enterarse de todo.

Los hackers utilizan programas que les permiten revisar en cuestión de minutos todas las IP que se encuentran en un rango. Por ejemplo, podrían buscar todas las IP públicas que se encuentren activas entre 200.120.60.0 y 200.120.90.255 y eso solamente les tomará unos cuantos minutos. Anotan los números de las que están activas e intentan realizar la conexión. Para eso también tienen programas que les facilitan la tarea.

Y si la IP donde se encuentra tu Base de Datos está dentro del rango en el cual algún hacker está buscando, estás corriendo un riesgo gravísimo. Y no te olvides que en el mundo hay cientos de miles de hackers y muchísimos de ellos están “trabajando” en este mismo momento.

Para que tu conexión sea segura y sin riesgos (o con un riesgo pequeñisimo) lo que necesitas es un túnel privado de conexión.

¿Qué es un túnel privado?

Es una comunicación que se realiza entre dos computadoras. La computadora que envía los datos los encripta y los comprime, la computadora que recibe los datos los descomprime y los desencripta.

VPN

Esto se realiza a través de una VPN (Virtual Private Network) o red privada virtual. Se le dice virtual porque usa la misma conexión de Internet, no una conexión propia con cables propios sino un programa que se encarga de realizar la tarea. Y se le dice privada porque solamente quienes conozcan las contraseñas podrán conectarse a esta red y la información siempre viajará encriptada, por lo cual aunque sea interceptada no hay riesgo de que sea fácilmente leída.

Dos programas que se usan mucho para crear y usar los túneles son ZebeDee y OpenVPN, cuyos enlaces son:

http://www.winton.org.uk/zebedee/

http://openvpn.net/

Como los datos viajan encriptados:

  • el riesgo de ser leídos por personas no autorizadas disminuye muchísimo
  • el viaje es más rápido porque la cantidad de datos que viajan es menor

Conclusión:

Si tu Base de Datos será accedida desde Internet debes protegerla con una VPN (red privada virtual) o de lo contrario estará muy expuesta a ser atacada por los hackers. Y aunque tú creas que no hay en ella nada importante los hackers podrían destruirla y corromperla o llenarla de basura con todos los perjuicios que dichas acciones causarían (podrían hacer eso sólo por maldad, porque quieren y pueden hacerlo). Usando una VPN obtendrás dos beneficios: que el riesgo de ser atacada disminuya muchísimo y que las velocidades de las operaciones aumenten mucho.

La gran mayoría de los hackers desiste de atacar las computadoras o bases de datos que están muy protegidas, salvo que crean que obtener éxito les resultará de mucho provecho. Por lo tanto, cuanto más protejas a tus bases de datos, mucho mejor.

Artículos relacionados:

Usando Zebedee con Firebird

Usando Zebedee con Firebird. Parte 2

El índice del blog Firebird21

Anuncios

Problemas de conexión

8 comentarios

A veces, cuando queremos realizar la conexión a una Base de Datos no podemos lograrlo, los intentos son rechazados.

¿Por qué no podemos conectarnos?

Los motivos pueden ser los siguientes:

  • No tenemos instalado el Servidor del Firebird
  • No se está ejecutando el Servidor del Firebird
  • No tenemos instalado el Cliente del Firebird
  • No tenemos instalado el driver ODBC del Firebird
  • Está registrado GDS32.DLL
  • Escribimos mal el nombre o la ruta de la Base de Datos
  • Escribimos mal el nombre del usuario
  • Escribimos mal la contraseña del usuario
  • La red no está funcionando correctamente
  • El Servidor no se está comunicando por ese puerto
  • El firewall del Windows está bloqueando ese puerto
  • Un programa antivirus está bloqueando ese puerto

No tenemos instalado el Servidor del Firebird

Para verificarlo, en la computadora donde supuestamente está instalado el Servidor del Firebird, hacemos click en:

Inicio | Panel de control

y deberíamos ver un icono llamado “Firebird Server Manager”. Si no lo vemos, el Firebird no está instalado

No se está ejecutando el Servidor del Firebird

Para verificar que el Servidor del Firebird se esté ejecutando:

Inicio | Panel de control

y luego click (o doble click) sobre el icono denominado “Firebird Server Manager”

Si vemos algo como la siguiente captura de pantalla:

Firebird is running

Captura 1. Si haces clic en la imagen la verás más grande

entonces el Servidor del Firebird se está ejecutando correctamente (la palabra “running” significa que está “corriendo”, o sea ejecutándose)

No tenemos instalado el Cliente del Firebird

Para verificarlo hacemos click en:

Inicio | Todos los programas 

y buscamos una carpeta llamada Firebird 2.5

si encontramos dicha carpeta entonces está instalado

ADVERTENCIA: En las computadoras de los usuarios debes instalar solamente el Cliente del Firebird, en esas computadoras no debes instalar el Servidor del Firebird. El Servidor debe ser instalado en una sola computadora, en aquella donde se encontrará la Base de Datos. El Cliente puedes instalarlo también donde se encuentra el .EXE de tu aplicación, eso es lo recomendable.

No tenemos instalado el driver ODBC del Firebird

Para verificarlo hacemos click en:

Inicio | Todos los programas | Firebird

y buscamos una carpeta llamada Firebird 2.5

si encontramos dicha carpeta entonces está instalado

Está registrado GDS32.DLL

El antecesor de Firebird se llama Interbase. Interbase usaba en el Cliente una librería de enlace dinámico llamada GDS32.DLL pero ahora el Firebird utiliza FBCLIENT.DLL

Si GDS32.DLL está registrado eso puede causarle conflictos a FBCLIENT.DLL, por lo tanto la solución es des-registrarlo y eso lo hacemos con:

Inicio

(y donde dice: “Buscar programas y archivos” escribimos):

REGSVR32 /u RutaDeAcceso\GDS32.DLL

Por ejemplo:

REGSVR32 /u C:\MisSistemas\Librerias\GDS32.DLL

Escribimos mal el nombre o la ruta de la Base de Datos

Si el nombre de nuestra Base de Datos es CONTA.FDB pero cuando quisimos conectarnos escribimos COMTA.GBF por supuesto que no lo conseguiremos. Siempre debemos verificar que el nombre esté correctamente escrito.

Si no usamos un alias (que se puede especificar en el archivo ALIASES.CONF) entonces también debemos verificar que la ruta sea la correcta. Por ejemplo si la ruta correcta es:

C:\MisDatos\BasesDatos\

y lo que escribimos fue:

C:\NuestrosDatos\Archivos\

por supuesto que no podremos conectarnos

Escribimos mal el nombre del usuario

El nombre del usuario debe estar correctamente escrito (no importan las mayúsculas ni las minúsculas). Por ejemplo si el usuario es:

VERONICA

pero al intentar conectarnos escribimos:

VERONISA

tampoco conseguiremos la conexión

Escribimos mal la contraseña del usuario

Si la contraseña es:

12345678

y lo que escribimos fue:

12345644

tampoco tendremos éxito

La red no está funcionando correctamente

Para comprobar que la computadora donde se encuentra el Cliente puede comunicarse con la computadora donde se encuentra el Servidor puedes abrir la ventanita “Símbolo del sistema” y luego escribir el comando PING seguido del número de IP de la computadora donde se encuentra el Servidor, como se ve a continuación:

PING

Captura 2. Si haces clic en la imagen la verás más grande

si no conoces cual es la dirección IP de la computadora donde se encuentra el Servidor puedes averiguarlo abriendo la ventanita “Símbolo del sistema” y escribiendo IPCONFIG, tal como se muestra en esta captura:

IPCONFIG

Captura 3. Si haces clic en la imagen la verás más grande

En este ejemplo la dirección IP es 192.168.0.2 pero por supuesto que en tu caso puede variar aunque si está en una red local siempre empezará con 192.168

Si el comando PING te dice:

PING-ERROR

Captura 4. Si haces clic en la imagen la verás más grande

que el 100% de los paquetes están perdidos entonces evidentemente ambas computadoras no están pudiendo comunicarse y en ese caso deberías buscar el motivo (cable suelto, router en mal estado, tarjeta de red dañada, cable roto, etc.)

El Servidor no se está comunicando por ese puerto

El Servidor del Firebird utiliza el puerto 3050 (por defecto, puede cambiarse si de lo desea) para comunicarse con el Cliente. Muchas veces, por seguridad o porque hay otra versión del Firebird instalada, se configura al Firebird para que lea otro puerto (eso se hace en la entrada RemoteServicePort del archivo FIREBIRD.CONF que se encuentra en la carpeta donde instalaste el Firebird).

Por ejemplo, en el archivo FIREBIRD.CONF podría haberse escrito:

RemoteServicePort = 3099

lo cual tendrá por efecto que el Servidor leerá el puerto 3099 (no el puerto 3050) para comunicarse con el Cliente. Si se cambia el puerto por defecto (o sea, si la entrada RemoteServicePort tiene cualquier número que sea distinto a 3050) entonces cuando queremos conectarnos a una Base de Datos deberemos especificar sí o sí el número del puerto en el string de conexión, por ejemplo:

CONNECT 192.168.0.2/3099:C:\MisBasesDatos\Contabilidad.fdb USER SYSDBA PASSWORD masterkey;

En otras palabras, si en RemoteServicePort hay cualquier número que no sea 3050 para conectarte a la Base de Datos tendrás que escribir ese número, tal como se muestra arriba.

El firewall del Windows está bloqueando ese puerto

Por defecto, el firewall del Windows lo tendrá bloqueado al puerto 3050 (y muy posiblemente a cualquier otro puerto que se haya especificado en RemoteServicePort) así que si el firewall del Windows está activo tendrás que liberar a dicho puerto. ¿Por qué? porque si no lo liberas te resultará imposible comunicarte con el Servidor del Firebird y por lo tanto tampoco podrás conectarte a tu Base de Datos.

Para liberar un puerto (para entrada) en el Firewall del Windows:

    • Inicio
    • Panel de control
    • Firewall de Windows
    • Configuración avanzada
    • Reglas de entrada
    • Nueva regla …
    • Puerto
    • Siguiente
    • ¿Se aplica esta regla a TCP o UDP? elegir TCP
    • Puertos locales específicos: escribir 3050 (o el número de puerto que deseas liberar)
    • Siguiente
    • Permitir la conexión
    • Siguiente
    • Marcar: Dominio, Privado, Público
    • Siguiente
    • En Nombre: asignarle un nombre a esta regla, por ejemplo: Firebird3050 (si el puerto liberado fue el 3050)
    • Finalizar

Un programa antivirus está bloqueando ese puerto

Algunos antivirus también actúan como firewall y en tales casos bloquean a la gran mayoría de los puertos de la computadora donde están instalados. Si la computadora del Servidor tiene uno de esos antivirus entonces deberás configurarlo para que libere al puerto 3050 (o al puerto que el Servidor del Firebird esté utilizando.

Artículos relacionados:

El índice del blog Firebird21

El foro del blog Firebird21

 

 

 

Aumentando la seguridad con ALIASES.CONF

14 comentarios

En la carpeta donde instalaste el Firebird (por ejemplo en C:\ARCHIVOS DE PROGRAMA\FIREBIRD\FIREBIRD_2_5) encontrarás un archivo cuyo nombre es ALIASES.CONF

¿Para qué sirve el archivo ALIASES.CONF?

Para que les des un nombre abreviado a tus bases de datos y con eso conseguirás dos cosas:

  • Escribir menos cuando quieras conectarte a una Base de Datos
  • Aumentar la seguridad

¿Cómo especifico cuál será el alias de mi Base de Datos?

Abres el archivo ALIASES.CONF y escribes el nombre del alias, un símbolo igual y la ruta y el nombre completos de tu Base de Datos, por ejemplo:

CONTA=C:\MisBasesDatos\Contabilidad.fdb

Escribir menos cuando quieras conectarte a una Base de Datos

Como tu Base de Datos tiene un alias (es decir: un apodo, un sobrenombre, un nombre alternativo) entonces el Firebird puede usar ese alias para la conexión, por ejemplo:

CONNECT CONTA USER SYSDBA PASSWORD masterkey;

En cambio, si no usas un alias tendrías que escribir:

CONNECT C:\MisBasesDatos\Contabilidad.fdb USER SYSDBA PASSWORD masterkey;

Como puedes ver, se escribió mucho menos al usar un alias y además es más fácil recordar una sola palabra (en este caso: CONTA) que toda la ruta y el nombre de la Base de Datos (en este caso: C:\MisBasesDatos\Contabilidad.fdb)

Aumentar la seguridad

Al usar un alias también aumentas la seguridad de los datos, sobre todo si lo combinas con la entrada DatabaseAccess, tal como puedes leer en este artículo:

https://firebird21.wordpress.com/2013/04/25/restringiendo-el-acceso-a-las-bases-de-datos/

Si alguien quiere atacar tu Base de Datos y lo único que sabe de ella es que se llama CONTA (por ejemplo, claro) pero no tiene la menor idea de donde se encuentra le resultará mucho más difícil que si sabe que se llama Contabilidad.fdb y que se encuentra en la carpeta C:\MisBasesDatos\

Al usar un alias (CONTA, en este ejemplo) le das muy poca información y le complicas la vida al atacante. Y muchísimo más se la complicarías si en lugar de llamar a tu alias CONTA lo llamaras de forma mucho menos informativa como por ejemplo: XDFDRT

(Encontrar algo así le puede dar un ataque cerebral a cualquier atacante)

Conclusión

Que tus bases de datos tengan alias es muy bueno porque te permite escribir menos y aumentar la seguridad. El Firebird te da esa posibilidad, por algo está allí, deberías usarla.

Artículos relacionados:

El índice del blog Firebird21

El foro del blog Firebird21

Restringiendo el acceso a las Bases de Datos

4 comentarios

Cuando se instala el Servidor del Firebird por defecto permite que las bases de datos se encuentren en cualquier carpeta de cualquier disco que esté conectado a esa computadora.

Aunque esto les facilita la tarea a los programadores (porque pueden crear o copiar sus bases de datos en cualquier carpeta que deseen) tiene un potencial y grave riesgo de seguridad: ese mismo Servidor podría estar siendo usado para conectarse a otras bases de datos de esa computadora.

Afortunadamente, nosotros podemos restringir a cuales carpetas o a cuales bases de datos el Servidor permitirá que los usuarios se conecten.

En el archivo FIREBIRD.CONF que se encuentra en la carpeta donde instalaste el Firebird (por ejemplo en: C:\ARCHIVOS DE PROGRAMA\FIREBIRD\FIREBIRD_2_5) hay una entrada denominada DatabaseAccess

DatabaseAccess puede ser:

  • None
  • Restrict
  • Full

Si es None entonces el Servidor solamente permitirá la conexión a las bases de datos listadas en el archivo ALIASES.CONF (que también se encuentra en la misma carpeta donde instalaste el Firebird)

Si es Restrict entonces el Servidor solamente permitirá conectarse a las bases de datos que se encuentren en la/s carpeta/s listada/s a continuación (separadas por punto y coma si hay más de una)

Si es Full entonces el Servidor permitirá conectarse a cualquier base de datos que se encuentre en cualquier carpeta de cualquier disco duro de esa computadora

Ejemplos:

DatabaseAccess = None

DatabaseAccess = Restrict C:\MisBasesDatos

DatabaseAccess = Restrict C:\MisBasesDatos;D:\MisBackups

DatabaseAccess = Full

En el primer ejemplo, como el acceso es None el Servidor solamente permitirá que los usuarios se conecten a las bases de datos listadas en el archivo ALIASES.CONF

En el segundo ejemplo, como el acceso es Restrict el Servidor solamente permitirá conectarse a las bases de datos que se encuentren en la carpeta C:\MisBasesDatos

En el tercer ejemplo, como el acceso es Restrict el Servidor solamente permitirá conectarse a las bases de datos que se encuentren en las carpetas C:\MisBasesDatos o D:\MisBackups (los nombres de las carpetas fueron separados con un punto y coma)

En el cuarto ejemplo, como el acceso es Full el Servidor permitirá conectarse a cualquier base de datos que se encuentre en cualquier carpeta de cualquier disco duro de la computadora

NOTA: Fíjate que se quitó el símbolo de numeral (#) que se encontraba delante de la palabra DatabaseAccess, eso es porque el símbolo de numeral (#) le indica al Firebird que lo que está a continuación es un comentario.

Conclusión

Para tener mayor seguridad y disminuir la probabilidad de ataques maliciosos debemos restringir el acceso a las bases de datos. Lo recomendable es que el valor de la entrada DatabaseAccess sea None lo cual nos asegurará que solamente a las bases de datos listadas en el archivo ALIASES.CONF los usuarios puedan conectarse. Si por algún motivo eso no es admisible entonces el acceso debería ser Restrict pero nunca deberíamos dejarlo en Full.

NOTA: Cualquier cambio que realices en el archivo FIREBIRD.CONF solamente tendrá efecto después que reinicies el Servidor del Firebird o reinicies la computadora donde se encuentra el Servidor del Firebird.

Usando un disco RAM para aumentar la velocidad

2 comentarios

A veces necesitamos que se acelere la velocidad con la cual se realizan operaciones en nuestra Base de Datos, sobre todo cuando se accede a ella mediante Internet. Una de las opciones que tenemos para conseguirlo es a través de un disco RAM.

¿Qué es un disco RAM?

Es una parte de la memoria RAM de la computadora que se usa como si fuera un dispositivo de almacenamiento (disco duro, pen-drive, etc.)

¿Por qué usar un disco RAM?

Un disco RAM a todos los efectos funciona como si fuera una memoria externa (disco duro, pen-drive, etc.) pero utilizando parte de la memoria RAM de la computadora. Eso significa que los datos y los archivos no se grabarán ni en el disco duro ni en el pen-drive sino en la memoria RAM pero para el Sistema Operativo y para todos los otros programas será como si se hubieran grabado en un disco duro o en un pen-drive.

La gran ventaja de usar un disco RAM es la gran velocidad que se consigue en todas las operaciones. Si está bien configurado, en muchos casos se consigue acelerarlas hasta en 40 veces, lo cual hace una diferencia increíblemente notoria. ¿Por qué eso? porque la memoria RAM es muchísimo más rápida que la memoria externa (disco duro, pen-drive, etc.)

¿Cuáles son las desventajas de usar un disco RAM?

No todo es bueno, también hay un problema potencial y es el siguiente: si se apaga o se reinicia la computadora todo el contenido del disco RAM se perderá.

Eso es debido a que el disco RAM, tal como su nombre lo indica, se encuentra en la memoria RAM y si el contenido de ésta se pierde (lo cual siempre sucede cuando se reinicia o se apaga la computadora) todo lo que estaba en el disco RAM desaparecerá para siempre. Lo anterior implica que si vas a usar un disco RAM sí o sí deberás tener también una UPS (unidad de corriente ininterrumpida) confiable conectada a tu computadora. Usar un disco RAM sin una UPS en buen estado es una locura, una idiotez.

Otra desventaja es que evidentemente la memoria RAM de tu computadora disponible para los programas disminuye en el  tamaño que le asignaste a tu disco RAM. Por ejemplo, si tu computadora tiene 4 Gigabytes de RAM y al disco RAM le asignaste 1 Gigabyte de RAM, los demás programas (el Sistema Operativo y todos los demás) solamente tendrán 3 Gigabytes disponibles.

¿Cuándo debería usar un disco RAM?

  1. Cuando tienes una necesidad imperiosa de acelerar las operaciones con tu Base de Datos
  2. Cuando tienes una buena y confiable UPS conectada a tu computadora
  3. Cuando tienes bastante memoria RAM para que usar una parte de la misma como disco RAM no afecte a los demás programas

Si alguno de esos puntos no se cumple, no uses un disco RAM

¿Cómo hago para crear un disco RAM?

Existen varios programas que realizan esa tarea, por ejemplo este es el que yo utilizo:

http://memory.dataram.com/products-and-services/software/ramdisk

tiene una versión freeware que permite almacenar hasta 4 Gigabytes lo cual es más que suficiente para la mayoría de las Bases de Datos que no guardan contenido multimedia. Además, puede automáticamente guardar el contenido del disco RAM en un archivo y restaurarlo cuando se reinicia la computadora lo cual a todos los efectos funciona como si se tuviera otro disco duro.

¿Cómo funciona un disco RAM?

Exactamente igual que un disco duro o pen-drive. Después de instalar el disco RAM tendrás una nueva letra de unidad (por ejemplo: F:, G:, H:, etc.) en la cual podrás copiar, borrar, o renombrar archivos, tal como lo harías en la unidad C:

¿Qué debo guardar en el disco RAM?

Siempre recordando que esto se aplica a Firebird:

  • Podrías guardar los archivos temporales

En el archivo FIREBIRD.CONF que se encuentra en la carpeta donde instalaste el Firebird (por ejemplo en: C:\ARCHIVOS DE PROGRAMA\FIREBIRD\FIREBIRD_2_5) puedes especificar en cual carpeta (directorio) se guardarán los archivos temporales. Para ello busca la etiqueta

#TempDirectories =

bórrale el símbolo de numeral y especifica cual será la carpeta temporal, por ejemplo si tu disco RAM se encuentra en la unidad G: tendrías que escribir:

TempDirectories = G:

Haciendo así, todos los archivos temporales del Firebird (usa archivos temporales para reordenar, para backups y restores y para otras operaciones) se encontrarán en el disco RAM y el incremento en la velocidad será muy notorio.

NOTA: Para que los cambios realizados en el archivo FIREBIRD.CONF tengan efecto deberás reiniciar el Servidor del Firebird (o reiniciar la computadora donde se encuentra el Servidor del Firebird).

 

Diferencias entre SuperServer, Classic y SuperClassic

8 comentarios

Cuando se instala el Firebird tenemos la opción de elegir la arquitectura:

  • Classic
  • SuperClassic
  • SuperServer

¿Por qué hay varias arquitecturas?

Porque difieren en como manejan las conexiones múltiples (porque Firebird, aunque puede ser usado en aplicaciones mono-usuario fue creado para ser usado mayormente en aplicaciones multi-usuario), y esa diferencia se refleja en el consumo de memoria RAM.

¿Hay una arquitectura que es mejor en todos los casos?

No, si la hubiera, esa sería la única que existiría. ¿Para qué tener varias arquitecturas si una de ellas le superara en todo a las demás? No tendría sentido. Por lo tanto, el hecho de existir varias arquitecturas significa que cada una de ellas es mejor que las otras en alguna tarea.

¿Cuál arquitectura debo elegir?

La elección depende de la computadora, del Sistema Operativo y de la cantidad de usuarios que se conectarán al mismo tiempo (en Informática se dice: concurrentemente) a la Base de Datos.

En Windows, hasta unos 25 usuarios puedes instalar SuperServer, funcionará bien. En Linux, cualquiera. Si tu computadora es de 64 bits, SuperClassic puede ser la mejor elección (instalando la versión de 64 bits, por supuesto); pero si es de 32 bits SuperClassic será el primero que se quedará sin memoria.

¿Elegir alguna de esas arquitecturas afectará a las bases de datos o a las aplicaciones?

No, las bases de datos continuarán exactamente igual sea cual sea la arquitectura elegida, nada cambiará dentro de ellas y nada debes modificar. Las bases de datos no saben con cual arquitectura estás accediendo a ellas. Igualmente, nada debes cambiar dentro de tus aplicaciones. Los que cambian son los servidores, no las bases de datos.

¿Qué implica elegir una de esas arquitecturas?

Procesos:

    • Classic usa un proceso separado (único) para cada conexión
    • SuperClassic usa un solo proceso para todas las conexiones
    • SuperServer usa un solo proceso para todas las conexiones

¿Qué ocurrirá si hay un problema grave en un proceso? si usas Classic, los demás procesos no se verán afectados; en cambio si usas SuperClassic o SuperServer finalizarán todas las conexiones, con todas las nefastas consecuencias que te puedas imaginar. Por lo tanto, desde este punto de vista lo mejor sería que uses Classic.

Guardian:

    • Classic no usa al Guardian
    • SuperClassic puede usar al Guardian en Linux pero no en Windows
    • SuperServer sí puede correr bajo el control del Guardian

¿Para qué sirve el Guardian? Para reiniciar el Servidor automáticamente en el caso de una falla grave. Desde este punto de vista, el mejor es SuperServer.

Recursos:

    • Classic usa más recursos (más memoria RAM) que las demás arquitecturas porque cada conexión requiere de memoria RAM para el proceso y para la memoria cache
    • SuperClassic necesita más memoria RAM cuando hay más usuarios conectados porque cada conexión requiere de memoria cache
    • SuperServer usa siempre la misma cantidad de memoria RAM, sin importar la cantidad de conexiones

Cada conexión en Classic requiere de una “X” cantidad de memoria RAM (por defecto: 300 kilobytes), eso significa que si la cantidad de conexiones se incrementa también lo hará la memoria RAM consumida. En cambio SuperServer usa siempre la misma cantidad de memoria RAM, sin importar cuantos usuarios estén conectados. Desde este punto de vista, SuperServer es mejor.

Conexiones locales:

    • En Linux, Classic y SuperClassic ofrecen un modo “embedded” que es muy rápido aunque poco seguro en cuanto al acceso
    • En Windows, en un solo archivo se tienen el Servidor y el Cliente “embedded”, el cual es aún más inseguro en cuanto al acceso

¿Por qué usar una conexión local? Porque eso nos permite tener en un CD, DVD, pen-drive u otro dispositivo removible nuestra aplicación y nuestra Base de Datos, lo cual lo hace muy útil para programas de catálogo, programas de demostración, etc. O sea que en un pen-drive podríamos tener todo lo que necesitemos sin necesidad de instalar algo en las computadoras ajenas, de nuestros potenciales clientes.

Conexiones simultáneas:

    • Classic permite conexiones simultáneas a una Base de Datos desde un Servidor normal y desde uno o más servidores “embedded”
    • SuperClassic permite conexiones simultáneas a una Base de Datos desde un Servidor normal y desde uno o más servidores “embedded”
    • SuperServer no permite conexiones simultáneas a una Base de Datos desde un servidor normal y uno o más servidores “embedded”

Esto significa que puede ser ventajoso que tu Servidor normal sea Classic o SuperClassic si simultáneamente necesitas conectarte a la Base de Datos desde un servidor “embedded”

Multiprocesamiento:

    • Todas las arquitecturas (exceptuando SuperServer en Windows) ya están preparadas por defecto para usar todos los procesadores o cores de las computadoras
    • SuperServer en Windows por defecto usa solamente el primer procesador o core. Para que use más procesadores se debe modificar el parámetro CpuAffinityMask en el archivo FIREBIRD.CONF

Fuera de memoria:

    • Classic usa más memoria RAM que las otras arquitecturas cuando la cantidad de conexiones se incrementa. Cada conexión usará (por defecto) 300 Kilobytes
    • En 32 bits SuperClassic será el primero en quedarse sin memoria
    • El consumo de memoria por SuperServer es fijo, sin importar la cantidad de usuarios conectados. Por defecto esa cantidad es de 8 Megabytes

Por lo tanto, si habrá hasta 25 usuarios conectados suele ser preferible usar SuperServer pero cuando la cantidad de usuarios conectados sea mayor Classic será una mejor elección en 32 bits y SuperClassic en 64 bits.

Problema con operaciones intensivas:

    • Classic no tiene problemas con las operaciones intensivas
    • Supper Classic y SuperServer pueden encontrarse con un “cuello de botella” si una transacción está teniendo mucho tráfico en la red (por ejemplo un SELECT que trae millones de filas)

Un SELECT que traiga más de 100 filas con seguridad está mal diseñado pero a veces esos errores de diseño ocurren. En tal caso dicho SELECT estará consumiendo demasiados recursos y si se está usando SuperClassic o SuperServer todas las demás transacciones se verán afectadas. Dicho problema también podría ocurrir si se están haciendo inserciones masivas (por ejemplo, migrando todo el contenido de  una tabla .DBF en una tabla de Firebird)

Para estos casos, Classic es el mejor.

Unos gráficos explicativos

Dicen que un gráfico es mejor que mil palabras, así que espero que estos gráficos te ayuden a entender mejor todo lo anterior

ClassicServerDiagram(1)

SuperClassicDiagram

SuperServerDiagram

Como puedes ver, Classic ejecuta un proceso (una instancia del programa FBSERVER.EXE) para cada conexión. Tambien la memoria cache utilizada aumenta con cada conexión (si hay una conexión se usará “X” memoria, pero si hay dos conexiones se usará “2X” memoria, si hay tres conexiones se usará “3X” memoria y así sucesivamente).

SuperClassic y SuperServer usan un solo proceso (una sola instancia del programa FBSERVER.EXE) sin importar cuantos usuarios estén conectados. Pero el consumo de memoria cache es distinto: mientras que SuperClassic aumenta la memoria cache junto con la cantidad de usuarios, SuperServer no lo hace así: la memoria cache utilizada es siempre la misma, sin importar cuantos usuarios estén conectados.

Conclusión:

La arquitectura elegida puede afectar grandemente el rendimiento o desempeño de tus aplicaciones. Como elegir una arquitectura u otra no afectará a las bases de datos lo más conveniente suele ser el viejo método informático de “prueba y error”. Pruebas con una, si no te satisface pruebas con otra y si tampoco te satisface pruebas con la tercera. En otro artículo explicaré como cambiar el tamaño de la memoria cache y otros parámetros que afectan al rendimiento y desempeño de las aplicaciones. Mediante ellos podrás conseguir mayor velocidad en todas las operaciones.

.

Agregando, modificando y borrando usuarios

22 comentarios

En Firebird solamente pueden conectarse a una Base de Datos y realizar operaciones en esa Base de Datos (insertar/borrar/modificar/consultar) las personas a quienes específicamente se les permite hacerlo. Si a una persona no se le otorgó el derecho de conectarse, no podrá conectarse. La forma de determinar quien puede y quien no puede conectarse a una Base de Datos es a través de dos parámetros:

  • Nombre del usuario
  • Contraseña del usuario

Para agregar, borrar, modificar y listar los usuarios se puede hacer de dos formas: usando el programa GSEC.EXE o sin usar el programa GSEC.EXE

Usando el programa GSEC.EXE

El programa GSEC.EXE se encuentra en la subcarpeta \BIN\ de la carpeta donde instalaste el Firebird, por ejemplo en la carpeta C:\ARCHIVOS DE PROGRAMA\FIREBIRD\FIREBIRD_2_5\BIN\

Debes abrir la ventana “Símbolo del sistema” y luego ubicarte en la subcarpeta \BIN\ escribiendo allí GSEC, tal como se ve en esta captura de pantalla:

GSEC1

Captura 1. Si haces clic en la imagen la verás más grande

Para agregar un nuevo usuario, debes escribir la palabra ADD, el nombre del usuario que deseas agregar y su contraseña, por ejemplo para agregarla a ‘FATIMA’ con contraseña ‘123456’, escribirías:

GSEC2Captura 2. Si haces clic en la imagen la verás más grande

Si deseas ver los nombres de todos los usuarios habilitados lo puedes hacer con el comando DISPLAY, tal como se ve aquí.

GSEC3

Captura 3. Si haces clic en la imagen la verás más grande

Como puedes ver, hay solamente dos usuarios habilitados: SYSDBA y FATIMA. El usuario SYSDBA siempre existe, puedes cambiar su contraseña si lo deseas pero no su nombre.

Para cambiar la contraseña de un usuario usas el comando MODIFY:

GSEC4

Captura 4. Si haces clic en la imagen la verás más grande

Aquí, se cambió la contraseña de FATIMA, desde este momento su contraseña es BONITA, la contraseña que tenía anteriormente ya no puede ser usada. A partir de este momento para conectarse a la Base de Datos deberá hacerlo con nombre = FATIMA y con contraseña = BONITA

Para borrar a un usuario:

Si por algún motivo deseas borrar (eliminar) a un usuario para que nunca más pueda conectarse a la Base de Datos, entonces en el programa GSEC.EXE debes escribir la palabra DEL y a continuación el nombre del usuario que deseas borrar, como puedes ver en la siguiente captura de pantalla:

GSEC5

Captura 5. Si haces clic en la imagen la verás más grande

Al eliminar a un usuario se impide que pueda conectarse a la Base de Datos. En este ejemplo a FATIMA se la eliminó de la lista de usuarios habilitados y por lo tanto ya no podrá conectarse a la Base de Datos con ese nombre.

Agregando usuarios sin usar GSEC.EXE

Lo bueno o malo de agregar usuarios con el programa GSEC.EXE (dependiendo del punto de vista y de las circunstancias) es que dichos usuarios podrán conectarse a cualquier Base de Datos. Esto puede ser malo cuando se tienen varias bases de datos en una computadora y no se quiere o necesita que algunos usuarios se conecten a algunas de ellas.

Desde Firebird 2.5 hay una forma de establecer que un usuario se conecte solamente a la Base de Datos en la cual se lo agregó. Para que pueda conectarse a dos (o más) bases de datos entonces habrá que agregarlo individualmente a esas dos (o más) bases de datos. El usuario que puede agregar nuevos usuarios es SYSDBA o cualquier otro usuario que tenga el rol RDB$ADMIN. La forma de hacerlo es la siguiente:

1. Te conectas a la Base de Datos como SYSDBA o como un usuario que tiene el rol RDB$ADMIN

2. Escribes el comando:

CREATE USER NombreUsuario PASSWORD ‘Contraseña’ [FIRSTNAME ‘PrimerNombre’] [MIDDLENAME ‘SegundoNombre’] [LASTNAME ‘Apellido’];

Ejemplos:

CREATE USER Fatima PASSWORD ‘123123’;

 CREATE USER MKenny PASSWORD ‘MMK12345’ FIRSTNAME ‘Maria’ MIDDLENAME ‘Marcela’ LASTNAME ‘Kenny’;

Para cambiar los datos de un usuario:

ALTER USER NombreUsuario [SET] [PASSWORD ‘Contraseña’] [FIRSTNAME ‘PrimerNombre’] [MIDDLENAME ‘SegundoNombre’] [LASTNAME ‘Apellido’];

Al menos uno de PASSWORD / FIRSTNAME / MIDDLENAME / LASTNAME es requerido cuando se usa ALTER USER

Ejemplo:

ALTER USER Fatima SET PASSWORD ‘Walter’;

El usuario SYSDBA puede modificar los datos de cualquier usuario. Los demás usuarios solamente pueden cambiar sus propios datos.

Para borrar los datos de un usuario:

DROP USER NombreUsuario;

Ejemplo:

DROP USER MKenny;

IMPORTANTE: No puedes utilizar ni vocales acentuadas ni eñes, esos caracteres no están permitidos.

Artículos relacionados:

El índice del blog Firebird21

El foro del blog Firebird21

 

Older Entries Newer Entries