Documentos de Académico
Documentos de Profesional
Documentos de Cultura
1 Centro de Estudios Sociopolíticos y de Opinión, Cuba, jessica@op.cc.cu, San Sebastián #5 e/ Corralfalso y Aparación.
Guanabacoa, La Habana, Cuba.
2 Centro de Estudios Sociopolíticos y de Opinión, Cuba, lien@op.cc.cu, Cocos #143 apto. 10 e/ Rabí y General Lee. Diez de
Octubre, La Habana, Cuba.
ABSTRACT: Estudios's Center Sociopolitical and of Opinión finds itself immersed in development and techno-
logical advance, due to it, the center has computerized one part of its processes, as the capture of spontaneous
opinions generated by all around the country. Nowadays exists the prevailing need that the information con-
tained in the database keep safe, obeying requirements such like the integrity and confidentiality. What one be-
comes necessary to implement mechanisms of certainty that restrict the access to not authorized people's in-
formation. The present investigative work describes how guarantee the security of the data, using SSL protocol,
creating roles, views and assigning levels of privileges. As a result, it got a system of data base safe and relia-
ble.
| IN ROLE nombre_rol [, ...] rio para que solamente pueda acceder a los datos a
través de vistas, en lugar de concederle permisos
| IN GROUP nombre_rol [, ...]
para acceder a ciertos campos, así se protegen las
| ROLE nombre_rol [, ...] tablas base de cambios en su estructura.
| ADMIN nombre_rol [, ...]
La sintaxis básica para crear una vista es la si-
| USER nombre_rol [, ...]
guiente:
| SYSID uid
Es importante conocer que si se emplea la senten- CREATE OR REPLACE VIEW nombre_vista AS
cia CREATE USER nombre ya el usuario tendrá la sentencias select
opción de login por defecto, mientras que con el
FROM tabla;
comando CREATE ROLE sí se debe especificar.
d. Seguridad por filas
Una vez creado un rol, puede ser modificado o
eliminado con los comandos ALTER ROLE nom- Las tablas pueden tener políticas de seguridad de
bre y DROP ROLE nombre respectivamente. filas que restringen, por usuario, qué filas pueden
ser devueltas una vez realizada una inserción, mo-
b. Gestión de privilegios dificación o eliminación. [10]
Se le llama privilegio al conjunto de acciones que Para crear una política de seguridad se emplea la
los usuarios pueden realizar sobre cada objeto de sentencia:
la base de datos (tablas, columnas, vistas, funcio-
nes, trigger, entre otros). El comando GRANT brin- CREATE POLICY nombre ON nombre_tabla
da privilegios sobre objetos de una base de datos a [ FOR { ALL | SELECT | INSERT | UPDATE |
uno o más roles. La sentencia para administrar DELETE } ] [ TO { <nombre_rol | PUBLIC | CUR-
privilegios es la siguiente: [8]. RENT_USER | SESSION_USER } [, ...] ] [ USING (
expression_booleana> ) ] [ WITH CHECK ( expres-
GRANT { { SELECT | INSERT | UPDATE | DELETE sion_booleana) ]
| TRUNCATE | REFERENCES | TRIGGER | CRE-
ATE | CONNECT | TEMPORARY | TEMP} | ALL [ Si es necesario modificar o eliminar una política
PRIVILEGES ] } creada se emplean los comandos ALTER POLICY
y DROP POLICY respectivamente. Para habilitar y
ON { [ TABLE ] nombre_tabla [, ...] | ALL TABLES deshabilitar la seguridad de fila para una tabla de-
IN SCHEMA nombre_esquema [, ...] } terminada, se utiliza el comando ALTER TABLE
TO { [ GROUP ] nombre_rol | PUBLIC } [, ...] [ WITH nombre_tabla ENABLE/DISABLE ROW SECU-
GRANT OPTION ] RITY.
REVOKE [ GRANT OPTION FOR ] 2.3 Resultados y discusión
{ { SELECT | INSERT | UPDATE | DELETE | La base de datos ESTOP está implementada en
TRUNCATE | REFERENCES | TRIGGER } PostgreSQL 9.5 sobre el servidor Debian v7.0
[, ...] | ALL [ PRIVILEGES ] } Wheezy, y su administración es a través del cliente
ON { [ TABLE ] nombre_tabla[, ...] | ALL TABLES IN pgAdminIII v1.22.1 sobre el sistema operativo Win-
SCHEMA nombre_esquema [, ...] } dows 7.
FROM { [ GROUP ] nombre_rol | PUBLIC } [, ...] Para garantizar la seguridad de acceso al siste-
ma fue necesario cifrar el tráfico entre los clientes y
[ CASCADE | RESTRICT ] el servidor y así evitar que la información transferi-
da por la red fuera interceptado u obtenido por per-
c. Definición de vistas para proteger las ta- sonas no autorizadas. Esta característica se logró a
blas través de la autenticación de certificados digitales,
impidiendo que los usuarios que no tengan instala-
Una vista es una estructura lógica que permite vi-
do el certificado correspondiente puedan conectar-
sualizar un grupo de datos que provienen de una o
se al servidor.
varias tablas u otras vistas. Los datos accesibles a
través de la vista no están almacenados en la base PostgreSQL soporta nativamente el uso de cone-
de datos como un objeto [9]. xiones SSL para cifrar las comunicaciones, sólo es
necesario tener instalado OpenSSL en el servidor y
Las vistas permiten:
PostgreSQL compilado con soporte SSL (se consi-
- ocultar información: permitiendo el acceso a gue usando el parametro --with-ssl con ./configure
algunos datos y manteniendo oculto el resto de la antes de compilar).
información que no se incluye en la vista. El usuario
Para generar la llave y los certificados es necesario
solo puede consultar la vista.
ubicarse en el directorio de instalación de Postgres
- simplificar la administración de los permi- (opt/PostgreSQL/9.5/data/)
sos de usuario: permite otorgar permisos al usua-
Creación de un par de claves pública y privada Para garantizar que cada usuario que accederá a la
base de datos se autentique a través de un certifi-
El primer paso para crear un método de comunica-
cado se necesitó generar la llave, un certificado
ción seguro es poseer un par de claves pública y
autofirmado por el servidor y el certificado de con-
privada.
fianza (usuario.key, usuario.crt, root.crt), para ello
openssl genrsa -des3 -out server.key 2048 se ejecutó la sentencia:
Generating RSA private key, 2048 bit long openssl genrsa -des3 -out /tmp/usuario.key 2048
modulus
………………………………………………………………………..++++++ openssl rsa -in /tmp/usuario.key –out /tmp/usuario.
key
……………………………………………….++++++
E is 65537 (0x10001) Es necesario tener en cuenta al crear la solicitud de
Enter pass phrase for server.key:
certificado la opción correspondiente a common
name debe coincidir con el nombre de usuario que
Verifying – Enter pass phrase for serv-
er.key: se conectará en la base de datos.
Cada vez que el servicio que utilice la clave creada openssl req -new -key /tmp/usuario.key -out
sea inicializado, dígase postgresql-9.5, se requerirá /tmp/usuario.csr
una contraseña, por lo que se eliminó dicha clave Una vez creada la solicitud (usuario.csr), debe ser
para facilitar el funcionamiento a través del coman- firmada por la clave del servidor (server.key). por lo
do siguiente: que es necesario ubicarse en el directorio de confi-
openssl rsa -in server.key -out server.key guración de postgres y ejecutar:
Enter pass phrase for server.key: openssl x509 -req -in /tmp/usuario.csr -CA root.crt -
writing RSA key CAkey server.key -out /tmp/usuariol.crt –
Cacreateserial
Creación de un certificado. Al concluir se deben copiar los archivos generados
Es importante destacar que las conexiones que en la máquina del usuario:
acepta el servidor pertenecen a la red interna del C:\Users\nombre_usuario\AppData\Roaming\postgr
Centro, por lo que no fue necesario acudir a una esql.
Autoridad de Certificación (CA) para que firmara el
certificado, sino que se pudo crear un certificado y Una vez configurado el protocolo SSL en el servidor
autofirmarlo como una CA local. Para ello se ejecu- se establecieron los parámetros de los ficheros
tó lo siguiente: postgresql.conf y pg_hba.conf de acuerdo a las
necesidades del centro. A continuación, una mues-
openssl req -new -key server.key -days 730 -out tra de la sección seguridad y autenticación del fi-
server.crt -x509 chero postgresql.conf
You are about to be asked to enter infor-
mation that will be incorporated # - Security and Authentication -
into your certificate request. authentication_timeout = 1min #1s-600s
... ssl = on #(change requires restart)
...
----- password_encryption = on
Country Name (2 letter code) [AU]:CU row_security = on
State or Province Name (full name) [Some-
State]:Habana En la sección de conexiones y autenticación se
Locality Name (eg, city) []:Plaza definió un puerto diferente al que aparece por de-
Organization Name (eg, company) [Internet fecto, las direcciones IP de las máquinas que se
Widgits Pty Ltd]:CESPO conectarán, así como la cantidad máxima de cone-
Organizational Unit Name (eg, section) xiones que admitirá, teniendo en cuenta que solo
[]:Computacion existen 15 puestos destinados para el trabajo con la
Common Name (eg, YOUR name) []:servidor
Email Address []:admin@op.cc.cu base de datos.
#-------------------------------------
Para utilizar el certificado creado como una CA se # CONNECTIONS AND AUTHENTICATION
debe copiar con el nombre de root.crt. #-------------------------------------
# - Connection Settings -
cp server.crt root.crt
Los permisos y dueño de las llaves y certificados listen_addresses = '192.168.5.34,
generados deben ser restringidos: 192.168.5.35'
port = 5445
chmod 400 server.* max_connections = 15
chmod 400 root.crt Luego en el fichero pg_hba.conf se especificaron
chown postgres:postgres server.* las conexiones que son aceptadas por el servidor.
chown postgres:postgres root.crt A continuación, un ejemplo de los usuarios y hosts
que tienen acceso.