• Saltar a la navegación principal
  • Saltar al contenido principal
  • Saltar al pie de página
logo web Geoinnova

Geoinnova

Consultoría y Formación en SIG y Medio Ambiente

  • Geoinnova
    • Asociación
    • Equipo
    • Visor de proyectos Geoinnova
    • Geolibrería
    • Alianzas Estratégicas
  • Consultoría
    • Consultoría y Desarrollo en Sistemas de Información Geográfica
    • Consultora Ambiental
    • Turismo sostenible
    • Planificación urbana y ordenación del territorio
    • Planes Urbanos de Actuación Municipal – PUAM
    • Geomarketing
  • Servicios
    • Planero Web
    • QElectricGIS
    • Plugins
  • Formación
    • Todos los cursos
    • Webinars
    • Máster y Diplomas
    • Cursos de ArcGIS
    • Cursos de QGIS
    • Cursos de Teledetección
    • Cursos de Medioambiente
  • Medio Ambiente
    • Consultora Ambiental
    • Estudios ambientales para proyectos de energías renovables
    • Estudios de Impacto e Integración Paisajística
    • Evaluación Ambiental Estratégica de planes y programas
    • Estudio de Impacto Ambiental para proyectos
    • Cálculo huella de carbono
    • Educación Ambiental
    • Cursos de Medioambiente
  • Coworking
  • Blog
    • SIG
    • Medio Ambiente
    • Teledetección
    • Programación y Desarrollo SIG
    • Corporativo
  • Contacto
    • Soporte de Clientes – Tickets
Programación y Desarrollo SIG SIG

Gestión de usuarios y permisos de una base de datos geográfica PostgreSQL/PostGIS

08/02/2021 2 comentarios

La puesta en marcha de un proyecto que incorpore un Sistema Gestor de Base de Datos tiene un amplio abanico de posibilidades. Entre estas capacidades se encuentran las labores de creación de usuarios, definición de permisos de acceso y gestión de privilegios. En esta entrada vamos a hacer una breve referencia a cómo desplegar un sistema básico de privilegios sobre una base de datos geográfica PostgreSQL/PostGIS.

Gracias a la creación de roles de usuario y grupo se establecerán diferentes permisos sobre los objetos geográficos de nuestra base de datos. Estos permisos quedarán reflejados por ejemplo en el acceso a las tablas en QGIS.

Roles, usuarios y grupos en PostgreSQL

Los permisos de acceso en PostgreSQL se administran definiendo roles. Dentro de este concepto se incluyen tanto los usuarios como los grupos. La diferencia principal entre ambos es que, mientras el rol de tipo usuario se usa para acceder y trabajar con la base de datos, los grupos agregan a usuarios y definen permisos sobre esquemas y objetos de la estructura.

Es fundamental indicar que el nombre de usuario en la base de datos es independiente al nombre del usuario en el sistema de datos. Por ejemplo, al instalar PostgreSQL se crea por defecto el rol usuario postgres con un perfil de superusuario o administrador. Pero sin embargo, no contamos con un usuario que esté identificado con el de nuestro sistema operativo.

Crear un rol usuario

Para crear un nuevo rol de tipo usuario podemos usar tanto CREATE ROLE como CREATE USER. La diferencia entre ambos es que si usamos la opción de USER añadimos automáticamente el atributo LOGIN. Este atributo es el que nos va a servir para indicar si es un rol usuario o un rol de grupo.

Los roles pueden contener atributos (LOGIN, SUPERUSER, CREATEDB, CREATEROL…) que van a definir sus privilegios.

En las siguientes líneas se ve cómo crear un nuevo usuario que usaremos a lo largo del ejemplo.

CREATE ROLE demouser WITH
ENCRYPTED PASSWORD '123456'
LOGIN
VALID UNTIL 'INFINITY';

Privilegios mediante grupos

Vamos a situarnos en un entorno de trabajo que explota un Sistema de Información Geográfico corporativo. Para gestionar la base de datos debemos asignar los privilegios que realizaría cada uno de los trabajadores dentro de la organización. Para ello podemos hacernos una serie de preguntas sencillas.

  • ¿El usuario participa de la administración de la base de datos?
  • ¿El usuario necesita editar o crear datos?
  • ¿El usuario sólo debe consultar los datos?

