Está en la página 1de 13

SERVICIO DE APRENDIZAJE - SENA

NACIONAL EN GESTIÓN Y SEGURIDAD DE


ESPECIALIZACIÓN BASES DATOS
TE

CARACTERISTICAS Y FUNCIONES DE SEGURIDAD DEL


SMBD SELECCIONADO
Características y Funciones de Seguridad de PostgreSQL
11.
AP06 - AA11 -
EV1

Margarita Támara
Rincón

Aprendíz

lng. Candelaria Victoria Suárez


Beleño lng. Belkis Milena Güell
Muñoz

lng. Adriana Cristina Castilla


López

Instructores

SERVICIO NACIONAL DE APRENDIZAJE -

SENA GESTION Y SEGURIDAD DE BASE DE

DATOS ESPECIALIZACIÓN TECNOLÓGICA


FICHA 1881789

2019
INTRODUCCION

Hoy en día existe la necesidad imperante de que la información contenida en su


base de datos se mantenga segura, cumpliendo requisitos tales como la integridad
y confidencialidad.

Por lo que se hace necesario implementar mecanismos de seguridad que


restrinjan el acceso a la información de personas no autorizadas. El presente
trabajo describe los elementos que permiten garantizar la seguridad de los
datos en el SMBD PostgreSQL, como es el uso del protocolo SSL, la creación de
roles, vistas y asignación de niveles de privilegios.

El desarrollo de la industria del software y el aumento de la competencia en el


mercado exige como requisito fundamental para las aplicaciones informáticas la
presencia de altos niveles de seguridad. En las organizaciones es importante
adoptar medidas orientadas a prevenir acciones que pongan en riesgo la
confidencialidad e integridad de la información que se maneja.
1. CARACTERISTICAS DE POSTGRESQL

PostgreSQL es unos de los sistemas de gestión de bases de datos


relacionales más usados en la actualidad. Está orientado objetos, es
multisistema, por tanto se puede usar en cualquier sistema operativo y bajo
licencia libre.

Está desarrollado desde 1996 por una comunidad de desarrolladores (no


una empresa ni fundación) a partir del SGBD POSGRES, que surgió (como
muchas otras tecnologías) a partir de un proyecto de investigación militar
estadounidense (DARPA, ARO) con participación civil.

Las características más importantes de PostgreSQL son las


siguientes:

};,, El lenguaje SOL que usa es muy próximo al estándar ISO/IEC, gracias a
lo que resulta relativamente sencillo portar consultas y scripts de
otros sistemas de bases de datos, y así aprender fácilmente las variantes
de este lenguaje.
};,, Cumple con AGIO, es decir provee atomicidad, consistencia, aislamiento
y durabilidad para sus operaciones.
};,, Permite crear esquemas, tablas heredadas y triggers orientados a
eventos que no poseen otros motores.
};,, Permite definir procedimientos, no solo en PostgreSQL, sino también
en otros muchos lenguajes como Pearl, TCL o Python. Incluso si el
lenguaje que desea usar no está soportado, puede definirlo con nuevas
extensiones.
};,, Si necesita algún tipo de dato que no esté soportado de serie,
también puede definirlo.
};,, Puede extender la funcionalidad con extensiones, provistas por el
propio
PostgreSQL, por terceros o incluso programando por cuenta propia.
};,, Tiene un soporte nativo de replicación maestro-esclavo, pero también
es posible añadir otros tipos a través de productos de terceros, libres
o de pago.
};,, También provee una excelente escalabilidad vertical.
2. SEGURIDAD DE BASES DE DATOS EN POSTGRESQL

La seguridad de los datos implica protegerlos de acciones indebidas que


pongan en peligro su definición, existencia, consistencia e integridad
independientemente de la persona que los accede.

La seguridad de una base de datos se refiere a la protección de la información


contra el acceso por parte de las personas no autorizadas y la indebida
destrucción o alteración. Es un componente fundamental de la estrategia global en
materia de seguridad informática, y es muy importante como para quedarse con
las configuraciones por defecto.

