Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

GNIP-74: Geospatial security restrictions to layers #5835

Closed
3 of 5 tasks
afabiani opened this issue Mar 9, 2020 · 8 comments
Closed
3 of 5 tasks

GNIP-74: Geospatial security restrictions to layers #5835

afabiani opened this issue Mar 9, 2020 · 8 comments
Assignees
Labels
feature A new feature to be added to the codebase gnip A GeoNodeImprovementProcess Issue
Milestone

Comments

@afabiani
Copy link
Member

afabiani commented Mar 9, 2020

GNIP 74 - Geospatial security restrictions to layers

Overview

Our proposal is to extend the GeoNode permission management window, in the "layer details" section, to ensure that a user can be associated with a geographical restriction in order to limit access to the layer to only the portions contained within a geographic restriction, excluding data outside of it from generating the response.

image

To do this we intend to add a new element at the bottom of the permissions management modal window as shown in the figure so that it will be possible:

  • Select one of the users or groups are explicitly given access (except the resource owner)
    • Create or replace a geographical restriction by uploading a shapefile. Then save it.
    • Create or edit a geographical restriction on the map. Then save it.
    • Export an existing geographical restriction to GeoJSON or WKT.
    • Remove an existing geographical restriction.
  • Repeat the above actions for another user or group.

Proposed By

@afabiani

Assigned to Release

This proposal is for GeoNode 3.0.

State

  • Under Discussion
  • In Progress
  • Completed
  • Rejected
  • Deferred

Motivation

By using GeoServer along with GeoFence, GeoNode can benefit from a very powerful and granular security subsystem.
In particular, we would like to exploit all the potentialities of the security framework by allowing GeoNode administrators to be able to decide to restrict the access to some datasets by drawing/uploading an area of interest around it.

Proposal

This feature is compatible, and it will be enabled, only by using GeoServer with GeoFence extension backend.

GeoFence already allows defining rules with geospatial restrictions[1].

By adding an Access type LIMIT Rule to a Layer, it is possible to define a WKT area which will be used by GeoServer to filter out all the data not allowed to the selected User or Role.

From the GeoNode perspective, we don't need a deep change. We will need just a way to handle/draw such restriction areas and synchronize them with GeoFence somehow.

This will be mostly frontend stuff with a small change to the Layer model and APIs in order to store such pieces of information on the GeoNode database.

Backwards Compatibility

This feature won't be backported to releases older than 3.0

Future evolution

We can envisage in the future to add more restrictions types, like, as an instance, restrictions by Attributes.

Feedback

  • No feedback yet.

Voting

Project Steering Committee:

  • Alessio Fabiani: +1
  • Francesco Bartoli: +1
  • Paolo Corti:
  • Simone Dalmasso:
  • Toni Schoenbuchner: +1

Links

Remove unused links below.

@afabiani afabiani added gnip A GeoNodeImprovementProcess Issue feature A new feature to be added to the codebase labels Mar 9, 2020
@afabiani afabiani added this to the 3.0 milestone Mar 9, 2020
@afabiani afabiani self-assigned this Mar 9, 2020
@t-book
Copy link
Contributor

t-book commented Mar 9, 2020

@afabiani Absolutely +1, thanks

For my taste, the modal layout looks a bit "squeezed". How about having tabs for each section?

gnip

@gannebamm
Copy link
Contributor

gannebamm commented Mar 9, 2020

For me this is a feature for a relatively small subset of the community. I think the more advanced GeoFence security options can also be managed by GeoServer and its administrator. Since GeoNodes GUI is already full of things you can define putting more on it could clutter it and downgrade its usability.
Therefore a -0 from me

@jondoig
Copy link
Contributor

jondoig commented Mar 10, 2020

+1 as I can see this being useful for collaborations between local groups (e.g. local councils).

Q: How do the geo limits relate to permitted actions? E.g. how do I say "Liverpool group can view and download the whole dataset, but only edit features in Liverpool"?

@t-book I was thinking tabs also, but at the top of the permissions dialog:
GNIP-5835-tabs

@gannebamm
Copy link
Contributor

@jondoig I like your mockup and see the possible use-case

@francbartoli
Copy link
Member

+1 for me. Good proposal!

@afabiani
Copy link
Member Author

Ok for the new mockups, I like them.

For the time being the rule will be applied to all services. So, in the case a User or a Group will be limited to a certain area, it won't be able to view nor edit outside the limits.

@francbartoli
Copy link
Member

@afabiani I wouldn't expect the votes from Paolo and Simone so we might agree to consider the GNIP approved yet with the majority of PSC members

@t-book
Copy link
Contributor

t-book commented Mar 12, 2020

I agree with @francbartoli

afabiani pushed a commit that referenced this issue Mar 26, 2020
[Fixes #5835] GNIP-74: Geospatial security restrictions to layers
afabiani pushed a commit that referenced this issue Apr 3, 2020
[Issue #5835] GNIP-74 Improvements: toggle GWC cache instead of removing it
afabiani pushed a commit that referenced this issue Apr 3, 2020
…ctions to layers

(cherry picked from commit 45c68fd)
afabiani pushed a commit that referenced this issue Apr 4, 2020
…ctions to layers

(cherry picked from commit 45c68fd)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
feature A new feature to be added to the codebase gnip A GeoNodeImprovementProcess Issue
Projects
None yet
Development

No branches or pull requests

5 participants