Académique Documents
Professionnel Documents
Culture Documents
Características
Lima, Perú
Teléfono: 441-9638
1
Software Libre Andino S.A.C
Calle Julio C. Tello Nº 184
Miraflores, Lima 33 - Perú
Tel (51-1) 442-9638
Fax (51-1) 442-4442
www.softwarelibreandino.com
Seguridad:
Autenticación del cliente
Tabla de contenidos
Cuando una aplicación cliente se conecta al servidor de base de datos, se especifica qué base de datos
PostgreSQL nombre de usuario como quiere conectarse, de la misma manera los registros de uno en un
ordenador Unix como un usuario particular. Dentro del entorno de base de datos SQL el nombre de usuario
activo determina los privilegios de acceso a los objetos de base de datos - Por lo tanto, es esencial restringir
los usuarios de bases de datos que se pueden conectar.
Nota: La autenticación es el proceso mediante el cual el servidor de base de datos de la identidad del
cliente, y por extensión determina si la aplicación cliente (o el usuario que ejecuta la aplicación cliente) se le
permite conectarse con el nombre de usuario de base de datos que se solicitó.
PostgreSQL ofrece una serie de diferentes métodos de autenticación de cliente. El método utilizado para
autenticar una conexión de cliente particular, se pueden seleccionar sobre la base de (cliente) dirección de la
máquina, base de datos y el usuario.
Nombre de usuario de base de datos PostgreSQL son lógicamente independientes de los nombres de
usuario del sistema operativo en el que corre el servidor. Si todos los usuarios de un servidor en particular
también tienen cuentas en el servidor de la máquina, tiene sentido para asignar nombres de usuario de base
de datos que coinciden con su nombre de usuario del sistema operativo. Sin embargo, un servidor que
2
Software Libre Andino S.A.C
Calle Julio C. Tello Nº 184
Miraflores, Lima 33 - Perú
Tel (51-1) 442-9638
Fax (51-1) 442-4442
www.softwarelibreandino.com
acepte conexiones remotas de base de datos podría tener muchos usuarios que no tienen cuenta de
explotación del sistema local, y en tales casos no hay necesidad de conexión entre los nombres de usuario de
base de datos y nombres de usuario del sistema operativo.
Cuando se especifica la autenticación de confianza, PostgreSQL asume que cualquiera que pueda
conectarse al servidor está autorizado para acceder a la base de datos con cualquier nombre de usuario de
base de datos de manera precisa. Por supuesto, las restricciones hechas en la base de datos de usuario y las
columnas siguen siendo válidas. Este método sólo debe utilizarse cuando no hay sistema operativo a nivel de
protección adecuada en las conexiones con el servidor.
La autenticación de confianza es adecuada y muy conveniente para las conexiones locales en una sola
estación de trabajo del usuario. Por lo general, no procede por sí mismo en una máquina multiusuario. Sin
embargo, puede ser capaz de utilizar la confianza incluso en una máquina multiusuario, si se restringe el
acceso al servidor de socket de dominio Unix el archivo con permisos de sistema de archivos.
Configuración de permisos del sistema de archivo sólo funcional para conexiones socket Unix. Local
conexiones TCP / IP no están limitados por los permisos de archivos del sistema. Por lo tanto, si usted desea
utilizar sistema de permisos de archivo para la seguridad local, retire el host ... 127.0.0.1 ... línea de
pg_hba.conf, o cambiar a un método de autenticación de no confianza
Autenticación de confianza sólo es adecuado para las conexiones TCP / IP si confía en que cada usuario en
cada máquina que se le permite conectarse al servidor por las líneas que especifican pg_hba.conf confianza.
Rara vez es razonable utilizar la autentificación de confianza para cualquier red TCP / IP que no sean las de
localhost (127.0.0.1).
Sin embargo, md5 no se puede utilizar con la db_user_namespace función. Si la conexión está protegida por
encriptación SSL entonces la contraseña se puede utilizar con seguridad (aunque certificado de autenticación
SSL podría ser una mejor opción si uno está dependiendo en el uso de SSL).
Las contraseñas de base de datos en PostgreSQL, que están separados de contraseñas del sistema
operativo del usuario. La contraseña para cada usuario de base de datos se almacena en el catálogo del
sistema pg_authid. Las contraseñas se pueden manejar con los comandos SQL CREATE USER y ALTER
USER.
3
Software Libre Andino S.A.C
Calle Julio C. Tello Nº 184
Miraflores, Lima 33 - Perú
Tel (51-1) 442-9638
Fax (51-1) 442-4442
www.softwarelibreandino.com
PostgreSQL soporta la versión 5 de Kerberos. la compatibilidad con Kerberos tiene que estar activo cuando
PostgreSQL se construye
PostgreSQL funciona como un servicio normal de Kerberos. El nombre del principal servicio es servicename /
hostname @ dominio.
El inconveniente de este procedimiento es que depende de la integridad del cliente: si la máquina cliente no
es de confianza o en peligro un atacante podría ejecutar casi cualquier programa en el puerto 113 y devolver
cualquier nombre de usuario que elija. Este método de autenticación tanto, es apropiado para las redes y
cerrados en cada máquina cliente está bajo estricto control y en la base de datos y administradores de
sistemas establecer un contacto estrecho.
4
Software Libre Andino S.A.C
Calle Julio C. Tello Nº 184
Miraflores, Lima 33 - Perú
Tel (51-1) 442-9638
Fax (51-1) 442-4442
www.softwarelibreandino.com
En los sistemas sin SO_PEERCRED peticiones, la autenticación ident sólo está disponible para las
conexiones TCP / IP. Como solución temporal, es posible especificar la dirección 127.0.0.1 localhost y haga
las conexiones a esta dirección. Este método es confiable para la medida en que confía en el servidor ident
local.
Compresión de Datos
Cache Infinito
El rendimiento de base de datos suele ser gobernado por dos factores concurrentes:
Postgres Plus Advanced Server intenta minimizar Entradas/Salidas al mantener los datos usados
frecuentemente en la memoria. Si el proceso se inicia, el primer servidor crea una estructura de datos en
memoria que es conocido como el caché del búfer. El buffer cache se organiza como una colección de 8K
(8192 bytes) páginas: cada página en la caché del búfer corresponde a una página en alguna tabla o índice.
El buffer cache se comparte entre todos los procesos de servicio a una base de datos dada.
Cuando se selecciona una fila de una tabla, Advanced Server lee la página que contiene la fila en la caché
de búfer compartido. Si no hay suficiente espacio libre en la memoria caché, Advanced Server desaloja a
alguna otra página de la caché. Si Advanced Server desaloja a una página que ha sido modificado, que los
datos se escribe de vuelta al disco, de lo contrario, simplemente se descarta. Índice de las páginas se
almacenan en caché en el buffer cache compartida.
La figura 1.1 muestra el flujo de datos en una sesión típica de Advanced Server:
5
Software Libre Andino S.A.C
Calle Julio C. Tello Nº 184
Miraflores, Lima 33 - Perú
Tel (51-1) 442-9638
Fax (51-1) 442-4442
www.softwarelibreandino.com
Una aplicación cliente envía una consulta al servidor de Postgres y el servidor busca en la caché del búfer
compartida para los datos requeridos. Si los datos solicitados se encuentra en la caché, el servidor
inmediatamente envía los datos al cliente. Si no, el servidor lee la página que contiene los datos en el buffer
cache compartida, desalojando a una o más páginas si es necesario. Si el servidor decide desalojar a una
página que ha sido modificado, esa página se escribe en disco.
Como puede ver, una consulta se ejecutará mucho más rápido si los datos necesarios se encuentran en la
caché del búfer compartido.
Una forma de mejorar el rendimiento es aumentar la cantidad de memoria que se puede dedicar a la caché
del búfer compartido. Sin embargo, la mayoría de ordenadores imponer un límite estricto sobre la cantidad de
RAM que se puede instalar. Para ayudar a sortear este límite, infinito caché le permite utilizar la memoria de
otros ordenadores conectados a la red.
Con caché infinito configurado correctamente, Advanced Server, destinará una parte de la memoria instalada
en cada servidor de caché como una caché de memoria secundaria. Cuando una aplicación cliente envía una
consulta al servidor, el servidor primero busca en la caché del búfer compartida para los datos requeridos, si
los datos solicitados no se encuentra en la caché, el servidor busca la página necesaria en uno de los
servidores caché.
La figura 1.2 muestra el flujo de datos en una sesión de Advanced Server con Infinito caché:
6
Software Libre Andino S.A.C
Calle Julio C. Tello Nº 184
Miraflores, Lima 33 - Perú
Tel (51-1) 442-9638
Fax (51-1) 442-4442
www.softwarelibreandino.com
Cuando una aplicación cliente envía una consulta al servidor, el servidor busca en la caché del búfer
compartida para los datos requeridos. Si los datos solicitados se encuentra en la caché, el servidor
inmediatamente envía los datos al cliente. Si no, el servidor envía una solicitud de la página en un servidor de
caché específicos, si el servidor de caché tiene una copia de la página que envía los datos al servidor y las
copias servidor de la página en la caché de búfer compartido. Si la página deseada no se encuentra en la
caché primaria (la caché del búfer compartida) o en la memoria caché secundaria (la nube de servidores
caché), Advanced Server debe leer la página desde el disco.
Como puede ver, caché infinito puede mejorar el rendimiento mediante el uso de memoria RAM de otros
ordenadores en su red a fin de evitar la lectura de datos de acceso frecuente desde el disco.
Tabla de contenidos
7
Software Libre Andino S.A.C
Calle Julio C. Tello Nº 184
Miraflores, Lima 33 - Perú
Tel (51-1) 442-9638
Fax (51-1) 442-4442
www.softwarelibreandino.com
24,4 Servidores Hot Standby para alta disponibilidad (Warm Standby Servers for High Availability)
Al igual que con todo lo que contiene valiosos datos, bases de datos PostgreSQL debe ser respaldada
regularmente. Si bien el procedimiento es esencialmente simple, es importante tener una comprensión clara
de las técnicas y supuestos subyacentes.
• SQL dump
• Nivel de Seguridad de Sistema de archivos
• Archivo continuo
Para especificar qué servidor de base de datos deben comunicarse con pg_dump, utilice las opciones de
línea de comandos-h host-p puerto. El equipo por defecto es el Localhost o lo que su variable de entorno
PGHOST especifica. Del mismo modo, el puerto por defecto es indicado por el medio ambiente PGPORT
variable o, en su defecto, por la compilación de forma predeterminada. (Convenientemente, el servidor
normalmente tiene el mismo compilado en forma predeterminada.)
Al igual que cualquier otra aplicación cliente, PostgreSQL pg_dump toma de forma predeterminada en
contacto con el nombre de usuario de base de datos que es igual al sistema de nombres de usuario de
operación actual. Para anular esto es necesario especificar la opción -U o establecer el PGUSER variable de
entorno. Recuerde que las conexiones pg_dump están sujetas a los mecanismos de autenticación de cliente
normal
Los archivos de texto creados por pg_dump están concebidos para ser leídos en el programa psql.
dbname <psql INFILE
Donde INFILE es lo que se utiliza como archivo de salida para el comando pg_dump. La base de datos
dbname no se creará por este comando, por lo que debe crear a sí mismo de template0 antes de ejecutar
8
Software Libre Andino S.A.C
Calle Julio C. Tello Nº 184
Miraflores, Lima 33 - Perú
Tel (51-1) 442-9638
Fax (51-1) 442-4442
www.softwarelibreandino.com
(por ejemplo, psql, con createdb-T template0 dbname). Apoya opciones psql similar a pg_dump 's para
especificar el servidor de base de datos para conectarse y el nombre de usuario para su uso.
Antes de restaurar un SQL dump, todos los usuarios que poseen objetos o que se le ha concedido los
permisos en los objetos dumping de la base de datos ya debe existir. Si no lo hacen, entonces, la
restauración no volver a crear los objetos con el original de propiedad y / o permisos.
De forma predeterminada, la secuencia de comandos psql seguirá ejecutando después de un error de SQL
se encuentra. Es posible que desee utilizar el siguiente comando en la parte superior de la secuencia de
comandos para modificar esta actitud y la salida psql con un estado de salida de 3 si un error SQL:
pg_dump Use 's formato de dump personalizada. Si PostgreSQL fue construido en un sistema con la
biblioteca de compresión zlib instalado, el formato de volcado personalizada comprimir los datos en que se
escribe en el archivo de salida. Esto producirá tamaños de archivo de volcado similar a gzip usando, pero
tiene la ventaja añadida de que las tablas se pueden restaurar de forma selectiva. El siguiente comando
vuelca una base de datos utilizando el formato de volcado personalizada:
-Fc pg_dump dbname nombre de archivo>
Un formato de volcado personalizada no es un script para psql, sino que debe ser restaurada con pg_restore,
por ejemplo:
pg_restore dbname-d nombre de archivo
Ver la pg_dump y pg_restore páginas de referencia para más detalles.
Para las grandes bases de datos muy, puede ser necesario combinar la ruptura con uno de los otros dos
enfoques.
Una estrategia de copia de seguridad alternativa es copiar directamente los archivos que utiliza PostgreSQL
para almacenar los datos en la base de datos
Puede utilizar cualquier método que prefiera para hacer copias de seguridad habituales del sistema de
archivos, por ejemplo:
tar-cf backup.tar / usr / local / pgsql / data
1. El servidor de base de datos debe ser apagado con el fin de obtener una copia de seguridad útil. -A
mitad de camino de medidas como rechazar la totalidad de las conexiones no funciona (en parte
debido y herramientas similares de alquitrán no tome una instantánea atómica de la situación del sis-
tema de archivos, sino también por el almacenamiento en búfer interno en el servidor). No hace falta
decir que también es necesario apagar el servidor antes de restaurar los datos.
En todo momento, PostgreSQL mantiene una escritura anticipada de la bitácora (WAL) en el pg_xlog /
subdirectorio del directorio de datos de clúster. El registro describe cada cambio realizado a los archivos de
datos de la base de datos. Este registro existe principalmente para propósitos de seguridad de una colisión:
si el sistema se bloquea, la base de datos se puede restaurar a la coherencia de "reproducir" las entradas del
registro realizados desde el último punto de control. Sin embargo, la existencia del registro hace posible el
uso de una tercera estrategia de copias de seguridad de bases de datos: podemos combinar un sistema de
nivel de copia de seguridad de archivos con copias de seguridad de los archivos WAL. Si la recuperación es
necesaria, restaurar la copia de seguridad y, a continuación de la reproducción de copia de seguridad de
9
Software Libre Andino S.A.C
Calle Julio C. Tello Nº 184
Miraflores, Lima 33 - Perú
Tel (51-1) 442-9638
Fax (51-1) 442-4442
www.softwarelibreandino.com
archivos WAL traer la copia de seguridad hasta el momento actual. Este enfoque es más complejo de
administrar que uno de los enfoques anteriores, pero tiene algunas ventajas importantes:
5. Una vez que el segmento de WAL archivos utilizados para la copia de seguridad se archivan, ya es-
tá resuelto. El archivo identificado por pg_stop_backup «resultado s es el último segmento que se
requiere para formar un conjunto completo de archivos de copia de seguridad.
3. Limpie todos los archivos existentes y subdirectorios bajo el directorio de datos de clúster y en los
directorios raíz de una de tablas que está utilizando.
4. Restaurar la base de datos los archivos de su copia de seguridad de base. Tenga cuidado de que
se restauran con el derecho de propiedad (el sistema de utilización de bases de datos, no como
root!) Y con los permisos adecuados. Si está utilizando espacios de tablas, debe comprobar que los
enlaces simbólicos en pg_tblspc / se restauraron correctamente.
10
Software Libre Andino S.A.C
Calle Julio C. Tello Nº 184
Miraflores, Lima 33 - Perú
Tel (51-1) 442-9638
Fax (51-1) 442-4442
www.softwarelibreandino.com
5. Quite todos los archivos presentes en pg_xlog /; éstos proceden de un vertedero de copia de segur-
idad y, por tanto, probablemente más que obsoleto actual. Si no pg_xlog archivo / en absoluto, a
continuación, volver a crearlo, teniendo cuidado para asegurarse de que vuelva a establecerse como
un enlace simbólico si lo hubiese creado de esa manera antes.
6. Si había desarchivado segmento de archivos WAL que guardó en el paso 2, copiarlos en pg_xlog /.
(Es mejor para copiarlos, moverlos, no, de modo que usted todavía tiene los archivos sin modificar si
se produce un problema y hay que empezar de nuevo.)
7. Crear un comando de recuperación recovery.conf archivo en el directorio de datos del clúster . Us-
ted también puede modificar temporalmente pg_hba.conf para evitar que usuarios comunes y corri-
entes de conexión hasta que esté seguro de la recuperación ha funcionado.
8. Inicie el servidor. El servidor se pone en modo de recuperación y proceda a leer el archivado WAL
archivos que necesita. Si la recuperación se interrumpió debido a un error externo, el servidor sim-
plemente se puede reiniciar y continuará la recuperación. Una vez finalizado el proceso de recuper-
ación, el servidor cambiará el nombre a recovery.conf recovery.done (para evitar que accidental-
mente volver a entrar en modo de recuperación en caso de un accidente después) y luego la base
de datos las operaciones normales de comenzar.
9. Inspeccione el contenido de la base de datos para asegurarse de que se haya recuperado a donde
usted quiere estar. Si no, vuelva al paso 1. Si todo va bien la cosa, en sus usuarios mediante la res-
tauración de pg_hba.conf a la normalidad.
Archivo continuo puede ser usado para crear una alta disponibilidad (HA) de configuración del clúster con
uno o más servidores de reserva listos para asumir las operaciones si el servidor principal falla. Esta
capacidad es ampliamente conocida como hot wait
El servidor en espera de trabajo y primaria juntos para proporcionar esta capacidad, aunque los servidores
están sólo débilmente acoplados. El servidor principal funciona en modo de archivo continuo, mientras que
cada servidor de reserva opera en modo de recuperación continua para la lectura de los archivos WAL.
Este concepto se conoce generalmente como copias de seguridad actualizadas de forma incremental, la
acumulación de registro de cambios, o más simplemente, la acumulación de cambio. EDB soporta esta
funcionalidad.
11
Software Libre Andino S.A.C
Calle Julio C. Tello Nº 184
Miraflores, Lima 33 - Perú
Tel (51-1) 442-9638
Fax (51-1) 442-4442
www.softwarelibreandino.com
Uso de la DBA Management Server, estos informes de auditoria se puede generar y ver, sin embargo, la
configuración de auditoria en el archivo postgresql.conf primero debe estar habilitado.
edb_audit
Activa o desactiva la auditoría de base de datos. El xml valores o csv se habilita la auditoría de
base de datos. Estos valores representan el formato de archivo en el que se va a auditar la
información capturada. Ninguna de ellas podrá desactivar la base de datos de auditoría y es la
opción por defecto. Esta opción sólo puede activarse al empezar el servidor o en el archivo
postgresql.conf.
edb_audit_directory
Especifica el directorio donde los archivos de registro se crearán. La ruta del directorio puede
ser relativa o absoluta a la carpeta de datos. Esta opción sólo puede activarse al empezar el
servidor o en el archivo de configuración postgresql.conf.
edb_audit_filename
edb_audit_rotation_day
Especifica el día de la semana en que para hacer girar los expedientes de auditoría. Los valores
válidos son el sol, L, M, X, J, V, S, todos y ninguno. Para desactivar la rotación, establezca el
valor a ninguno. Para girar el archivo de todos los días, establezca el valor a cada
edb_audit_rotation_day. Para girar el archivo en un día específico de la semana, establezca el
valor en el día de la semana deseado. Ninguno es el valor por defecto. Esta opción sólo puede
activarse al empezar el servidor o en el archivo de configuración postgresql.conf.
edb_audit_rotation_size
12
Software Libre Andino S.A.C
Calle Julio C. Tello Nº 184
Miraflores, Lima 33 - Perú
Tel (51-1) 442-9638
Fax (51-1) 442-4442
www.softwarelibreandino.com
edb_audit_rotation_seconds
Especifica el tiempo de rotación en segundos cuando un nuevo archivo de registro debe ser
creado. Para desactivar esta característica, establezca este parámetro a 0. Esta opción sólo
puede activarse al empezar el servidor o en el archivo de configuración postgresql.conf.
edb_audit_connect
Permite la auditoría de intentos de conexión de base de datos por los usuarios. Para
deshabilitar la auditoría de todos los intentos de conexión, sistema edb_audit_connect a ninguno.
Para auditar todos los intentos de conexión fallidos, establezca el valor a no. Para auditar todos
los intentos de conexión, establezca el valor para todos. Esta opción sólo puede activarse al
empezar el servidor o en el archivo de configuración postgresql.conf.
edb_audit_disconnect
edb_audit_statement
Cada línea de auditoría se precede con un prefijo que no se puede cambiar. El prefijo se compone del
nombre del usuario, nombre de base de datos, host remoto y puerto, identificador de proceso, el identificador
de sesión, ID de transacción, fecha y hora, y tipo de evento.
,,, 1452,, ,2008-03-13 12:40:02, puesta en marcha, "Auditoría: sistema de base de datos está listo"
EnterpriseDB, mgmtsvr, 127.0.0.1 (1266), 1620,47 d9595b.654 ,0,2008-03-13 12:42:03, conectar ":
conexión autorizada AUDIT: base de datos de usuario = = EnterpriseDB mgmtsvr"
"
13
Software Libre Andino S.A.C
Calle Julio C. Tello Nº 184
Miraflores, Lima 33 - Perú
Tel (51-1) 442-9638
Fax (51-1) 442-4442
www.softwarelibreandino.com
"
EnterpriseDB, edb, 127.0.0.1 (1269), 904,47 d9598d.388 ,0,2008-03-13 12:42:53, conectar ": conexión
autorizada AUDIT: user = base de datos de EnterpriseDB edb ="
EnterpriseDB, edb, 127.0.0.1 (1269), 904,47 d9598d.388 ,1618,2008-03-13 12:43:02, ddl, "Auditoría:
Estado: tabla de prueba CREATE (f1 entero);"
EnterpriseDB, edb, 127.0.0.1 (1269), 904,47 d9598d.388 ,1620,2008-03-13 12:43:02, sentencia SQL,
"Auditoría: Estado: * testx DE SELECT;"
</ Evento>
</ Evento>
14
Software Libre Andino S.A.C
Calle Julio C. Tello Nº 184
Miraflores, Lima 33 - Perú
Tel (51-1) 442-9638
Fax (51-1) 442-4442
www.softwarelibreandino.com
Los estados auditados fueron generados por el siguiente período de sesiones en PSQL.
15
Software Libre Andino S.A.C
Calle Julio C. Tello Nº 184
Miraflores, Lima 33 - Perú
Tel (51-1) 442-9638
Fax (51-1) 442-4442
www.softwarelibreandino.com
CREATE TABLE
INSERTAR 0 1
DROP TABLE
Tenga en cuenta que el comando INSERT éxito no aparece en la lista de auditoría desde
edb_audit_statement no se ha establecido para incluir comandos éxito LMD.
Escalabilidad (scalability)
16
Software Libre Andino S.A.C
Calle Julio C. Tello Nº 184
Miraflores, Lima 33 - Perú
Tel (51-1) 442-9638
Fax (51-1) 442-4442
www.softwarelibreandino.com
servidor principal falla, el modo de hot wait contiene la casi totalidad de los datos del servidor principal, y se
puede obtener rápidamente el servidor maestro la nueva base de datos. Esta es asíncrona y sólo se puede
hacer para el servidor de base de datos.
17
Software Libre Andino S.A.C
Calle Julio C. Tello Nº 184
Miraflores, Lima 33 - Perú
Tel (51-1) 442-9638
Fax (51-1) 442-4442
www.softwarelibreandino.com
18