Para mantener la seguridad en una base de datos, deben cumplirse requisitos


tales como:

Confidencialidad: Condición que asegura que la información no pueda estar


disponible o ser descubierta por o para personas, entidades o procesos no
autorizados.

Integridad: Condición que garantiza que la información sólo puede ser


modificada, incluyendo su creación y borrado, por el personal autorizado. El
concepto de integridad significa que el sistema no debe modificar o corromper la
información que almacene, o permitir que alguien no autorizado lo haga.

Para garantizar que se cumplan estos requisitos se definen niveles de seguridad


como:

2.1. SEGURIDAD DE ACCESO AL SISTEMA

Permite definir desde qué equipos se pueden conectar los usuarios a las bases de
datos, así como definir qué usuarios y a qué bases de datos se pueden conectar.
Las configuraciones de este nivel de seguridad se realizan en los archivos
postgresql.conf, pg_ident.conf y pg_hba.conf.

El archivo postgresql.conf presenta parámetros importantes para configurar las


conexiones, así como para la seguridad y autenticación.

Configuración de las conexiones:


• listen_addresses (string): Especifica las direcciones TCP / IP por las cuáles
el servidor va a escuchar las conexiones desde aplicaciones cliente. El
valor toma la forma de una lista separada por comas de nombres de host
y/o direcciones IP numéricas.
• port (integer): Especifica el puerto TCP por el cual escucha el servidor, por
defecto es el 5432. El número de puerto es el mismo para todas las
direcciones IP por las que escucha el servidor.
• max_connections (integer): Determina el número máximo permitido
de conexiones simultáneas al servidor de base de datos. El
valor predeterminado es de 100 conexiones.
Seguridad y autenticación:
• authentication_timeout (integer): Establece el tiempo máximo para
completar la autenticación del cliente, en cuestión de segundos.
• SSL (boolean): Secure Sockets Layer por sus siglas en inglés. Protocolo
criptográfico que permite autenticar y entregar privacidad a la información
entre el cliente y el servidor de forma segura. Especifica si se permiten
conexiones SSL. El valor predeterminado es off. Comunicación SSL sólo es
posible con conexiones TCP /IP.
• password_encryption (boolean): Cuando se especifica una contraseña en
CREATE USER o ALTER USER sin escribir: cifrado o no cifrado, este
parámetro determina si la contraseña debe ser encriptada. El valor
predeterminado es ON (cifrar la contraseña).
• row_security (boolean): Especifica si se aplican o no las directivas de
seguridad de fila. El valor predeterminado es on.

El archivo pg_hba.conf controla la autentificación del cliente.

En el archivo se debe definir un registro para cada acceso que se pueda conectar
al servidor. Cada registro especifica el tipo de conexión (TYPE), nombre de la
base de datos a la que tendrá acceso (DATABASE), nombre de usuario (USER),
dirección IP del cliente (ADDRESS) y el método de autentificación que se va a
utilizar (METHOD).

TYPE:
• Local: Se define para las conexiones que se realizarán desde el propio
servidor.
• Host: Se utilizará para conexiones remotas no-SSL y SSL.
• Hostssl: Sólo se utilizará para conexiones SSL.
• Hostnossl: Sólo se utilizará para las conexiones remotas no-SSL.

DATABASE:
• AII: Permite la conexión a cualquier base de datos.
• Sameuser/Samerole: Se empleará para bases de datos que su nombre sea
el mismo que el usuario/rol que se conecta.
• nombd1, nombd2, ... : Permite la conexión a cualquiera de las bases de
datos de la lista.
• @archivo: Permite la conexión a las bases de datos incluídas en el archivo.
Debe estar en el mismo directorio que pg_hba.conf.

USER:
• ALL: Permite la conexión de cualquier rol.
• role 1 , ro le2, ... : Permite la conexión de los roles de la lista y además
permite la conexión de cualquier rol que sea miembro de role2.
• @archivo: Permite la conexión de los roles incluídos en el archivo. Debe
estar en el mismo directorio que pg_hba.conf.

