Seguridad en PostgreSQL?
Agradeceria a quien pueda darme informacion al respecto de la seguridad en POSTGRESQL:
¿Como implanta PostgreSQL la seguridad y autorizacion para sus bases de datos?
¿De que medios o recursos dispone PostgreSQL para controlar la seguridad?
Desde ya muchas gracias. Atte, Leonardo Alberro.
¿Como implanta PostgreSQL la seguridad y autorizacion para sus bases de datos?
¿De que medios o recursos dispone PostgreSQL para controlar la seguridad?
Desde ya muchas gracias. Atte, Leonardo Alberro.
Se puede tener un control de acceso a la base de datos y decirle qué máquinas pueden acceder y cuales no en virtud de direcciones IP, todo esto es en el archivo pg_hba.conf ubicado normalmente en el mismo directorio donde inicializaste la base de datos.
Hay dos tipos de accesos, el acceso local y el acceso remoto.
El local es el que se produce en la propia máquina y el otro desde una máquina remota que puede estar o no en la misma red por ejemplo conexiones tcp.
En el archivo pg_hba.conf encontraras algo como esto
acceso IP Máscara
Autorización
=========================================
local all trust //permite el acceso local a todos
host all 127.0.0.1 255.255.255.255 trust //permite todo acceso remoto solo desde la maquina
El acceso que se hace a la base de datos mediante CGIs entonces se considera que es local. Otra cosa sería una conexión mediante ODBC desde otra máquina, y para ello sería nocesario poner una línea adicional como esta:
host all direc_ip_cliente 255.255.255.255 trust //permite acceso remoto solo desde esta maquina
# Permite cualquier conexion via TCP/IP con esta máquina.
host all 127.0.0.1 255.255.255.255 trust (permite el acceso)
# Permite cualquier conexion via TCP/IP de los equipos de esta subred.
host all 195.70.0.0 255.255.0.0 trust
# No queremos que acceda una máquina concreta
host all 192.168.0.10 255.255.255.0 reject (no deja
acceder)
# No queremos que acceda las máquinas de una determinada subred
host all 192.168.0.0 255.255.0.0 reject
Cabe mencionar que puedes manejar los niveles de seguridad no solo en trust, sino también con passwords encriptados via md5 y otros mecanismos que puedes verificar en la documentación de postgresql.
Otro tipo de seguridad es la que se hace a traves de permisos a los usuarios de la base de datos. Cuando nos referimos a este tipo de seguridad nos referimos a que podemos crear una serie de grupos y de usuarios de postgresql y a los cuales les podemos dar una serie de permisos sobre tablas, vistas etc.
- Creación de usuarios
para crear un usuario se debe poner la sentencia desde la shell o también lo puedes hacer ejecutando una sentencia sql:
createuser nombre_usuario
- Creación de grupos
la creación de grupos se lleva a cabo mediante una inserción en la tabla pg_group mediante SQL. Supongamos que queremos crear el grupo 'usuarios' en pgsql, pues como usuario 'postgres' le decimos:
insert into pg_group (groname,grosysid,grolist) values (nombre_grupo,numero_identificacion_grupo,Lista_de_componentes(uids));
Una vez que tenemos definidos la los usuarios y los grupos lo único que debemos hacer es dar permisos con las sentencias SQL GRANT y REVOkE.
Espero poder ayudarte con esto
Hay dos tipos de accesos, el acceso local y el acceso remoto.
El local es el que se produce en la propia máquina y el otro desde una máquina remota que puede estar o no en la misma red por ejemplo conexiones tcp.
En el archivo pg_hba.conf encontraras algo como esto
acceso IP Máscara
Autorización
=========================================
local all trust //permite el acceso local a todos
host all 127.0.0.1 255.255.255.255 trust //permite todo acceso remoto solo desde la maquina
El acceso que se hace a la base de datos mediante CGIs entonces se considera que es local. Otra cosa sería una conexión mediante ODBC desde otra máquina, y para ello sería nocesario poner una línea adicional como esta:
host all direc_ip_cliente 255.255.255.255 trust //permite acceso remoto solo desde esta maquina
# Permite cualquier conexion via TCP/IP con esta máquina.
host all 127.0.0.1 255.255.255.255 trust (permite el acceso)
# Permite cualquier conexion via TCP/IP de los equipos de esta subred.
host all 195.70.0.0 255.255.0.0 trust
# No queremos que acceda una máquina concreta
host all 192.168.0.10 255.255.255.0 reject (no deja
acceder)
# No queremos que acceda las máquinas de una determinada subred
host all 192.168.0.0 255.255.0.0 reject
Cabe mencionar que puedes manejar los niveles de seguridad no solo en trust, sino también con passwords encriptados via md5 y otros mecanismos que puedes verificar en la documentación de postgresql.
Otro tipo de seguridad es la que se hace a traves de permisos a los usuarios de la base de datos. Cuando nos referimos a este tipo de seguridad nos referimos a que podemos crear una serie de grupos y de usuarios de postgresql y a los cuales les podemos dar una serie de permisos sobre tablas, vistas etc.
- Creación de usuarios
para crear un usuario se debe poner la sentencia desde la shell o también lo puedes hacer ejecutando una sentencia sql:
createuser nombre_usuario
- Creación de grupos
la creación de grupos se lleva a cabo mediante una inserción en la tabla pg_group mediante SQL. Supongamos que queremos crear el grupo 'usuarios' en pgsql, pues como usuario 'postgres' le decimos:
insert into pg_group (groname,grosysid,grolist) values (nombre_grupo,numero_identificacion_grupo,Lista_de_componentes(uids));
Una vez que tenemos definidos la los usuarios y los grupos lo único que debemos hacer es dar permisos con las sentencias SQL GRANT y REVOkE.
Espero poder ayudarte con esto
