Re: Continuum Security design

2006-07-11 Thread Joakim Erdfelt

Carlos Sanchez wrote:

http://docs.codehaus.org/display/CONTINUUM/Security

Please take a look and provide feedback on the semantics of what to
secure and to what level.


Some discussion with Jesse McConnell about the security ...

[11:01:38]  jmcconnell: do you see the comment in it's fully 
rendered splendor?

[11:02:21]  jerdfelt: yep, much better :)
[11:03:28]  jerdfelt: and I agree totally, that my thought 
as well
[11:04:37]  only question is if the roles should be provided 
globally or on a per project basis

[11:04:57]  per project.
[11:05:07]  but when you add the 'group' wrinkle, things get odd.
[11:05:12]  ya
[11:05:53]  when you kick this up a lvl it gets messy
[11:06:22]  kinda like groups should be a part of projects
[11:07:16]  and you can maintain one user having access to 
multiple projects and being a member of different groups in different 
projects

[11:08:28]  suppose the thing to do is respond to that mail
[11:08:31]  jmcconnell: yes, the ability to belong to multiple 
groups is needed.
[11:08:54]  multiple groups in a projects or multiple 
projects/one group each
[11:09:21]  ah, the many to many, many to one, one to many 
question.

[11:09:35]  Each group needs to support multiple projects.
[11:09:43]  if we get to that point then we ought to toss 
the group concept and go straight to project roles
[11:09:57]  with profiles that can be applied topeople to 
easily manage the roles they have

[11:10:09]  ah. profiles. good idea.
[11:10:26]  cept, we could call them groups to the users. ;-)
[11:10:29]  the groups concept doesn't scale with this
[11:10:55]  right, but the group membership does nothing 
except toggle the appropriate roles

[11:11:24]  question is, should the profile be enforced?
[11:11:48]  and when rendering we check if their role config 
matchs any known 'groups' and if not then render as 'custom'
[11:11:49]  or is it just the ability to set a large set of 
permissions on a one time basis.

[11:12:12]  the latter
[11:12:24]  makes it easier to setup a user's roles
[11:12:26]  we could create virtual users that are actually 
groups. map them to a user via a role. (ick)
[11:13:35]  well, if this is the way to go then its simply a 
matter of how best to manage all the possibloe rolls across all the 
projects...when it comes to a particular security check it is a simple 
role check and that is it

[11:13:37]  is there an upper limit on role names?
[11:13:57]  i want it to be a simple role check at the code level.
[11:14:07]  jerdfelt: exactly
[11:14:20]  manageing the users role is just a UI issue at 
that point

[11:14:29]  unless we have this group concept in place as well
[11:14:36]  wonder if I should just copy/paste this IRC 
discussion into the continuum-dev list. ;-)
[11:14:55]  which kinda seems like an unholy marriage of 
security strategies
[11:15:00]  I see the group concept as needed from a user 
point of view.

[11:15:01]  jerdfelt: yes, we should

- Joakim Erdfelt


Re: Continuum Security design

2006-07-11 Thread Carlos Sanchez

I've updated the wiki with my latest thoughts.

I suggest this reading
http://acegisecurity.org/docbook/acegi.html#domain-acls which explains
how to add instance based security with ACLs. It's a good option and
allows fine grained permissions for user, project and type of
operation.

On 7/11/06, Jesse McConnell <[EMAIL PROTECTED]> wrote:

well, here are my thoughts on the matter summed up after some
subsequent discussion on this between joakim, carlos and myself:

If continuum is to scale up to multiple projects, say continuum
building in the same instance along side maven and the maven
repository manager then we are going to need a simple fine grained
security mechanism that isn't clunky to use.

the perhaps ill chosen 'unholy marriage of security strategies' phrase
above basically refers to the current implementation of groups and
roles.  We have role based security for all of the different types
functionalities, and then it has been kicked around to have group
based access to different projects...and these groups are made up of
sets of roles.  Perhaps there was some misunderstanding  on the
specifics but at least my thoughts on the matter are that we are best
served with a straight forward role based security model where access
to special views and the ability to perform certain actions are
governed by individual roles on a per project basis.

ie, if there is a role for 'FORCE_BUILDS' then there ought to be one
of these roles for each project in continuum, in the above example we
might have 'CONTINUUM_FORCE_BUILD', MAVEN_FORCE_BUILD' and
'MRM_FORCE_BUILD'.  Each user would have the ability to be assigned
these roles and would then have that access for each of the particular
projects.

If we have this simple role based approach then all of the security
checks, which as joakim mentioned are the vast majority of usage for
the security', are very simple role checks.  It becomes then a matter
of figuring out the best way to manage these roles and there are lots
of different examples of that out in the wild, be they the ability to
make profiles of roles that can be applied to users, to long lists of
checkboxes (not so fun).  Joakim had mentioned that the roles would
likely be dynamic based on the projects as they were added in and that
we could put in some simple dynamic filters or profiles that would
initialize the project and a user with the necessary settings and then
further access could be pushed out from there..