METHOD
• trust: Permite todos los accesos sin necesidad de autenticarse (sólo
recomendable para conexiones desde el equipo local).
• reject: Rechaza la conexión sin condiciones.
• password: Solicita la contraseña sin encriptar.
• md5: Solicita la contraseña con el método de encriptación md5.
• ident: Utiliza el usuario del sistema desde el que se está intentado conectar.
• cert: Autenticar utilizando certificados SSL.

2.2. SEGURIDAD DE LOS DATOS

Cuando se permite un acceso es importante restringirlo a personal autorizado. La


seguridad de los datos es responsabilidad del Sistema Gestor de Bases de Datos
(SGBD) que se esté utilizando, por lo que debe ser configurada con roles,
privilegios y permisos adecuados para evitar los accesos malintencionados. Por lo
general se puede garantizar a través del control discrecional y el control
obligatorio. En ambos casos, la unidad de los datos que se necesite proteger
puede comprender desde toda la base de datos hasta un componente específico
dentro de una tupla específica.

a. Administración de roles

Los roles de las bases de datos pueden tener un número de atributos que
define sus privilegios e interactúa con el sistema de autenticación del
cliente. PostgreSQL administra el acceso a las bases de datos utilizando el
concepto de roles. Para crear usuarios o grupos de usuarios se emplea la
sentencia:
CREATE ROLE nombre [ [ WITH] opción [ ... ]

] Donde opción puede ser:

SUPERUSERINOSUPERUSE
R
I CREATEDB I NOCREATEDB
ICREATEROLEINOCREATEROL
E
ICREATEUSERINOCREATEUSE
R
I INHERIT I
NOINHERIT
I LOGIN I
NOLOGIN
I REPLICATON I
NOREPLICATION
I CONNECTION LIMIT
límite_conexiones
I BYPASSRLS I NOBYPASSRLS: característica introducida en 9.5, por defecto
es la opción NOBYPASSRLS, si se especifica BYPASSRLS significa que el
rol no tendrá en cuenta las políticas que se le hayan asignado.
I [ ENCRYPTED I UNENCRYPTED] PASSWORD
'contraseña'
I VALID UNTIL
'fecha'
I IN ROLE nombre_rol [,
...]
I IN GROUP nombre_rol [,
...]
I ROLE nombre_rol [,
]
I ADMIN nombre_rol [,
]
I USER nombre_rol [,
]
I SYSID uid

Es importante conocer que si se emplea la sentencia CREATE USER nombre,


ya el usuario tendrá la opción de login por defecto, mientras que con el
comando CREATE ROLE sí se debe especificar.

Una vez creado un rol, puede ser modificado o eliminado con los
comandos
ALTER ROLE nombre y DROP ROLE nombre

respectivamente. b. Gestión de privilegios


Se le llama privilegio al conjunto de acciones que los usuarios pueden
realizar
sobre cada objeto de la base de datos (tablas, columnas, vistas, funciones,
trigger, entre otros). El comando GRANT brinda privilegios sobre objetos de
una base de datos a uno o más roles. La sentencia para administrar privilegios
es la siguiente:

