Seguridad en GeoServer: evitar la descarga de datos

seguridad en geoserver

GeoServer es un servidor de código abierto escrito en Java que permite a los usuarios compartir y editar datos geoespaciales.

Diseñado para la interoperabilidad, GeoServer publica los datos de cualquier fuente de datos espaciales utilizando estándares abiertos. GeoServer implementa prácticamente todos los protocolos estándares open web que establece el Open Geospatial Consortium (OGC).

GeoServer es un proyecto ejemplar por su activa comunidad y sus frecuentes actualizaciones. Además destaca por su amigable interfaz y sus extensiones al estándar SLD, y el soporte de estilos CSS.

La seguridad en GeoServer

Mediante la gestión de usuarios en GeoServer, creación de roles, acceso a determinados servicios y datos mejoramos la seguridad del sistema, reduciendo al mínimo los desastres potenciales.

Si algunas capas contienen información confidencial, su visualización debería ser deshabilitada a menos que alguien especializado tenga acceso a esta información.

Muchas de las funciones de GeoServer están disponibles a través de acceso anónimo, sin requerir ninguna cuenta de usuario. Las funciones permitidas por defecto con acceso anónimo son:

  1. Visualización de documentos de capacidades (GetCapabilities).
  2. Ejecución de solicitudes GetFeature y GetMap.
  3. Uso de las Demos (Colección de aplicaciones de ejemplo y herramientas de GeoServer).

Una vez añadidas nuestras capas a GeoServer si lo que deseamos es mostrar nuestros datos espaciales pero evitar la descarga de los mismos, debemos realizar una configuración muy sencilla dentro del apartado Seguridad de nuestro servidor espacial GeoServer.

La petición GetFeature de WFS

El protocolo utilizado para obtener los elementos de los datos geográficos se denomina Web Feature Service (WFS).

Un servicio WFS es un estándar creado por el OGC para crear, modificar e intercambiar formato vectorial de información geográfica en Internet utilizando HTTP.

La descarga de las capas del servidor se realiza mediante el parámetro output-format de la operación GetFeature. Esta petición devuelve una selección de objetos geográficos de una fuente de datos que incluye los valores de geometría y atributos.

Un ejemplo de petición GetFeature para la descarga de geometrías desde GeoServer indicando como formato de salida shapefile, sería la siguiente:

http://localhost:8080/geoserver/earth/wfs?
service=wfs&
version=2.0.0&
request=getfeature&
typeName=earth:cities&
outputFormat=shape-zip

Restricción de acceso a la operación GetFeature de WFS

La descarga de features (objetos geográficos) se puede evitar creando una regla que restrinja la descarga de datos para un determinado usuario. Vamos a restringir el acceso a este servicio solamente para la cuenta de usuario con permisos de administración.

1. Entramos en GeoServer y nos autenticamos con una cuenta de usuario que posea permisos de administración (por defecto será admin/geoserver).

2. En el menú Seguridad, clic en Seguridad de los servicios:

seguridad de los servicios3. Añadimos una nueva regla:

nueva regla

4. Rellenamos los campos con la siguiente información:

  • En Servicio selecciona wfs.
  • En método selecciona GetFeature.
  • En la sección Roles, clic sobre ADMIN y luego clic sobre la fecha que indica la derecha para mover el rol a la caja de Selected Roles.

configurar nueva regla

  1. Clic en guardar. Así quedarían las reglas de acceso a los servicios:
reglas
Una vez añadidas nuestras capas en GeoServer conviene tener unas medidas de seguridad mínimas para evitar el acceso no deseado y evitar la vulnerabilidad. Por ejemplo permitir el acceso al Servicio de Geoprocesamiento Web (WPS) puede penalizar el rendimiento del sitio si se deja sin seguridad. En este caso el acceso a los Servicios de Procesamiento Web (WPS) y a la edición transaccional también está limitado a un usuario con permisos de administración.

Comprobando el escenario. Acceso anónimo a la descarga de datos desde GeoServer

Para probar el acceso anónimo, cierra la sesión en GeoServer y realiza las siguientes pruebas:

Ve a Layer preview

  1. Ve a Layer preview, previsualiza con OpenLayers alguna capa. ¿Todo correcto, verdad?
  2. Ahora en la misma sección y sin autenticarnos, en el deplegable selecciona dentro de WFS Formats la opción Shapefile, para intentar descargar el archivo en formato shp. Clic en Go.

Shapefile

 

En este momento nos pedirá autenticarnos con un usuario válido, de otro modo la descarga no será posible:

autenticación