I talked to trygve about this a bit and he mentioned that jason has
put some rbac (http://en.wikipedia.org/wiki/RBAC) code into plexus
sometime ago...and that is ultimately where any of this needs to end
up so that other projects can have immediate access to the different
security mechanisms.

carlos, joakim...I miss anything in this?




--
I could give you my word as a Spaniard.
No good. I've known too many Spaniards.
-- The Princess Bride


Re: Continuum Security design

2006-07-11 Thread Jesse McConnell

well, here are my thoughts on the matter summed up after some
subsequent discussion on this between joakim, carlos and myself:

If continuum is to scale up to multiple projects, say continuum
building in the same instance along side maven and the maven
repository manager then we are going to need a simple fine grained
security mechanism that isn't clunky to use.

the perhaps ill chosen 'unholy marriage of security strategies' phrase
above basically refers to the current implementation of groups and
roles.  We have role based security for all of the different types
functionalities, and then it has been kicked around to have group
based access to different projects...and these groups are made up of
sets of roles.  Perhaps there was some misunderstanding  on the
specifics but at least my thoughts on the matter are that we are best
served with a straight forward role based security model where access
to special views and the ability to perform certain actions are
governed by individual roles on a per project basis.

ie, if there is a role for 'FORCE_BUILDS' then there ought to be one
of these roles for each project in continuum, in the above example we
might have 'CONTINUUM_FORCE_BUILD', MAVEN_FORCE_BUILD' and
'MRM_FORCE_BUILD'.  Each user would have the ability to be assigned
these roles and would then have that access for each of the particular
projects.

If we have this simple role based approach then all of the security
checks, which as joakim mentioned are the vast majority of usage for
the security', are very simple role checks.  It becomes then a matter
of figuring out the best way to manage these roles and there are lots
of different examples of that out in the wild, be they the ability to
make profiles of roles that can be applied to users, to long lists of
checkboxes (not so fun).  Joakim had mentioned that the roles would
likely be dynamic based on the projects as they were added in and that
we could put in some simple dynamic filters or profiles that would
initialize the project and a user with the necessary settings and then
further access could be pushed out from there..

I talked to trygve about this a bit and he mentioned that jason has
put some rbac (http://en.wikipedia.org/wiki/RBAC) code into plexus
sometime ago...and that is ultimately where any of this needs to end
up so that other projects can have immediate access to the different
security mechanisms.

carlos, joakim...I miss anything in this?


Re: Continuum Security design

2006-07-11 Thread Joakim Erdfelt

Carlos Sanchez wrote:

http://docs.codehaus.org/display/CONTINUUM/Security

Please take a look and provide feedback on the semantics of what to
secure and to what level.


Some discussion with Jesse McConnell about the security ...

[11:01:38]  jmcconnell: do you see the comment in it's fully 
rendered splendor?

[11:02:21]  jerdfelt: yep, much better :)
[11:03:28]  jerdfelt: and I agree totally, that my thought 
as well
[11:04:37]  only question is if the roles should be provided 
globally or on a per project basis

[11:04:57]  per project.
[11:05:07]  but when you add the 'group' wrinkle, things get odd.
[11:05:12]  ya
[11:05:53]  when you kick this up a lvl it gets messy
[11:06:22]  kinda like groups should be a part of projects
[11:07:16]  and you can maintain one user having access to 
multiple projects and being a member of different groups in different 
projects

[11:08:28]  suppose the thing to do is respond to that mail
[11:08:31]  jmcconnell: yes, the ability to belong to multiple 
groups is needed.
[11:08:54]  multiple groups in a projects or multiple 
projects/one group each
[11:09:21]  ah, the many to many, many to one, one to many 
question.

[11:09:35]  Each group needs to support multiple projects.
[11:09:43]  if we get to that point then we ought to toss 
the group concept and go straight to project roles
[11:09:57]  with profiles that can be applied topeople to 
easily manage the roles they have

[11:10:09]  ah. profiles. good idea.
[11:10:26]  cept, we could call them groups to the users. ;-)
[11:10:29]  the groups concept doesn't scale with this
[11:10:55]  right, but the group membership does nothing 
except toggle the appropriate roles

[11:11:24]  question is, should the profile be enforced?
[11:11:48]  and when rendering we check if their role config 
matchs any known 'groups' and if not then render as 'custom'
[11:11:49]  or is it just the ability to set a large set of 
permissions on a one time basis.

[11:12:12]  the latter
[11:12:24]  makes it easier to setup a user's roles
[11:12:26]  we could create virtual users that are actually 
groups. map them to a user via a role. (ick)
[11:13:35]  well, if this is the way to go then its simply a 
matter of how best to manage all the possibloe rolls across all the 
projects...when it comes to a particular security check it is a simple 
role check and that is it

[11:13:37]  is there an upper limit on role names?
[11:13:57]  i want it to be a simple role check at the code 
level.

[11:14:07]  jerdfelt: exactly
[11:14:20]  manageing the users role is just a UI issue at 
that point

[11:14:29]  unless we have this group concept in place as well
[11:14:36]  wonder if I should just copy/paste this IRC 
discussion into the continuum-dev list. ;-)
[11:14:55]  which kinda seems like an unholy marriage of 
security strategies
[11:15:00]  I see the group concept as needed from a user 
point of view.

[11:15:01]  jerdfelt: yes, we should

- Joakim Erdfelt