GRANT { { SELECT I INSERT I UPDATE I DELETE I TRUNCATE I


REFERENCES
I TRIGGER I CREATE I CONNECT I TEMPORARY I TEMP} I ALL [
PRIVILEGES]
}
ON { [TABLE] nombre_tabla [, ...] 1 ALL TABLES IN SCHEMA
nombre_esquema [,
...1 }
TO { [ GROUP] nombre_rol l PUBLIC} [, ...] [ WITH GRANT
OPTION]
REVOKE [ GRANT OPTION FOR] { { SELECT I INSERT I UPDATE I
DELETE I
TRUNCATE I REFERENCES I TRIGGER} [, ...] I ALL [
PRIVILEGES]}
ON { [TABLE] nombre_tabla[, ...] 1 ALL TABLES IN SCHEMA
nombre_esquema [,
...1 }
FROM { [ GROUP] nombre_rol I PUBLIC} [, ...] [ CASCADE I
RESTRICT]

c. Definición de vistas para proteger las tablas

Una vista es una estructura lógica que permite visualizar un grupo de datos
que provienen de una o varias tablas u otras vistas. Los datos accesibles a
través de la vista no están almacenados en la base de datos como un objeto.

Las vistas
permiten:

• ocultar información: permitiendo el acceso a algunos datos y


manteniendo oculto el resto de la información que no se incluye en la
vista. El usuario solo puede consultar la vista.
• simplificar la administración de los permisos de usuario:
permite otorgar permisos al usuario para que solamente pueda acceder
a los datos a través de vistas, en lugar de concederle permisos para
acceder a ciertos campos, así se protegen las tablas base de cambios en
su estructura.

La sintaxis básica para crear una vista es la


siguiente:

CREATE OR REPLACE VIEW nombre_vista AS sentencias select FROM


tabla;

d. Seguridad por filas

Las tablas pueden tener políticas de seguridad de filas que restringen, por
usuario, qué filas pueden ser devueltas una vez realizada una inserción,
modificación o eliminación.

Para crear una política de seguridad se emplea la


sentencia:

CREATE POLICY nombre ON nombre_tabla [ FOR { ALL I SELECT I


INSERT I UPDATE I DELETE } ] [ TO { «nombrerol I PUBLIC I
CURRENT_USER I SESSION_USER } [, ...] ] [ USING ( expressíonbooleana»
) ] [ WITH CHECK (
expression_booleana)
]

Si es necesario modificar o eliminar una política creada se emplean los


comandos ALTER POLICY y DROP POLICY respectivamente. Para habilitar y
deshabilitar la seguridad de fila para una tabla determinada, se utiliza el
comando ALTER TABLE nombre tabla ENABLE/DISABLE ROW SECURITY.
Para garantizar la seguridad de acceso al sistema se puede cifrar el tráfico
entre los clientes y el servidor y así evitar que la información transferida por la
red sea interceptada u obtenida por personas no autorizadas. Esta
característica se logra a través de la autenticación de certificados digitales,
impidiendo que los usuarios que no tengan instalado el certificado
correspondiente puedan conectarse al servidor.

PostgreSQL soporta nativamente el uso de conexiones SSL para cifrar


las comunicaciones, sólo es necesario tener instalado OpenSSL en el
servidor y PostgreSQL compilado con soporte SSL.
CONCLUSIONES

Es necesario implementar mecanismos de seguridad a nivel de base de datos, en


términos de garantizar la protección de la información que se procesa.

La implementación de certificados digitales y el protocolo de seguridad SSL


garantiza la autenticación segura de los clientes y convierte la información en
ininteligible para terceros.

El empleo de privilegios y niveles de seguridad de filas restringe el acceso de la


información a los responsables de procesarlas.

La ejecución y puesta en práctica de mecanismos de seguridad y autenticación se


convierte en un requisito para garantizar la integridad y confidencialidad de la
información.
WEBGRAFIA

Learning PostgreSQL 11 https://books.google.com.co/books?


id=ZtOGDwAAQBAJ&pg=PA360&1pg=PA360&
dq=BYPASSRLS++postgresql+ 11 &source=bl&ots=GE-
K Ei29VE&sig=ACfU3U2Hg30Tm Rtf4_oPZFuH 1 uN hGbzcCg&hl=es-
419&sa=X& ved-zah UK Ewjagvu R-
_nlAhWyxVkKHZ_NC9sQ6AEwB3oECAoQAQ#v=onepage&q=BYPASSRLSº/o20º/o
20postgresql0/o2011 &f=false

https ://severalnines.com/database-blog/how-secure-your-postgresql-database-10-
tips
https ://www.postgresql.org/docs/11 /index.html
https://www.postgresql.org/search/?u=º/o2Fdocs0/o2F11 º/o2F&q=security
https ://platzi.com/blog/caraete risticas-postgresql/
http://www.informaticahabana.cu/sites/default/files/ponencias2018
/SWL14.pdf https ://openwebinars. net/blog/caracte risticas-i mpo rtantes-de-
postgresql/

También podría gustarte