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:
- Visualización de documentos de capacidades (GetCapabilities).
- Ejecución de solicitudes GetFeature y GetMap.
- 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:
3. Añadimos una 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.
- Clic en guardar. Así quedarían las reglas de acceso a los servicios:
![reglas](http://mappinggis.com/wp-content/uploads/2015/07/reglas.png)
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
- Ve a Layer preview, previsualiza con OpenLayers alguna capa. ¿Todo correcto, verdad?
- 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.
En este momento nos pedirá autenticarnos con un usuario válido, de otro modo la descarga no será posible:
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:
Sin embargo en el momento de seleccionar una capa y pinchar sobre el botón Añadir nos pide autenticarnos:
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.
Licenciado en Geografía. Máster en Sistemas de Información Geográfica. Consultor GIS desde el año 2004. En MappingGIS desde el año 2012 para ayudarte a impulsar tu perfil GIS y diferenciarte de la competencia. Echa un vistazo a todos nuestros cursos de SIG online.
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
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
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!
Hola Lorena,
Para permitir el acceso de determinados usuarios a unas capas especificas debes crear un nuevo workspace, incluir las capas restringidas en ese workspace y dar acceso a ese workspace solo a determinados roles (con su usuario y contraseña). En el curso online desarrollo de aplicaciones webmapping te mostramos cómo hacerlo. Un saludo!
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
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