Supongamos que solo necesitamos que nuestros usuarios visualicen y consulten capas geográficas de nuestra base de datos PostGIS/PostGIS denominada ‘geodb’.

Creación de base de datos con PostGIS desde la consola psql
Creación de base de datos con PostGIS desde la consola psql

Los privilegios formarían parte de un grupo que llamaremos «grupo_consulta».

CREATE ROLE grupo_consulta
NOSUPERUSER
NOCREATEDB
NOCREATEROLE
NOINHERIT;

La inclusión de un usuario a un grupo se realiza mediante la palabra reservada GRANT.

GRANT grupo_consulta TO demouser;

Con REVOKE sacaríamos al usuario del grupo.

Permisos a tablas geográficas PostGIS

Para contar con una capa geográfica de ejemplo, hemos cargado la delimitación de los países del mundo a partir de una importación de shaperfile a PostGIS en la base de datos geodb obtenida en del repositorio de Natural Earth.

Repositorio de capas Natural Earth
Web del repositorio de datos geográfico abiertos Natural Earth

Si creamos una conexión PostGIS desde QGIS usando las credenciales de de usuario ‘demouser’, a pesar de existir una tabla geográfica no nos aparece en el árbol de capas.

Debemos por tanto definir los permisos a los objetos de la base de datos geográfica asignándose al grupo de consulta.

En primer lugar, otorgamos el privilegio USAGE al esquema al grupo de inicio de sesión. Será necesario indicar el tipo de privilegio sobre las tablas. Ya que solo queremos consultar indicamos solo SELECT.

GRANT USAGE ON SCHEMA public TO grupo_consulta;
GRANT SELECT ON ALL TABLES IN SCHEMA public TO grupo_consulta;

Como particularidad de trabajo con bases de datos geográficas, debemos también dar privilegios de tipo SELECT en las tablas public.geometry_columns y public.spatial_ref_sys.

GRANT SELECT ON public.geometry_columns TO grupo_consulta;
GRANT SELECT ON public.spatial_ref_sys TO grupo_consulta;

Tras estas modificaciones, ya podremos acceder y cargar nuestra capa de países en QGIS.

Como detalle final hay que indicar que debido a los privilegios de grupo la capa no permitirá su edición. El botón de conmutar edición de QGIS se encuentra bloqueado al igual que todas las opciones del menú Editar.

Gestión de permisos en QGIS con bloqueo de edición por privilegios
Gestión de permisos en QGIS con bloqueo de edición por privilegios

Será cuestión de crear por tanto un nuevo grupo que incluya los correspondientes permisos para que las capas pudieran ser editadas.

Etiquetas: postgis, postgresql

Apúntate a nuestra newsletter semanal

"*" señala los campos obligatorios

Consentimiento*
*
Este campo es un campo de validación y debe quedar sin cambios.

Información legal

Cumplimos el RGPD (Reglamenteo General de Protección de Datos) y esta en la primera información que debes saber. Responsable: Asociación Geoinnova. Finalidad: Apuntarte en nuestra base de datos para poder enviarte nuestra newsletter y cualquier otra información de interes. Legitimidad: Nos das tu consentimiento para comunicarnos contigo. Derechos: Tienes derecho a acceder, rectificar, limitar y suprimir tus datos. Para una información más ampliada entra a nuestra política de privacidad.

Artículos relacionados

Cómo trabajar con nuestra base de datos PostgreSQL usando psql
08/11/2022
DBeaver: software para la gestión de bases de datos
20/10/2022
PostgreSQL y PostGIS: Qué son y cómo se relacionan
23/09/2022

Patricio Soriano

