A lo largo de nuestra carrera como DBA, La cual requiere del buen uso de muchas técnicas para el manejo de la información, con el fin de no redundar, de mantener integridad, mantener disponibilidad, entre muchas otras funcionalidades, que demuestra la importancia de la excelente gestión de la información, es por eso que se hace necesario estudiar la seguridad con que este recurso tan valioso será resguardado.
INTEGRIDAD
🌟 ¡Visita Nuestra Tienda para Programadores! 🌟Descubre Códigos Fuente, Cursos, Software, Computadoras, Accesorios y Regalos Exclusivos. ¡Todo lo que necesitas para llevar tu programación al siguiente nivel!
La integridad referencial es una función que está presente en las bases de datos relacionales que garantiza la coherencia de los datos entre relaciones aparejadas. Sin duda alguna es una de las características más importantes que una base de datos nos puede proporcionar y siempre se debería usar para garantizar la integridad de los datos almacenados. La integridad referencial se define con el uso combinado de claves primarias (primary keys) ó claves candidatas (candidate key) y clave foráneas (foreign key). Ambas claves están formadas por valores únicos y las claves o llaves foráneas solo pueden estar asociadas a una primaria con el fin de garantizar la existencia de un solo dato valido y correcto. Se hace necesario contar con una base de datos normalizada para el uso de estas funciones y obtener beneficios como:
- Evitar redundancia en los datos almacenados.
- Evitar problemas de actualización de los datos en las tablas.
- Proteger la integridad de los datos.
Veamos un ejemplo:
ACCEDIENDO A LA BASE DE DATOS
Luego de que la base de datos es creada se puede acceder a ella de varias maneras según sea la necesidad y el tipo de usuario veamos:
- Ejecutando el programa monitor de terminal de Postgres (psql) que le permite introducir, editar y ejecutar órdenes SQL de un modo interactivo.
- Ejecutando el PGADMIN con el cual podemos establecer conexión con el servidor y manipular las bases de datos.
- Desarrollando un software en alguno de los muchos lenguajes de programación existentes, el cual tenga las instrucciones necesarias para conectarse con la base de datos.
- Utilizando herramientas reporteadoras para conectarnos a la base de datos y extraer datos para su posterior análisis.
CONTROL DE ACCESO
Postgres proporciona mecanismos para permitir a los usuarios limitar el acceso que otros usuarios tendrán a sus datos.
SUPERUSUARIOS DE LA BASE DE DATOS
Los SuperUsuarios de la base de datos (aquellos que tienen el campo pg_user.usesuper activado) ignoran todos los controles de acceso descritos anteriormente con dos excepciones: las actualizaciones del catálogo del sistema no están permitidas si el usuario no tiene el campo pg_user.usecatupd activado, y nunca se permite la destrucción del catálogo del sistema (o la modificación de sus estructuras).
PRIVILEGIOS DE ACCESO
El uso de los privilegios de acceso para limitar la lectura, escritura y la puesta de reglas a las clases se trata en grant/revoke(l).
BORRADO DE CLASES Y MODIFICACIÓN DE ESTRUCTURAS.
Los comandos que borran o modifican la estructura de una clase, como alter, drop table, y drop index, solo funcionan con el propietario de la clase. Como hemos dicho antes, estas operaciones no están permitidas nunca en los catálogos del sistema.
LA SEGURIDAD DE LA BASE DE DATOS ESTA IMPLEMENTADA EN VARIOS
NIVELES:
- Protección de los ficheros de la base de datos. Todos los ficheros almacenados en la base de datos están protegidos contra escritura por cualquier cuenta que no sea la del supe usuario de Postgres.
- Las conexiones de los clientes al servidor de la base de datos están permitidas, por defecto, únicamente mediante sockets Unix locales y no mediante sockets TCP/IP. Ha de arrancarse el demonio con la opción -i para permitir la conexión de clientes no locales.
- Las conexiones de los clientes se pueden restringir por dirección IP y/o por nombre de usuario mediante el fichero pg_hba.conf situado en PG_DATA.
- Las conexiones de los clientes pueden ser autentificadas mediante otros paquetes externos.
- A cada usuario de Postgres se le asigna un nombre de usuario y (opcionalmente) una contraseña. Por defecto, los usuarios no tienen permiso de escritura a bases de datos que no hayan creado.
- Los usuarios pueden ser incluidos en grupos, y el acceso a las tablas puede restringirse en base a esos grupos.
AUTENTICACIÓN DE USUARIOS
La autenticación es el proceso mediante el cual el servidor de la base de datos y el postmaster se aseguran de que el usuario que está solicitando acceso a la base de datos es en realidad quien dice ser. Todos los usuarios que quieren utilizar Postgres se comprueban en la tabla pg_user para asegurarse que están autorizados a hacerlo. Actualmente, la verificación de la identidad del usuario se realiza de distintas formas:
DESDE LA SHELL DEL USUARIO
Un demonio (servicio) que se lanza desde la shell del usuario anota el id original del usuario antes de realizar un setuid al id del usuario postgres. El id original del usuario se emplea como base para todo tipo de comprobaciones.
DESDE LA RED
Si Postgres se instala como distribuido, el acceso al puerto TCP del postmaster está disponible para todo el mundo. El ABD configura el fichero pg_hba.conf situado en el directorio PG_DATA especificando el sistema de autenticación a utilizar en base al equipo que realiza la conexión y la base de datos a la que se conecta.
COPIA DE SEGURIDAD Y RESTAURACIÓN
Deben realizarse copias de seguridad de las bases de datos regularmente. Dado que Postgres gestiona sus propios ficheros en el sistema, no se recomienda confiar en los sistemas de copia de seguridad del sistema para las copias de respaldo de las bases de datos; no hay garantía de que los ficheros estén en un estado consistente que permita su us o después de la restauración.
Postgres proporciona dos utilidades para realizar las copias de seguridad de su sistema: pg_dump para copias de seguridad de bases de datos individuales y pg_dumpall para realizar copias de seguridad de toda la instalación de una sola vez. La copia de seguridad de una sola base de datos puede realizarse usando la siguiente orden:
% pg_dump nombredb > nombredb.pgdump
y puede ser restaurada usando
cat nombredb.pgdump | psql nombredb
Esta técnica puede usarse para mover bases de datos a una nueva localización y para renombrar bases de datos existentes
que tal
como puedo hacer para crear un usuario (no es superusuario) que pueda manipular todos los objetos de los esquemas, pero que no pueda hacer copias de seguridad (.sql) ni backups de esos esquemas.
actualmente el usuario se conecta con cualquier herramienta y puede hacer click derecho sobre el esquema y generar copias de seguridad o dump del esquema.