Si iniciamos sesión con la cuenta de administrador se descargará la capa, sin embargo si cancelamos la autenticación se producirá un error y la capa no se descargará.

Comprobando el escenario. Acceso a la descarga de datos desde QGIS

Conéctate desde un cliente SIG de escritorio al WFS de GeoServer (por ejemplo http://localhost:8080/geoserver/wfs?), sin incluir ningún nombre de usuario.

La conexión se realiza aparentemente sin problemas:

wfs qgis

Sin embargo en el momento de seleccionar una capa y pinchar sobre el botón Añadir nos pide autenticarnos:

introducir credenciales

Y sin esta medida de seguridad no es posible obtener los datos espaciales, ni descargarlos.

Si quieres aprender GeoServer, desde su instalación hasta la configuración de la seguridad de los servicios, pasando por la creación de estilos para tus capas, inscríbete en nuestro curso online desarrollo de aplicaciones webmapping.

11 comentarios en «Seguridad en GeoServer: evitar la descarga de datos»

  1. Hola, deseo actualizar algunos datos de mi base de datos a atraves de geoserver, pero veo q en las vistas SQL solo admiten SELECT, quisiera saber como correr una sentencia SQL con un INSERT o UPDATE inclusive DELETE o DROP, muchas gracias de antemano

  2. Hola Estimado Aurerlio,

    Deseo saber como puedo bloquear el uso de la descargar de ciertas capas que están dentro de un espacio de trabajo y que las otras se las pueda descargar normalmente sin ningun tipo de restricción, debido a que en el ejemplo indica sobre los wfs en la seguridad de los servicios pero para todo los WFS y no deseo para todos sino tan solo para las que se encuentren dentro de un espacio de trabajo, es posible esto??

    Saludos

    Paúl Andrade

    • Hola estimado Paul,
      Sí, es posible.
      Se trataría de crear un nuevo espacio de trabajo en el que tuvieses las capas protegidas y a continuación en el apartado de seguridad, crear usuarios (con sontraseña) y roles y vincularlos al espacio de trabajo privado o protegido. El proceso completo lo realizamos en en nuestro curso desarrollo de aplicaciones webmapping. Un saludo cordial, Aurelio

  3. Hola quiero permitir el acceso de un usuario (distinto del admin)a determinadas capas con el servicio wfs y pruebo:

    En primer lugar tienes que crear una reglas de acceso a datos. A los datos de visualización restringida.

    A continuación crear un rol de acceso a esos datos.

    Y por último crear usuarios con ese rol, con sus claves de usuario y contraseña.

    y no me funciona porque no solo puede escribir las capas que le permito sino todas!

  4. Hola,

    Hemos desarrollado un visualizador que consume, via wfs, ciertas capas en geoserver.
    El problema es que no todos los usuarios del visualizador deberían ver todas las capas.
    ¿Hay alguna manera de restringir la visualización de los datos por usuario? No me refiero a la descarga sino a la simple visualización.

    Gracias.

    • Hola Miguel,

      En primer lugar tienes que crear una reglas de acceso a datos. A los datos de visualización restringida.

      A continuación crear un rol de acceso a esos datos.

      Y por último crear usuarios con ese rol, con sus claves de usuario y contraseña.

      Un saludo!

      • Hola Aurelio, en mi caso los usuarios pueden ver en qgis datos de geosver que tienen origen postgis, pero mi problema es que el usuario puede descargar la info contenida en las tablas, las tablas son vistas en postgis, no pueden crear, ni eliminar, pero si pueden descargar, ¿cómo evito dicha fuga de dato?

        • Hola Elvis, En este caso la opción sería personalizar QGIS para evitar abrir las tablas de atributos, ya que aunque no se pueda descargar en formato gml, la visualización es posible, y la visualización de tablas no evita que ésta se pueda descargar… Saludos

  5. que pasaria se tengo una capa de propiedades para un estado y debo darle acceso a 4 personas a la misma capa para que descargue el servivio wfs; pero resulta que una fincas son de uno y otras son de otro y el que esta gestionando las numero 1 no deberia ver las 2 y asi;
    yo en lo personal incluí un filtro para cada uno pero como jalan de la misma capa si el 1 se digita el filtro del dos va a poder descargar la capa del dos habrá algo en geoserver que me permita validar un parámetro por usuario.

    • Hola Alonzo,

      Me ha resultado muy difícil entender tu pregunta… pero creo que puedes solucionar tu problema creando roles y espacios de trabajo privados con acceso único para determinados roles. Un saludo, Aurelio

Los comentarios están cerrados.