Geógrafo “Full-stack” y desarrollador web especializado en Tecnologías de Información Geográfica. Vinculado con la labor de consultoría, ha realizado diversos proyectos sobre análisis urbanístico, planes de vivienda y gestión patrimonial, así como la puesta en marcha de Sistemas de Información Geográfica corporativos para la administración pública. Dentro de los trabajos como desarrollador se encuentran el diseño de varias aplicaciones webmapping y desarrollos para QGIS (Spanish Inspire Catastral Downloader, CDAU Downloader o qgis2mapea). Autor del blog www.sigdeletras.com y organizador de Geoinquietos Córdoba. Actualmente se encuentra incorporado al equipo de desarrollo de Geoinnova en aplicaciones Open Source. Como docente lleva impartiendo cursos profesionales de SIG desde 2007 para diferentes entidades y en diferentes modalidades (tanto presencial como online). Especializándose en los últimos años en cursos de QGIS a distintos niveles.

Interacciones con los lectores

Comentarios

  1. Mauro Ortmann dice

    13/07/2022 a las 16:04

    Muy buenos días Patricio y muchas gracias por tan clara explicación. Me ha quedado una pequeña duda respecto al uso de más esquemas de trabajo dentro de la base de datos espacial. ¿Sería necesario correr las sentencias de GRANT y SELECT para cada uno de los esquemas? Entiendo que las tablas geometry_columns y public.spatial_ref_sys son exclusivas para el esquema public, pero de todas maneras me gustaría clarificar sobre esta cuestión, al menos en el GRANT.

    Desde ya agradezco mucho tu respuesta.

    Responder
    • Patricio Soriano dice

      14/07/2022 a las 09:44

      Saludos Mauro. Gracias por tus comentarios.
      Efectivamente si cuentas datos en otros esquemas diferentes a public debes añadirlos cuando gestionas sus permisos.

      Responder

¿Quieres comentarnos algo? Adelante! Cancelar la respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Footer

Menú Legal

  • Aviso Legal
  • Política de privacidad
  • Política de cookies
  • Términos y condiciones

Otras páginas de interes

  • Promociones y descuentos en formación
  • Formación bonificada FUNDAE

Contacto

Calle Luis Morondo Urra nº 8 Bajo A
31006 Pamplona (Navarra)
info@geoinnova.org
+34 948 117 137

Horario de atención

Lunes a Viernes - 09:00 a 14:00 y de 16:00 a 19:00.
Fines de semana y Festivos - Exclusivamente por mail.
Horario de Verano (01 de julio al 30 de agosto): De lunes a viernes de 8 a 15h.
Entidad adherida a Confianza Online Certificado de inscripción en el Registro de huella de carbono, compensación y proyectos de absorción Logo Plazox

© 2023 · Desarrollada por Geoinnova en colaboración con OikosMSP

Gestionar el Consentimiento de las Cookies
Utilizamos tecnologías como las cookies para almacenar y/o acceder a la información del dispositivo. Lo hacemos para mejorar la experiencia de navegación y para mostrar anuncios personalizados. El consentimiento a estas tecnologías nos permitirá procesar datos como el comportamiento de navegación o las identificaciones únicas en este sitio. No consentir o retirar el consentimiento, puede afectar negativamente a ciertas características y funciones.
Funcional Siempre activo
El almacenamiento o acceso técnico es estrictamente necesario para el propósito legítimo de permitir el uso de un servicio específico explícitamente solicitado por el abonado o usuario, o con el único propósito de llevar a cabo la transmisión de una comunicación a través de una red de comunicaciones electrónicas.
Preferencias
El almacenamiento o acceso técnico es necesario para la finalidad legítima de almacenar preferencias no solicitadas por el abonado o usuario.
Estadísticas
El almacenamiento o acceso técnico que es utilizado exclusivamente con fines estadísticos. El almacenamiento o acceso técnico que es utilizado exclusivamente con fines estadísticos anónimos. Sin una requerimiento, el cumplimiento voluntario por parte de su proveedor de servicios de Internet, o los registros adicionales de un tercero, la información almacenada o recuperada sólo para este propósito no se puede utilizar para identificarlo.
Marketing
El almacenamiento o acceso técnico es necesario para crear perfiles de usuario para enviar publicidad, o para rastrear al usuario en un sitio web o en varios sitios web con fines de marketing similares.
Administrar opciones Gestionar los servicios Gestionar proveedores Leer más sobre estos propósitos
Preferencias
{title} {title} {title}