librelist archives

« back to archive

Feature specification draft for user profiles and permissions

Feature specification draft for user profiles and permissions

From:
Sebastian Benthall
Date:
2010-05-04 @ 20:34
could not decode message

Re: [geonode] Feature specification draft for user profiles and permissions

From:
David Winslow
Date:
2010-05-04 @ 21:06
On 05/04/2010 04:34 PM, Sebastian Benthall wrote:
> Attached is a draft of the feature specification for the "1.5 - 2.0" GeoNode
> milestones.  I'm sending it along because it has what we have so far for a
> description of what we want for user profiles and access control.
>
> It's a bit dusty; we haven't really looked at it for some time.  My question
> is: is it (especially the final section on "Permissions") complete enough to
> inform the discussion of how we should implement the Django-side of the
> access control API?  Or are there open questions that I should work on
> specifying?
>
> I'm directing this mostly at David, but Ariel you might want to take a look
> as well.
>
> Thanks
Okay so quick overview:
We want GeoNode ownership and group membership to affect not just what 
users can do through the Django site, but also what is exposed through 
GeoServer (and eventually GeoNetwork as well).  In order to do this, we 
want to have the Django site's user model be authoritative (so that we 
don't have to reproduce the work that's been done in Django for user 
self-registration etc.)  Therefore, we need a way for GeoServer to check 
credentials for a Django user.  The idea is to simply have Django 
provide an authenticated web service that tells the logged-in user what 
layers he can see. When GeoServer receives a request for restricted 
data, it will forward whatever credentials it can extract from the 
request along to Django and use that list to determine whether the 
requested operation is allowed.

For this (ignoring the front-end work to make it accessible to 
end-users) we need:
a) users in Django
b) some way of determining all of the layers that a particular user is 
allowed to see/edit/whatever.
c) A django view that turns that list into a JSON or other serialized form.

We get (a) and (c) from Django! Woo! but (b) is a little fuzzy as 
Django's built-in authorization system works only at the granularity of 
model types.  So we need to figure out how we want to determine access 
for a user, that's the part of the spec that's missing.

 From this document, here's what I'm getting:
* Users can upload stuff. If a given user x uploaded some dataset, he is 
the Owner of that dataset and use the GeoNode to do anything that 
GeoNode supports with that dataset.
* Users who aren't the owners of a given layer can have some permission 
granted to it anyway (presumably by the owner).  These permissions can be:
   * Not permitted: Users with no permission to a resource may not view 
or edit the resource.
   * Read: Users with Read permission may view and, where appropriate, 
download the resource.
   * Write: Users with Write permission have the privileges of Read 
permission and the ability to edit the content of that resource.
   * Administrative: Users with Administrative permission have the 
privileges of Write permission and also:
     + when not precluded by other constraints on permission assignment 
(see items below) the ability to alter the permissions of other users 
and groups to that resource, and
     + the ability to delete the resource

I think the 'precluded by other constraints' bit doesn't apply to 
datasets, which is all we really care about in GeoServer for the moment.

What surprises me about this spec is that Groups apparently have no 
bearing on access control.  But if we don't need to have groups do that 
for this round, I guess we can implement the ACL stuff in terms of this 
security model.

--
David Winslow
OpenGeo - http://opengeo.org/

Re: [geonode] Feature specification draft for user profiles and permissions

From:
Sebastian Benthall
Date:
2010-05-06 @ 19:12
Ok, so it sounds like this is what we got for the requirements on this:


First:

> the front-end work to make it accessible to
> end-users
>

Rollie, we'll need your help with this, if you could make time for it in the
next week or two, the sooner the better.

And then these:

> a) users in Django
> b) some way of determining all of the layers that a particular user is
> allowed to see/edit/whatever.
> c) A django view that turns that list into a JSON or other serialized form.
>

The docs for the API are over here:

http://atlas.openplans.org/~dwinslow/geonode-spec/spec/technical/geonode-core/geoserver/permissions.html

I'll make tickets based on this shortly.

-- 
Sebastian Benthall
OpenGeo - http://opengeo.org

Re: [geonode] Feature specification draft for user profiles and permissions

From:
Sebastian Benthall
Date:
2010-05-06 @ 18:59
>
> What surprises me about this spec is that Groups apparently have no
> bearing on access control.  But if we don't need to have groups do that
> for this round, I guess we can implement the ACL stuff in terms of this
> security model.


If I recall correctly, in the discussions several months ago we concluded
that Groups and ACLs were too complicated for the first round of security
requirements.

Since *some* ability to control data access is very important for clients
using GeoNode as an SDI, we're going to go with just users on ACL's for now
and extend it when we get more time/funding.

-- 
Sebastian Benthall
OpenGeo - http://opengeo.org

Re: [geonode] Feature specification draft for user profiles and permissions

From:
Ariel Nunez
Date:
2010-05-04 @ 21:27
>
>
> We get (a) and (c) from Django! Woo! but (b) is a little fuzzy as
> Django's built-in authorization system works only at the granularity of
> model types.  So we need to figure out how we want to determine access
> for a user, that's the part of the spec that's missing.
>
>
We could use this app [1] (or similar) as a helper to implement the list of
constraints David mentioned.
In any case, that is something that should land in Django proper anytime
soon [2]

[1]

http://opensource.washingtontimes.com/blog/post/coordt/2009/12/django-object-permissions-proof-concept/

[2]
http://docs.djangoproject.com/en/dev/releases/1.2/#object-level-permissions

Re: [geonode] Feature specification draft for user profiles and permissions

From:
David Winslow
Date:
2010-05-04 @ 21:37
On 05/04/2010 05:27 PM, Ariel Nunez wrote:
>>
>> We get (a) and (c) from Django! Woo! but (b) is a little fuzzy as
>> Django's built-in authorization system works only at the granularity of
>> model types.  So we need to figure out how we want to determine access
>> for a user, that's the part of the spec that's missing.
>>
>>
>>      
> We could use this app [1] (or similar) as a helper to implement the list of
> constraints David mentioned.
> In any case, that is something that should land in Django proper anytime
> soon [2]
>
> [1]
> 
http://opensource.washingtontimes.com/blog/post/coordt/2009/12/django-object-permissions-proof-concept/
>
> [2]
> http://docs.djangoproject.com/en/dev/releases/1.2/#object-level-permissions
>
>    

Awesome, I had no idea this was in the pipeline.  Guess I ought to hop 
on the Django mailing list.

-d