Brainstorming: Security Configuration Patterns

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
35 messages Options
12
Reply | Threaded
Open this post in threaded view
|

Brainstorming: Security Configuration Patterns

David E Jones-3

This thread is specifically for discussing possible configuration  
patterns to use in OFBiz going forward. Please keep other discussion  
in another thread, including the merits of each possibility... let's  
just brainstorm in this thread.

To get things started, here are the patterns that have been discussed  
recently (in high level terms, we can get into implementation and  
specific practices later on), these are in no particular order:

1. artifacts responsible for their own security (especially services  
and screens), and security permissions are referred to directly (ie  
the actual permissions are configured directly in the XML tags for the  
artifact)

2. artifacts responsible for their own security, and no direct  
references are used and instead an indirect security control is  
referred to; this is basically the permission service model we've been  
using where a permission service is basically a security policy that  
refers to permissions, can query/filter/whatever to do record level  
security, and in customization the permission service can be  
overridden or its function changed by ECA rules without touching any  
OOTB code or configuration

3. a hybrid of #1 and #2 where artifacts refer directly to permissions  
and there is external configuration based on those permissions that  
can add other qualifying permissions and/or invoke logic to change how  
that permission is evaluated (ie override the default behavior of  
requiring the user to have that permission and either add additional  
constraints or allow alternative constraints even if the user does not  
have the original permission that triggered it all); this is recursive  
so that if an alternative permission is configured that permission may  
also have further alternative permissions; also being recursive if  
attached logic evaluates other permissions that may have alternative  
permissions and/or permission logic attached to them; as I understand  
what Andrew has implemented, this is the pattern he followed

4. artifacts are not responsible for their own security except to  
specify whether any sort of permission is required or not (ie a  
require-permission attribute, would be true by default; for example  
most ecommerce screens would have this set to false); access control  
would be configured externally so that you can configure access at the  
most granular level possible (we would go ALL the way here, including:  
screens, services, forms, form fields, menu items, tree nodes, etc,  
etc); the access control tools would have patterns and features to  
facilitate grouping of artifacts, grouping of users (ie just use the  
current SecurityGroup entity), and support for both functionality  
access and record-level access

Can anyone thing of other patterns? Again, PLEASE do not comment on  
which one you like better or what you think the advantages or  
disadvantages are of each in this thread (of course, definitely think  
about such things and feel free to comment in other threads, I just  
want this to be a "hat's off" (yes, that is a reference to Six  
Thinking Hats by Edward de Bono; anyone who hasn't read that should  
give it a go!) brainstorming session.

Thank You!
-David

Reply | Threaded
Open this post in threaded view
|

Re: Brainstorming: Security Configuration Patterns

Adrian Crum
David E Jones wrote:
> 1. artifacts responsible for their own security (especially services and
> screens), and security permissions are referred to directly (ie the
> actual permissions are configured directly in the XML tags for the
> artifact)

If this is referring to my proposal, it's not accurate. It should be
more like:

1. Artifacts (any screen widget, service, or entity) are security-aware
and exhibit default behavior based on a user's permissions.

-Adrian

Reply | Threaded
Open this post in threaded view
|

Re: Brainstorming: Security Configuration Patterns

David E Jones-3


On May 4, 2009, at 12:31 PM, Adrian Crum wrote:

> David E Jones wrote:
>> 1. artifacts responsible for their own security (especially  
>> services and screens), and security permissions are referred to  
>> directly (ie the actual permissions are configured directly in the  
>> XML tags for the artifact)
>
> If this is referring to my proposal, it's not accurate. It should be  
> more like:
>
> 1. Artifacts (any screen widget, service, or entity) are security-
> aware and exhibit default behavior based on a user's permissions.

Sorry, I meant #4 to be closer to what you were presenting. #1 is a  
super-simple model like we used a long time ago and just had  
permission checks with literal permission IDs in service defs (or  
implementations) and in screens and such.

-David

Reply | Threaded
Open this post in threaded view
|

Re: Brainstorming: Security Configuration Patterns

Ruth Hoffman-2
In reply to this post by David E Jones-3
Hi All:
One pattern I worked with some time ago is called Role Based Access
Control (RBAC). This would be similar to #4 below, where you have a
"role" - with permissions associated with that role - defining
authorization levels. If you are interested in exploring this further,
I'd be happy to elaborate.

Ruth
David E Jones wrote:

>
> This thread is specifically for discussing possible configuration
> patterns to use in OFBiz going forward. Please keep other discussion
> in another thread, including the merits of each possibility... let's
> just brainstorm in this thread.
>
> To get things started, here are the patterns that have been discussed
> recently (in high level terms, we can get into implementation and
> specific practices later on), these are in no particular order:
>
> 1. artifacts responsible for their own security (especially services
> and screens), and security permissions are referred to directly (ie
> the actual permissions are configured directly in the XML tags for the
> artifact)
>
> 2. artifacts responsible for their own security, and no direct
> references are used and instead an indirect security control is
> referred to; this is basically the permission service model we've been
> using where a permission service is basically a security policy that
> refers to permissions, can query/filter/whatever to do record level
> security, and in customization the permission service can be
> overridden or its function changed by ECA rules without touching any
> OOTB code or configuration
>
> 3. a hybrid of #1 and #2 where artifacts refer directly to permissions
> and there is external configuration based on those permissions that
> can add other qualifying permissions and/or invoke logic to change how
> that permission is evaluated (ie override the default behavior of
> requiring the user to have that permission and either add additional
> constraints or allow alternative constraints even if the user does not
> have the original permission that triggered it all); this is recursive
> so that if an alternative permission is configured that permission may
> also have further alternative permissions; also being recursive if
> attached logic evaluates other permissions that may have alternative
> permissions and/or permission logic attached to them; as I understand
> what Andrew has implemented, this is the pattern he followed
>
> 4. artifacts are not responsible for their own security except to
> specify whether any sort of permission is required or not (ie a
> require-permission attribute, would be true by default; for example
> most ecommerce screens would have this set to false); access control
> would be configured externally so that you can configure access at the
> most granular level possible (we would go ALL the way here, including:
> screens, services, forms, form fields, menu items, tree nodes, etc,
> etc); the access control tools would have patterns and features to
> facilitate grouping of artifacts, grouping of users (ie just use the
> current SecurityGroup entity), and support for both functionality
> access and record-level access
>
> Can anyone thing of other patterns? Again, PLEASE do not comment on
> which one you like better or what you think the advantages or
> disadvantages are of each in this thread (of course, definitely think
> about such things and feel free to comment in other threads, I just
> want this to be a "hat's off" (yes, that is a reference to Six
> Thinking Hats by Edward de Bono; anyone who hasn't read that should
> give it a go!) brainstorming session.
>
> Thank You!
> -David
>
>

Reply | Threaded
Open this post in threaded view
|

Re: Brainstorming: Security Configuration Patterns

Adrian Crum
Novell Netware has that, plus security groups. You can assign
permissions to roles or groups, then assign the users to roles or groups.

Another thing Netware has that might be useful - security equivalency.
If two users require exactly the same sets of permissions, you don't
have to assign those permissions twice. You assign permissions for one
user, then make the second user "security equivalent" to the first.

-Adrian

Ruth Hoffman wrote:

> Hi All:
> One pattern I worked with some time ago is called Role Based Access
> Control (RBAC). This would be similar to #4 below, where you have a
> "role" - with permissions associated with that role - defining
> authorization levels. If you are interested in exploring this further,
> I'd be happy to elaborate.
>
> Ruth
> David E Jones wrote:
>>
>> This thread is specifically for discussing possible configuration
>> patterns to use in OFBiz going forward. Please keep other discussion
>> in another thread, including the merits of each possibility... let's
>> just brainstorm in this thread.
>>
>> To get things started, here are the patterns that have been discussed
>> recently (in high level terms, we can get into implementation and
>> specific practices later on), these are in no particular order:
>>
>> 1. artifacts responsible for their own security (especially services
>> and screens), and security permissions are referred to directly (ie
>> the actual permissions are configured directly in the XML tags for the
>> artifact)
>>
>> 2. artifacts responsible for their own security, and no direct
>> references are used and instead an indirect security control is
>> referred to; this is basically the permission service model we've been
>> using where a permission service is basically a security policy that
>> refers to permissions, can query/filter/whatever to do record level
>> security, and in customization the permission service can be
>> overridden or its function changed by ECA rules without touching any
>> OOTB code or configuration
>>
>> 3. a hybrid of #1 and #2 where artifacts refer directly to permissions
>> and there is external configuration based on those permissions that
>> can add other qualifying permissions and/or invoke logic to change how
>> that permission is evaluated (ie override the default behavior of
>> requiring the user to have that permission and either add additional
>> constraints or allow alternative constraints even if the user does not
>> have the original permission that triggered it all); this is recursive
>> so that if an alternative permission is configured that permission may
>> also have further alternative permissions; also being recursive if
>> attached logic evaluates other permissions that may have alternative
>> permissions and/or permission logic attached to them; as I understand
>> what Andrew has implemented, this is the pattern he followed
>>
>> 4. artifacts are not responsible for their own security except to
>> specify whether any sort of permission is required or not (ie a
>> require-permission attribute, would be true by default; for example
>> most ecommerce screens would have this set to false); access control
>> would be configured externally so that you can configure access at the
>> most granular level possible (we would go ALL the way here, including:
>> screens, services, forms, form fields, menu items, tree nodes, etc,
>> etc); the access control tools would have patterns and features to
>> facilitate grouping of artifacts, grouping of users (ie just use the
>> current SecurityGroup entity), and support for both functionality
>> access and record-level access
>>
>> Can anyone thing of other patterns? Again, PLEASE do not comment on
>> which one you like better or what you think the advantages or
>> disadvantages are of each in this thread (of course, definitely think
>> about such things and feel free to comment in other threads, I just
>> want this to be a "hat's off" (yes, that is a reference to Six
>> Thinking Hats by Edward de Bono; anyone who hasn't read that should
>> give it a go!) brainstorming session.
>>
>> Thank You!
>> -David
>>
>>
>
>
Reply | Threaded
Open this post in threaded view
|

Re: Brainstorming: Security Configuration Patterns

Ruth Hoffman-2
FYI - RBAC came out of work done by the NSA (National Security Agency)
to improve on the then existing - mandatory access controls
(MAC)/discretionary access controls (DAC) in (early) versions of UNIX. I
worked a Unix based add-on application that took this model and
incorporated it into a single sign-on system.

RBAC also discusses the idea of security groups and assignment of
permissions to roles and groups as you describe below.
Ruth
Adrian Crum wrote:

> Novell Netware has that, plus security groups. You can assign
> permissions to roles or groups, then assign the users to roles or groups.
>
> Another thing Netware has that might be useful - security equivalency.
> If two users require exactly the same sets of permissions, you don't
> have to assign those permissions twice. You assign permissions for one
> user, then make the second user "security equivalent" to the first.
>
> -Adrian
>
> Ruth Hoffman wrote:
>> Hi All:
>> One pattern I worked with some time ago is called Role Based Access
>> Control (RBAC). This would be similar to #4 below, where you have a
>> "role" - with permissions associated with that role - defining
>> authorization levels. If you are interested in exploring this
>> further, I'd be happy to elaborate.
>>
>> Ruth
>> David E Jones wrote:
>>>
>>> This thread is specifically for discussing possible configuration
>>> patterns to use in OFBiz going forward. Please keep other discussion
>>> in another thread, including the merits of each possibility... let's
>>> just brainstorm in this thread.
>>>
>>> To get things started, here are the patterns that have been
>>> discussed recently (in high level terms, we can get into
>>> implementation and specific practices later on), these are in no
>>> particular order:
>>>
>>> 1. artifacts responsible for their own security (especially services
>>> and screens), and security permissions are referred to directly (ie
>>> the actual permissions are configured directly in the XML tags for
>>> the artifact)
>>>
>>> 2. artifacts responsible for their own security, and no direct
>>> references are used and instead an indirect security control is
>>> referred to; this is basically the permission service model we've
>>> been using where a permission service is basically a security policy
>>> that refers to permissions, can query/filter/whatever to do record
>>> level security, and in customization the permission service can be
>>> overridden or its function changed by ECA rules without touching any
>>> OOTB code or configuration
>>>
>>> 3. a hybrid of #1 and #2 where artifacts refer directly to
>>> permissions and there is external configuration based on those
>>> permissions that can add other qualifying permissions and/or invoke
>>> logic to change how that permission is evaluated (ie override the
>>> default behavior of requiring the user to have that permission and
>>> either add additional constraints or allow alternative constraints
>>> even if the user does not have the original permission that
>>> triggered it all); this is recursive so that if an alternative
>>> permission is configured that permission may also have further
>>> alternative permissions; also being recursive if attached logic
>>> evaluates other permissions that may have alternative permissions
>>> and/or permission logic attached to them; as I understand what
>>> Andrew has implemented, this is the pattern he followed
>>>
>>> 4. artifacts are not responsible for their own security except to
>>> specify whether any sort of permission is required or not (ie a
>>> require-permission attribute, would be true by default; for example
>>> most ecommerce screens would have this set to false); access control
>>> would be configured externally so that you can configure access at
>>> the most granular level possible (we would go ALL the way here,
>>> including: screens, services, forms, form fields, menu items, tree
>>> nodes, etc, etc); the access control tools would have patterns and
>>> features to facilitate grouping of artifacts, grouping of users (ie
>>> just use the current SecurityGroup entity), and support for both
>>> functionality access and record-level access
>>>
>>> Can anyone thing of other patterns? Again, PLEASE do not comment on
>>> which one you like better or what you think the advantages or
>>> disadvantages are of each in this thread (of course, definitely
>>> think about such things and feel free to comment in other threads, I
>>> just want this to be a "hat's off" (yes, that is a reference to Six
>>> Thinking Hats by Edward de Bono; anyone who hasn't read that should
>>> give it a go!) brainstorming session.
>>>
>>> Thank You!
>>> -David
>>>
>>>
>>
>>
>

Reply | Threaded
Open this post in threaded view
|

Re: Brainstorming: Security Configuration Patterns

Harmeet Bedi
In reply to this post by Ruth Hoffman-2
I think an important thing missing is parentId in SecurityGroup.
Adding that would give you heirarchy. Groups sort of are roles. Group has association with Subject(UserLogin through UserLoginSecurityGroup), Permission(SecurityGroupPermission), Permission is tied implicitly to action and resource.. Sort of RBAC.

Harmeet

----- Original Message -----
From: "Ruth Hoffman" <[hidden email]>
To: [hidden email]
Sent: Tuesday, May 5, 2009 11:05:12 AM GMT -05:00 US/Canada Eastern
Subject: Re: Brainstorming: Security Configuration Patterns

Hi All:
One pattern I worked with some time ago is called Role Based Access
Control (RBAC). This would be similar to #4 below, where you have a
"role" - with permissions associated with that role - defining
authorization levels. If you are interested in exploring this further,
I'd be happy to elaborate.

Ruth
David E Jones wrote:

>
> This thread is specifically for discussing possible configuration
> patterns to use in OFBiz going forward. Please keep other discussion
> in another thread, including the merits of each possibility... let's
> just brainstorm in this thread.
>
> To get things started, here are the patterns that have been discussed
> recently (in high level terms, we can get into implementation and
> specific practices later on), these are in no particular order:
>
> 1. artifacts responsible for their own security (especially services
> and screens), and security permissions are referred to directly (ie
> the actual permissions are configured directly in the XML tags for the
> artifact)
>
> 2. artifacts responsible for their own security, and no direct
> references are used and instead an indirect security control is
> referred to; this is basically the permission service model we've been
> using where a permission service is basically a security policy that
> refers to permissions, can query/filter/whatever to do record level
> security, and in customization the permission service can be
> overridden or its function changed by ECA rules without touching any
> OOTB code or configuration
>
> 3. a hybrid of #1 and #2 where artifacts refer directly to permissions
> and there is external configuration based on those permissions that
> can add other qualifying permissions and/or invoke logic to change how
> that permission is evaluated (ie override the default behavior of
> requiring the user to have that permission and either add additional
> constraints or allow alternative constraints even if the user does not
> have the original permission that triggered it all); this is recursive
> so that if an alternative permission is configured that permission may
> also have further alternative permissions; also being recursive if
> attached logic evaluates other permissions that may have alternative
> permissions and/or permission logic attached to them; as I understand
> what Andrew has implemented, this is the pattern he followed
>
> 4. artifacts are not responsible for their own security except to
> specify whether any sort of permission is required or not (ie a
> require-permission attribute, would be true by default; for example
> most ecommerce screens would have this set to false); access control
> would be configured externally so that you can configure access at the
> most granular level possible (we would go ALL the way here, including:
> screens, services, forms, form fields, menu items, tree nodes, etc,
> etc); the access control tools would have patterns and features to
> facilitate grouping of artifacts, grouping of users (ie just use the
> current SecurityGroup entity), and support for both functionality
> access and record-level access
>
> Can anyone thing of other patterns? Again, PLEASE do not comment on
> which one you like better or what you think the advantages or
> disadvantages are of each in this thread (of course, definitely think
> about such things and feel free to comment in other threads, I just
> want this to be a "hat's off" (yes, that is a reference to Six
> Thinking Hats by Edward de Bono; anyone who hasn't read that should
> give it a go!) brainstorming session.
>
> Thank You!
> -David
>
>

Reply | Threaded
Open this post in threaded view
|

Re: Brainstorming: Security Configuration Patterns

Vikas Mayur-3
In reply to this post by Adrian Crum
In security equivalency, what would happen if the permission for first  
user are changed? Does these permission are also applied to second user?

Vikas

On May 5, 2009, at 8:50 PM, Adrian Crum wrote:

> Novell Netware has that, plus security groups. You can assign  
> permissions to roles or groups, then assign the users to roles or  
> groups.
>
> Another thing Netware has that might be useful - security  
> equivalency. If two users require exactly the same sets of  
> permissions, you don't have to assign those permissions twice. You  
> assign permissions for one user, then make the second user "security  
> equivalent" to the first.
>
> -Adrian
>
> Ruth Hoffman wrote:
>> Hi All:
>> One pattern I worked with some time ago is called Role Based Access  
>> Control (RBAC). This would be similar to #4 below, where you have a  
>> "role" - with permissions associated with that role - defining  
>> authorization levels. If you are interested in exploring this  
>> further, I'd be happy to elaborate.
>> Ruth
>> David E Jones wrote:
>>>
>>> This thread is specifically for discussing possible configuration  
>>> patterns to use in OFBiz going forward. Please keep other  
>>> discussion in another thread, including the merits of each  
>>> possibility... let's just brainstorm in this thread.
>>>
>>> To get things started, here are the patterns that have been  
>>> discussed recently (in high level terms, we can get into  
>>> implementation and specific practices later on), these are in no  
>>> particular order:
>>>
>>> 1. artifacts responsible for their own security (especially  
>>> services and screens), and security permissions are referred to  
>>> directly (ie the actual permissions are configured directly in the  
>>> XML tags for the artifact)
>>>
>>> 2. artifacts responsible for their own security, and no direct  
>>> references are used and instead an indirect security control is  
>>> referred to; this is basically the permission service model we've  
>>> been using where a permission service is basically a security  
>>> policy that refers to permissions, can query/filter/whatever to do  
>>> record level security, and in customization the permission service  
>>> can be overridden or its function changed by ECA rules without  
>>> touching any OOTB code or configuration
>>>
>>> 3. a hybrid of #1 and #2 where artifacts refer directly to  
>>> permissions and there is external configuration based on those  
>>> permissions that can add other qualifying permissions and/or  
>>> invoke logic to change how that permission is evaluated (ie  
>>> override the default behavior of requiring the user to have that  
>>> permission and either add additional constraints or allow  
>>> alternative constraints even if the user does not have the  
>>> original permission that triggered it all); this is recursive so  
>>> that if an alternative permission is configured that permission  
>>> may also have further alternative permissions; also being  
>>> recursive if attached logic evaluates other permissions that may  
>>> have alternative permissions and/or permission logic attached to  
>>> them; as I understand what Andrew has implemented, this is the  
>>> pattern he followed
>>>
>>> 4. artifacts are not responsible for their own security except to  
>>> specify whether any sort of permission is required or not (ie a  
>>> require-permission attribute, would be true by default; for  
>>> example most ecommerce screens would have this set to false);  
>>> access control would be configured externally so that you can  
>>> configure access at the most granular level possible (we would go  
>>> ALL the way here, including: screens, services, forms, form  
>>> fields, menu items, tree nodes, etc, etc); the access control  
>>> tools would have patterns and features to facilitate grouping of  
>>> artifacts, grouping of users (ie just use the current  
>>> SecurityGroup entity), and support for both functionality access  
>>> and record-level access
>>>
>>> Can anyone thing of other patterns? Again, PLEASE do not comment  
>>> on which one you like better or what you think the advantages or  
>>> disadvantages are of each in this thread (of course, definitely  
>>> think about such things and feel free to comment in other threads,  
>>> I just want this to be a "hat's off" (yes, that is a reference to  
>>> Six Thinking Hats by Edward de Bono; anyone who hasn't read that  
>>> should give it a go!) brainstorming session.
>>>
>>> Thank You!
>>> -David
>>>
>>>


smime.p7s (3K) Download Attachment
Reply | Threaded
Open this post in threaded view
|

Re: Brainstorming: Security Configuration Patterns

Adrian Crum
Yes.

-Adrian

Vikas Mayur wrote:

> In security equivalency, what would happen if the permission for first
> user are changed? Does these permission are also applied to second user?
>
> Vikas
>
> On May 5, 2009, at 8:50 PM, Adrian Crum wrote:
>
>> Novell Netware has that, plus security groups. You can assign
>> permissions to roles or groups, then assign the users to roles or groups.
>>
>> Another thing Netware has that might be useful - security equivalency.
>> If two users require exactly the same sets of permissions, you don't
>> have to assign those permissions twice. You assign permissions for one
>> user, then make the second user "security equivalent" to the first.
>>
>> -Adrian
>>
>> Ruth Hoffman wrote:
>>> Hi All:
>>> One pattern I worked with some time ago is called Role Based Access
>>> Control (RBAC). This would be similar to #4 below, where you have a
>>> "role" - with permissions associated with that role - defining
>>> authorization levels. If you are interested in exploring this
>>> further, I'd be happy to elaborate.
>>> Ruth
>>> David E Jones wrote:
>>>>
>>>> This thread is specifically for discussing possible configuration
>>>> patterns to use in OFBiz going forward. Please keep other discussion
>>>> in another thread, including the merits of each possibility... let's
>>>> just brainstorm in this thread.
>>>>
>>>> To get things started, here are the patterns that have been
>>>> discussed recently (in high level terms, we can get into
>>>> implementation and specific practices later on), these are in no
>>>> particular order:
>>>>
>>>> 1. artifacts responsible for their own security (especially services
>>>> and screens), and security permissions are referred to directly (ie
>>>> the actual permissions are configured directly in the XML tags for
>>>> the artifact)
>>>>
>>>> 2. artifacts responsible for their own security, and no direct
>>>> references are used and instead an indirect security control is
>>>> referred to; this is basically the permission service model we've
>>>> been using where a permission service is basically a security policy
>>>> that refers to permissions, can query/filter/whatever to do record
>>>> level security, and in customization the permission service can be
>>>> overridden or its function changed by ECA rules without touching any
>>>> OOTB code or configuration
>>>>
>>>> 3. a hybrid of #1 and #2 where artifacts refer directly to
>>>> permissions and there is external configuration based on those
>>>> permissions that can add other qualifying permissions and/or invoke
>>>> logic to change how that permission is evaluated (ie override the
>>>> default behavior of requiring the user to have that permission and
>>>> either add additional constraints or allow alternative constraints
>>>> even if the user does not have the original permission that
>>>> triggered it all); this is recursive so that if an alternative
>>>> permission is configured that permission may also have further
>>>> alternative permissions; also being recursive if attached logic
>>>> evaluates other permissions that may have alternative permissions
>>>> and/or permission logic attached to them; as I understand what
>>>> Andrew has implemented, this is the pattern he followed
>>>>
>>>> 4. artifacts are not responsible for their own security except to
>>>> specify whether any sort of permission is required or not (ie a
>>>> require-permission attribute, would be true by default; for example
>>>> most ecommerce screens would have this set to false); access control
>>>> would be configured externally so that you can configure access at
>>>> the most granular level possible (we would go ALL the way here,
>>>> including: screens, services, forms, form fields, menu items, tree
>>>> nodes, etc, etc); the access control tools would have patterns and
>>>> features to facilitate grouping of artifacts, grouping of users (ie
>>>> just use the current SecurityGroup entity), and support for both
>>>> functionality access and record-level access
>>>>
>>>> Can anyone thing of other patterns? Again, PLEASE do not comment on
>>>> which one you like better or what you think the advantages or
>>>> disadvantages are of each in this thread (of course, definitely
>>>> think about such things and feel free to comment in other threads, I
>>>> just want this to be a "hat's off" (yes, that is a reference to Six
>>>> Thinking Hats by Edward de Bono; anyone who hasn't read that should
>>>> give it a go!) brainstorming session.
>>>>
>>>> Thank You!
>>>> -David
>>>>
>>>>
>
Reply | Threaded
Open this post in threaded view
|

Re: Brainstorming: Security Configuration Patterns

Andrew Zeneski-2
In reply to this post by Harmeet Bedi
I agree with this. We could add a parentGroupId to the SecurityGroup  
entity, then a group would inherit all permissions from the parent  
groups up the tree as well as the permissions associated with that  
group specifically. Another thing we could do is add a field to  
SecurityGroupPermission which would tell the system to either include  
or exclude that permission from the group.

Then you could have groups inherit from parents with minor changes  
(exclude) or minor additions.

Andrew

On May 5, 2009, at 11:52 AM, Harmeet Bedi wrote:

> I think an important thing missing is parentId in SecurityGroup.
> Adding that would give you heirarchy. Groups sort of are roles.  
> Group has association with Subject(UserLogin through  
> UserLoginSecurityGroup), Permission(SecurityGroupPermission),  
> Permission is tied implicitly to action and resource.. Sort of RBAC.
>
> Harmeet
>
> ----- Original Message -----
> From: "Ruth Hoffman" <[hidden email]>
> To: [hidden email]
> Sent: Tuesday, May 5, 2009 11:05:12 AM GMT -05:00 US/Canada Eastern
> Subject: Re: Brainstorming: Security Configuration Patterns
>
> Hi All:
> One pattern I worked with some time ago is called Role Based Access
> Control (RBAC). This would be similar to #4 below, where you have a
> "role" - with permissions associated with that role - defining
> authorization levels. If you are interested in exploring this further,
> I'd be happy to elaborate.
>
> Ruth
> David E Jones wrote:
>>
>> This thread is specifically for discussing possible configuration
>> patterns to use in OFBiz going forward. Please keep other discussion
>> in another thread, including the merits of each possibility... let's
>> just brainstorm in this thread.
>>
>> To get things started, here are the patterns that have been discussed
>> recently (in high level terms, we can get into implementation and
>> specific practices later on), these are in no particular order:
>>
>> 1. artifacts responsible for their own security (especially services
>> and screens), and security permissions are referred to directly (ie
>> the actual permissions are configured directly in the XML tags for  
>> the
>> artifact)
>>
>> 2. artifacts responsible for their own security, and no direct
>> references are used and instead an indirect security control is
>> referred to; this is basically the permission service model we've  
>> been
>> using where a permission service is basically a security policy that
>> refers to permissions, can query/filter/whatever to do record level
>> security, and in customization the permission service can be
>> overridden or its function changed by ECA rules without touching any
>> OOTB code or configuration
>>
>> 3. a hybrid of #1 and #2 where artifacts refer directly to  
>> permissions
>> and there is external configuration based on those permissions that
>> can add other qualifying permissions and/or invoke logic to change  
>> how
>> that permission is evaluated (ie override the default behavior of
>> requiring the user to have that permission and either add additional
>> constraints or allow alternative constraints even if the user does  
>> not
>> have the original permission that triggered it all); this is  
>> recursive
>> so that if an alternative permission is configured that permission  
>> may
>> also have further alternative permissions; also being recursive if
>> attached logic evaluates other permissions that may have alternative
>> permissions and/or permission logic attached to them; as I understand
>> what Andrew has implemented, this is the pattern he followed
>>
>> 4. artifacts are not responsible for their own security except to
>> specify whether any sort of permission is required or not (ie a
>> require-permission attribute, would be true by default; for example
>> most ecommerce screens would have this set to false); access control
>> would be configured externally so that you can configure access at  
>> the
>> most granular level possible (we would go ALL the way here,  
>> including:
>> screens, services, forms, form fields, menu items, tree nodes, etc,
>> etc); the access control tools would have patterns and features to
>> facilitate grouping of artifacts, grouping of users (ie just use the
>> current SecurityGroup entity), and support for both functionality
>> access and record-level access
>>
>> Can anyone thing of other patterns? Again, PLEASE do not comment on
>> which one you like better or what you think the advantages or
>> disadvantages are of each in this thread (of course, definitely think
>> about such things and feel free to comment in other threads, I just
>> want this to be a "hat's off" (yes, that is a reference to Six
>> Thinking Hats by Edward de Bono; anyone who hasn't read that should
>> give it a go!) brainstorming session.
>>
>> Thank You!
>> -David
>>
>>
>

Reply | Threaded
Open this post in threaded view
|

Re: Brainstorming: Security Configuration Patterns

Ruth Hoffman-2
In reply to this post by Harmeet Bedi
Harmeet:

Groups within OFBiz are similar to roles but in the RBAC model a "role"
is an entity in and of itself. A group or collection of groups (also
defined in RBAC as unique entities) may have one or more roles applied
to them just as a user might. I think the value of RBAC is in its
extensibility.

For example, by defining "roles" we can abstract the definition of a
permission (the security constraint in this case) away from the
assignment of the permission.

Just my 2 cents.
Ruth

> I think an important thing missing is parentId in SecurityGroup.
> Adding that would give you heirarchy. Groups sort of are roles. Group has association with Subject(UserLogin through UserLoginSecurityGroup), Permission(SecurityGroupPermission), Permission is tied implicitly to action and resource.. Sort of RBAC.
>
> Harmeet
>
> ----- Original Message -----
> From: "Ruth Hoffman" <[hidden email]>
> To: [hidden email]
> Sent: Tuesday, May 5, 2009 11:05:12 AM GMT -05:00 US/Canada Eastern
> Subject: Re: Brainstorming: Security Configuration Patterns
>
> Hi All:
> One pattern I worked with some time ago is called Role Based Access
> Control (RBAC). This would be similar to #4 below, where you have a
> "role" - with permissions associated with that role - defining
> authorization levels. If you are interested in exploring this further,
> I'd be happy to elaborate.
>
> Ruth
> David E Jones wrote:
>  
>> This thread is specifically for discussing possible configuration
>> patterns to use in OFBiz going forward. Please keep other discussion
>> in another thread, including the merits of each possibility... let's
>> just brainstorm in this thread.
>>
>> To get things started, here are the patterns that have been discussed
>> recently (in high level terms, we can get into implementation and
>> specific practices later on), these are in no particular order:
>>
>> 1. artifacts responsible for their own security (especially services
>> and screens), and security permissions are referred to directly (ie
>> the actual permissions are configured directly in the XML tags for the
>> artifact)
>>
>> 2. artifacts responsible for their own security, and no direct
>> references are used and instead an indirect security control is
>> referred to; this is basically the permission service model we've been
>> using where a permission service is basically a security policy that
>> refers to permissions, can query/filter/whatever to do record level
>> security, and in customization the permission service can be
>> overridden or its function changed by ECA rules without touching any
>> OOTB code or configuration
>>
>> 3. a hybrid of #1 and #2 where artifacts refer directly to permissions
>> and there is external configuration based on those permissions that
>> can add other qualifying permissions and/or invoke logic to change how
>> that permission is evaluated (ie override the default behavior of
>> requiring the user to have that permission and either add additional
>> constraints or allow alternative constraints even if the user does not
>> have the original permission that triggered it all); this is recursive
>> so that if an alternative permission is configured that permission may
>> also have further alternative permissions; also being recursive if
>> attached logic evaluates other permissions that may have alternative
>> permissions and/or permission logic attached to them; as I understand
>> what Andrew has implemented, this is the pattern he followed
>>
>> 4. artifacts are not responsible for their own security except to
>> specify whether any sort of permission is required or not (ie a
>> require-permission attribute, would be true by default; for example
>> most ecommerce screens would have this set to false); access control
>> would be configured externally so that you can configure access at the
>> most granular level possible (we would go ALL the way here, including:
>> screens, services, forms, form fields, menu items, tree nodes, etc,
>> etc); the access control tools would have patterns and features to
>> facilitate grouping of artifacts, grouping of users (ie just use the
>> current SecurityGroup entity), and support for both functionality
>> access and record-level access
>>
>> Can anyone thing of other patterns? Again, PLEASE do not comment on
>> which one you like better or what you think the advantages or
>> disadvantages are of each in this thread (of course, definitely think
>> about such things and feel free to comment in other threads, I just
>> want this to be a "hat's off" (yes, that is a reference to Six
>> Thinking Hats by Edward de Bono; anyone who hasn't read that should
>> give it a go!) brainstorming session.
>>
>> Thank You!
>> -David
>>
>>
>>    
>
>
>  

Reply | Threaded
Open this post in threaded view
|

Re: Brainstorming: Security Configuration Patterns

Harmeet Bedi
In reply to this post by David E Jones-3
To me this seemed to be intent from data model.

- Group is PartyGroup that can be a collection of party through PartyRelationship.
- PartyGroup is a Party. SecurityGroup can apply to Party hence to a PartyGroup
- SecurityGroup is not a group of users, it is a role that applies to a Party.


On closer inspection that does seem to be the case.
It seems that SecurityGroup is really a collection of user logins.. so not a role at all.

I see your point.. inserting a SecurityRole entity between Group and Permission would be more flexible. In that case SecurityGroup is really a UserLoginGroup.

Harmeet

----- Original Message -----
From: "Ruth Hoffman" <[hidden email]>
To: [hidden email]
Sent: Tuesday, May 5, 2009 1:44:34 PM GMT -05:00 US/Canada Eastern
Subject: Re: Brainstorming: Security Configuration Patterns

Harmeet:

Groups within OFBiz are similar to roles but in the RBAC model a "role"
is an entity in and of itself. A group or collection of groups (also
defined in RBAC as unique entities) may have one or more roles applied
to them just as a user might. I think the value of RBAC is in its
extensibility.

For example, by defining "roles" we can abstract the definition of a
permission (the security constraint in this case) away from the
assignment of the permission.

Just my 2 cents.
Ruth

> I think an important thing missing is parentId in SecurityGroup.
> Adding that would give you heirarchy. Groups sort of are roles. Group has association with Subject(UserLogin through UserLoginSecurityGroup), Permission(SecurityGroupPermission), Permission is tied implicitly to action and resource.. Sort of RBAC.
>
> Harmeet
>
> ----- Original Message -----
> From: "Ruth Hoffman" <[hidden email]>
> To: [hidden email]
> Sent: Tuesday, May 5, 2009 11:05:12 AM GMT -05:00 US/Canada Eastern
> Subject: Re: Brainstorming: Security Configuration Patterns
>
> Hi All:
> One pattern I worked with some time ago is called Role Based Access
> Control (RBAC). This would be similar to #4 below, where you have a
> "role" - with permissions associated with that role - defining
> authorization levels. If you are interested in exploring this further,
> I'd be happy to elaborate.
>
> Ruth
> David E Jones wrote:
>  
>> This thread is specifically for discussing possible configuration
>> patterns to use in OFBiz going forward. Please keep other discussion
>> in another thread, including the merits of each possibility... let's
>> just brainstorm in this thread.
>>
>> To get things started, here are the patterns that have been discussed
>> recently (in high level terms, we can get into implementation and
>> specific practices later on), these are in no particular order:
>>
>> 1. artifacts responsible for their own security (especially services
>> and screens), and security permissions are referred to directly (ie
>> the actual permissions are configured directly in the XML tags for the
>> artifact)
>>
>> 2. artifacts responsible for their own security, and no direct
>> references are used and instead an indirect security control is
>> referred to; this is basically the permission service model we've been
>> using where a permission service is basically a security policy that
>> refers to permissions, can query/filter/whatever to do record level
>> security, and in customization the permission service can be
>> overridden or its function changed by ECA rules without touching any
>> OOTB code or configuration
>>
>> 3. a hybrid of #1 and #2 where artifacts refer directly to permissions
>> and there is external configuration based on those permissions that
>> can add other qualifying permissions and/or invoke logic to change how
>> that permission is evaluated (ie override the default behavior of
>> requiring the user to have that permission and either add additional
>> constraints or allow alternative constraints even if the user does not
>> have the original permission that triggered it all); this is recursive
>> so that if an alternative permission is configured that permission may
>> also have further alternative permissions; also being recursive if
>> attached logic evaluates other permissions that may have alternative
>> permissions and/or permission logic attached to them; as I understand
>> what Andrew has implemented, this is the pattern he followed
>>
>> 4. artifacts are not responsible for their own security except to
>> specify whether any sort of permission is required or not (ie a
>> require-permission attribute, would be true by default; for example
>> most ecommerce screens would have this set to false); access control
>> would be configured externally so that you can configure access at the
>> most granular level possible (we would go ALL the way here, including:
>> screens, services, forms, form fields, menu items, tree nodes, etc,
>> etc); the access control tools would have patterns and features to
>> facilitate grouping of artifacts, grouping of users (ie just use the
>> current SecurityGroup entity), and support for both functionality
>> access and record-level access
>>
>> Can anyone thing of other patterns? Again, PLEASE do not comment on
>> which one you like better or what you think the advantages or
>> disadvantages are of each in this thread (of course, definitely think
>> about such things and feel free to comment in other threads, I just
>> want this to be a "hat's off" (yes, that is a reference to Six
>> Thinking Hats by Edward de Bono; anyone who hasn't read that should
>> give it a go!) brainstorming session.
>>
>> Thank You!
>> -David
>>
>>
>>    
>
>
>  

Reply | Threaded
Open this post in threaded view
|

Re: Brainstorming: Security Configuration Patterns

Andrew Zeneski-2
Actually, SecurityGroup is a group that links permissions  
(SecurityGroupPermission) which then get associated with UserLogins  
(UserLoginSecurityGroup). In some systems a Role is a collection of  
permissions, much like a SecurityGroup in OFBiz.

On May 5, 2009, at 2:26 PM, Harmeet Bedi wrote:

> To me this seemed to be intent from data model.
>
> - Group is PartyGroup that can be a collection of party through  
> PartyRelationship.
> - PartyGroup is a Party. SecurityGroup can apply to Party hence to a  
> PartyGroup
> - SecurityGroup is not a group of users, it is a role that applies  
> to a Party.
>
>
> On closer inspection that does seem to be the case.
> It seems that SecurityGroup is really a collection of user logins..  
> so not a role at all.
>
> I see your point.. inserting a SecurityRole entity between Group and  
> Permission would be more flexible. In that case SecurityGroup is  
> really a UserLoginGroup.
>
> Harmeet
>
> ----- Original Message -----
> From: "Ruth Hoffman" <[hidden email]>
> To: [hidden email]
> Sent: Tuesday, May 5, 2009 1:44:34 PM GMT -05:00 US/Canada Eastern
> Subject: Re: Brainstorming: Security Configuration Patterns
>
> Harmeet:
>
> Groups within OFBiz are similar to roles but in the RBAC model a  
> "role"
> is an entity in and of itself. A group or collection of groups (also
> defined in RBAC as unique entities) may have one or more roles applied
> to them just as a user might. I think the value of RBAC is in its
> extensibility.
>
> For example, by defining "roles" we can abstract the definition of a
> permission (the security constraint in this case) away from the
> assignment of the permission.
>
> Just my 2 cents.
> Ruth
>> I think an important thing missing is parentId in SecurityGroup.
>> Adding that would give you heirarchy. Groups sort of are roles.  
>> Group has association with Subject(UserLogin through  
>> UserLoginSecurityGroup), Permission(SecurityGroupPermission),  
>> Permission is tied implicitly to action and resource.. Sort of RBAC.
>>
>> Harmeet
>>
>> ----- Original Message -----
>> From: "Ruth Hoffman" <[hidden email]>
>> To: [hidden email]
>> Sent: Tuesday, May 5, 2009 11:05:12 AM GMT -05:00 US/Canada Eastern
>> Subject: Re: Brainstorming: Security Configuration Patterns
>>
>> Hi All:
>> One pattern I worked with some time ago is called Role Based Access
>> Control (RBAC). This would be similar to #4 below, where you have a
>> "role" - with permissions associated with that role - defining
>> authorization levels. If you are interested in exploring this  
>> further,
>> I'd be happy to elaborate.
>>
>> Ruth
>> David E Jones wrote:
>>
>>> This thread is specifically for discussing possible configuration
>>> patterns to use in OFBiz going forward. Please keep other discussion
>>> in another thread, including the merits of each possibility... let's
>>> just brainstorm in this thread.
>>>
>>> To get things started, here are the patterns that have been  
>>> discussed
>>> recently (in high level terms, we can get into implementation and
>>> specific practices later on), these are in no particular order:
>>>
>>> 1. artifacts responsible for their own security (especially services
>>> and screens), and security permissions are referred to directly (ie
>>> the actual permissions are configured directly in the XML tags for  
>>> the
>>> artifact)
>>>
>>> 2. artifacts responsible for their own security, and no direct
>>> references are used and instead an indirect security control is
>>> referred to; this is basically the permission service model we've  
>>> been
>>> using where a permission service is basically a security policy that
>>> refers to permissions, can query/filter/whatever to do record level
>>> security, and in customization the permission service can be
>>> overridden or its function changed by ECA rules without touching any
>>> OOTB code or configuration
>>>
>>> 3. a hybrid of #1 and #2 where artifacts refer directly to  
>>> permissions
>>> and there is external configuration based on those permissions that
>>> can add other qualifying permissions and/or invoke logic to change  
>>> how
>>> that permission is evaluated (ie override the default behavior of
>>> requiring the user to have that permission and either add additional
>>> constraints or allow alternative constraints even if the user does  
>>> not
>>> have the original permission that triggered it all); this is  
>>> recursive
>>> so that if an alternative permission is configured that permission  
>>> may
>>> also have further alternative permissions; also being recursive if
>>> attached logic evaluates other permissions that may have alternative
>>> permissions and/or permission logic attached to them; as I  
>>> understand
>>> what Andrew has implemented, this is the pattern he followed
>>>
>>> 4. artifacts are not responsible for their own security except to
>>> specify whether any sort of permission is required or not (ie a
>>> require-permission attribute, would be true by default; for example
>>> most ecommerce screens would have this set to false); access control
>>> would be configured externally so that you can configure access at  
>>> the
>>> most granular level possible (we would go ALL the way here,  
>>> including:
>>> screens, services, forms, form fields, menu items, tree nodes, etc,
>>> etc); the access control tools would have patterns and features to
>>> facilitate grouping of artifacts, grouping of users (ie just use the
>>> current SecurityGroup entity), and support for both functionality
>>> access and record-level access
>>>
>>> Can anyone thing of other patterns? Again, PLEASE do not comment on
>>> which one you like better or what you think the advantages or
>>> disadvantages are of each in this thread (of course, definitely  
>>> think
>>> about such things and feel free to comment in other threads, I just
>>> want this to be a "hat's off" (yes, that is a reference to Six
>>> Thinking Hats by Edward de Bono; anyone who hasn't read that should
>>> give it a go!) brainstorming session.
>>>
>>> Thank You!
>>> -David
>>>
>>>
>>>
>>
>>
>>
>

Reply | Threaded
Open this post in threaded view
|

Re: Brainstorming: Security Configuration Patterns

Rodrigo Lima-2
Hi,

Ideas:

1 - LDAP Secure Integration
2 - Implementation the Rest URL Secure ( LDAP based ).
3 - SOAP Header ( Service BUS Security concept ).



2009/5/5 Andrew Zeneski <[hidden email]>

> Actually, SecurityGroup is a group that links permissions
> (SecurityGroupPermission) which then get associated with UserLogins
> (UserLoginSecurityGroup). In some systems a Role is a collection of
> permissions, much like a SecurityGroup in OFBiz.
>
>
> On May 5, 2009, at 2:26 PM, Harmeet Bedi wrote:
>
> To me this seemed to be intent from data model.
>>
>> - Group is PartyGroup that can be a collection of party through
>> PartyRelationship.
>> - PartyGroup is a Party. SecurityGroup can apply to Party hence to a
>> PartyGroup
>> - SecurityGroup is not a group of users, it is a role that applies to a
>> Party.
>>
>>
>> On closer inspection that does seem to be the case.
>> It seems that SecurityGroup is really a collection of user logins.. so not
>> a role at all.
>>
>> I see your point.. inserting a SecurityRole entity between Group and
>> Permission would be more flexible. In that case SecurityGroup is really a
>> UserLoginGroup.
>>
>> Harmeet
>>
>> ----- Original Message -----
>> From: "Ruth Hoffman" <[hidden email]>
>> To: [hidden email]
>> Sent: Tuesday, May 5, 2009 1:44:34 PM GMT -05:00 US/Canada Eastern
>> Subject: Re: Brainstorming: Security Configuration Patterns
>>
>> Harmeet:
>>
>> Groups within OFBiz are similar to roles but in the RBAC model a "role"
>> is an entity in and of itself. A group or collection of groups (also
>> defined in RBAC as unique entities) may have one or more roles applied
>> to them just as a user might. I think the value of RBAC is in its
>> extensibility.
>>
>> For example, by defining "roles" we can abstract the definition of a
>> permission (the security constraint in this case) away from the
>> assignment of the permission.
>>
>> Just my 2 cents.
>> Ruth
>>
>>> I think an important thing missing is parentId in SecurityGroup.
>>> Adding that would give you heirarchy. Groups sort of are roles. Group has
>>> association with Subject(UserLogin through UserLoginSecurityGroup),
>>> Permission(SecurityGroupPermission), Permission is tied implicitly to action
>>> and resource.. Sort of RBAC.
>>>
>>> Harmeet
>>>
>>> ----- Original Message -----
>>> From: "Ruth Hoffman" <[hidden email]>
>>> To: [hidden email]
>>> Sent: Tuesday, May 5, 2009 11:05:12 AM GMT -05:00 US/Canada Eastern
>>> Subject: Re: Brainstorming: Security Configuration Patterns
>>>
>>> Hi All:
>>> One pattern I worked with some time ago is called Role Based Access
>>> Control (RBAC). This would be similar to #4 below, where you have a
>>> "role" - with permissions associated with that role - defining
>>> authorization levels. If you are interested in exploring this further,
>>> I'd be happy to elaborate.
>>>
>>> Ruth
>>> David E Jones wrote:
>>>
>>> This thread is specifically for discussing possible configuration
>>>> patterns to use in OFBiz going forward. Please keep other discussion
>>>> in another thread, including the merits of each possibility... let's
>>>> just brainstorm in this thread.
>>>>
>>>> To get things started, here are the patterns that have been discussed
>>>> recently (in high level terms, we can get into implementation and
>>>> specific practices later on), these are in no particular order:
>>>>
>>>> 1. artifacts responsible for their own security (especially services
>>>> and screens), and security permissions are referred to directly (ie
>>>> the actual permissions are configured directly in the XML tags for the
>>>> artifact)
>>>>
>>>> 2. artifacts responsible for their own security, and no direct
>>>> references are used and instead an indirect security control is
>>>> referred to; this is basically the permission service model we've been
>>>> using where a permission service is basically a security policy that
>>>> refers to permissions, can query/filter/whatever to do record level
>>>> security, and in customization the permission service can be
>>>> overridden or its function changed by ECA rules without touching any
>>>> OOTB code or configuration
>>>>
>>>> 3. a hybrid of #1 and #2 where artifacts refer directly to permissions
>>>> and there is external configuration based on those permissions that
>>>> can add other qualifying permissions and/or invoke logic to change how
>>>> that permission is evaluated (ie override the default behavior of
>>>> requiring the user to have that permission and either add additional
>>>> constraints or allow alternative constraints even if the user does not
>>>> have the original permission that triggered it all); this is recursive
>>>> so that if an alternative permission is configured that permission may
>>>> also have further alternative permissions; also being recursive if
>>>> attached logic evaluates other permissions that may have alternative
>>>> permissions and/or permission logic attached to them; as I understand
>>>> what Andrew has implemented, this is the pattern he followed
>>>>
>>>> 4. artifacts are not responsible for their own security except to
>>>> specify whether any sort of permission is required or not (ie a
>>>> require-permission attribute, would be true by default; for example
>>>> most ecommerce screens would have this set to false); access control
>>>> would be configured externally so that you can configure access at the
>>>> most granular level possible (we would go ALL the way here, including:
>>>> screens, services, forms, form fields, menu items, tree nodes, etc,
>>>> etc); the access control tools would have patterns and features to
>>>> facilitate grouping of artifacts, grouping of users (ie just use the
>>>> current SecurityGroup entity), and support for both functionality
>>>> access and record-level access
>>>>
>>>> Can anyone thing of other patterns? Again, PLEASE do not comment on
>>>> which one you like better or what you think the advantages or
>>>> disadvantages are of each in this thread (of course, definitely think
>>>> about such things and feel free to comment in other threads, I just
>>>> want this to be a "hat's off" (yes, that is a reference to Six
>>>> Thinking Hats by Edward de Bono; anyone who hasn't read that should
>>>> give it a go!) brainstorming session.
>>>>
>>>> Thank You!
>>>> -David
>>>>
>>>>
>>>>
>>>>
>>>
>>>
>>>
>>
>
Reply | Threaded
Open this post in threaded view
|

Re: Brainstorming: Security Configuration Patterns

Adrian Crum
Those ideas might be good to add to the related thread - "Brainstorming:
Security Requirements/Scenarios"

-Adrian

Rodrigo Lima wrote:

> Hi,
>
> Ideas:
>
> 1 - LDAP Secure Integration
> 2 - Implementation the Rest URL Secure ( LDAP based ).
> 3 - SOAP Header ( Service BUS Security concept ).
>
>
>
> 2009/5/5 Andrew Zeneski <[hidden email]>
>
>> Actually, SecurityGroup is a group that links permissions
>> (SecurityGroupPermission) which then get associated with UserLogins
>> (UserLoginSecurityGroup). In some systems a Role is a collection of
>> permissions, much like a SecurityGroup in OFBiz.
>>
>>
>> On May 5, 2009, at 2:26 PM, Harmeet Bedi wrote:
>>
>> To me this seemed to be intent from data model.
>>> - Group is PartyGroup that can be a collection of party through
>>> PartyRelationship.
>>> - PartyGroup is a Party. SecurityGroup can apply to Party hence to a
>>> PartyGroup
>>> - SecurityGroup is not a group of users, it is a role that applies to a
>>> Party.
>>>
>>>
>>> On closer inspection that does seem to be the case.
>>> It seems that SecurityGroup is really a collection of user logins.. so not
>>> a role at all.
>>>
>>> I see your point.. inserting a SecurityRole entity between Group and
>>> Permission would be more flexible. In that case SecurityGroup is really a
>>> UserLoginGroup.
>>>
>>> Harmeet
>>>
>>> ----- Original Message -----
>>> From: "Ruth Hoffman" <[hidden email]>
>>> To: [hidden email]
>>> Sent: Tuesday, May 5, 2009 1:44:34 PM GMT -05:00 US/Canada Eastern
>>> Subject: Re: Brainstorming: Security Configuration Patterns
>>>
>>> Harmeet:
>>>
>>> Groups within OFBiz are similar to roles but in the RBAC model a "role"
>>> is an entity in and of itself. A group or collection of groups (also
>>> defined in RBAC as unique entities) may have one or more roles applied
>>> to them just as a user might. I think the value of RBAC is in its
>>> extensibility.
>>>
>>> For example, by defining "roles" we can abstract the definition of a
>>> permission (the security constraint in this case) away from the
>>> assignment of the permission.
>>>
>>> Just my 2 cents.
>>> Ruth
>>>
>>>> I think an important thing missing is parentId in SecurityGroup.
>>>> Adding that would give you heirarchy. Groups sort of are roles. Group has
>>>> association with Subject(UserLogin through UserLoginSecurityGroup),
>>>> Permission(SecurityGroupPermission), Permission is tied implicitly to action
>>>> and resource.. Sort of RBAC.
>>>>
>>>> Harmeet
>>>>
>>>> ----- Original Message -----
>>>> From: "Ruth Hoffman" <[hidden email]>
>>>> To: [hidden email]
>>>> Sent: Tuesday, May 5, 2009 11:05:12 AM GMT -05:00 US/Canada Eastern
>>>> Subject: Re: Brainstorming: Security Configuration Patterns
>>>>
>>>> Hi All:
>>>> One pattern I worked with some time ago is called Role Based Access
>>>> Control (RBAC). This would be similar to #4 below, where you have a
>>>> "role" - with permissions associated with that role - defining
>>>> authorization levels. If you are interested in exploring this further,
>>>> I'd be happy to elaborate.
>>>>
>>>> Ruth
>>>> David E Jones wrote:
>>>>
>>>> This thread is specifically for discussing possible configuration
>>>>> patterns to use in OFBiz going forward. Please keep other discussion
>>>>> in another thread, including the merits of each possibility... let's
>>>>> just brainstorm in this thread.
>>>>>
>>>>> To get things started, here are the patterns that have been discussed
>>>>> recently (in high level terms, we can get into implementation and
>>>>> specific practices later on), these are in no particular order:
>>>>>
>>>>> 1. artifacts responsible for their own security (especially services
>>>>> and screens), and security permissions are referred to directly (ie
>>>>> the actual permissions are configured directly in the XML tags for the
>>>>> artifact)
>>>>>
>>>>> 2. artifacts responsible for their own security, and no direct
>>>>> references are used and instead an indirect security control is
>>>>> referred to; this is basically the permission service model we've been
>>>>> using where a permission service is basically a security policy that
>>>>> refers to permissions, can query/filter/whatever to do record level
>>>>> security, and in customization the permission service can be
>>>>> overridden or its function changed by ECA rules without touching any
>>>>> OOTB code or configuration
>>>>>
>>>>> 3. a hybrid of #1 and #2 where artifacts refer directly to permissions
>>>>> and there is external configuration based on those permissions that
>>>>> can add other qualifying permissions and/or invoke logic to change how
>>>>> that permission is evaluated (ie override the default behavior of
>>>>> requiring the user to have that permission and either add additional
>>>>> constraints or allow alternative constraints even if the user does not
>>>>> have the original permission that triggered it all); this is recursive
>>>>> so that if an alternative permission is configured that permission may
>>>>> also have further alternative permissions; also being recursive if
>>>>> attached logic evaluates other permissions that may have alternative
>>>>> permissions and/or permission logic attached to them; as I understand
>>>>> what Andrew has implemented, this is the pattern he followed
>>>>>
>>>>> 4. artifacts are not responsible for their own security except to
>>>>> specify whether any sort of permission is required or not (ie a
>>>>> require-permission attribute, would be true by default; for example
>>>>> most ecommerce screens would have this set to false); access control
>>>>> would be configured externally so that you can configure access at the
>>>>> most granular level possible (we would go ALL the way here, including:
>>>>> screens, services, forms, form fields, menu items, tree nodes, etc,
>>>>> etc); the access control tools would have patterns and features to
>>>>> facilitate grouping of artifacts, grouping of users (ie just use the
>>>>> current SecurityGroup entity), and support for both functionality
>>>>> access and record-level access
>>>>>
>>>>> Can anyone thing of other patterns? Again, PLEASE do not comment on
>>>>> which one you like better or what you think the advantages or
>>>>> disadvantages are of each in this thread (of course, definitely think
>>>>> about such things and feel free to comment in other threads, I just
>>>>> want this to be a "hat's off" (yes, that is a reference to Six
>>>>> Thinking Hats by Edward de Bono; anyone who hasn't read that should
>>>>> give it a go!) brainstorming session.
>>>>>
>>>>> Thank You!
>>>>> -David
>>>>>
>>>>>
>>>>>
>>>>>
>>>>
>>>>
>
Reply | Threaded
Open this post in threaded view
|

Re: Brainstorming: Security Configuration Patterns

Vikas Mayur-3
In reply to this post by Adrian Crum
Hi Adrian,

Is it desirable behavior? What if both the user need to have different  
permission at certain point of time.

Lets take a simple example of Jira. Two person contributing in OFBiz  
have an account on jira with same and very basic permission. At this  
moment they did not see any option to assign a task.

Later on one becomes  a committer and now this person have higher  
permissions (obviously see an option to assign a task) then the other  
person. Does this mean second person should also be granted the same  
permission as of the first at this moment, IMO No.

This could be desirable behavior in certain cases but I am not able to  
think of any example.

Vikas

On May 5, 2009, at 10:39 PM, Adrian Crum wrote:

> Yes.
>
> -Adrian
>
> Vikas Mayur wrote:
>> In security equivalency, what would happen if the permission for  
>> first user are changed? Does these permission are also applied to  
>> second user?
>> Vikas
>> On May 5, 2009, at 8:50 PM, Adrian Crum wrote:
>>> Novell Netware has that, plus security groups. You can assign  
>>> permissions to roles or groups, then assign the users to roles or  
>>> groups.
>>>
>>> Another thing Netware has that might be useful - security  
>>> equivalency. If two users require exactly the same sets of  
>>> permissions, you don't have to assign those permissions twice. You  
>>> assign permissions for one user, then make the second user  
>>> "security equivalent" to the first.
>>>
>>> -Adrian
>>>
>>> Ruth Hoffman wrote:
>>>> Hi All:
>>>> One pattern I worked with some time ago is called Role Based  
>>>> Access Control (RBAC). This would be similar to #4 below, where  
>>>> you have a "role" - with permissions associated with that role -  
>>>> defining authorization levels. If you are interested in exploring  
>>>> this further, I'd be happy to elaborate.
>>>> Ruth
>>>> David E Jones wrote:
>>>>>
>>>>> This thread is specifically for discussing possible  
>>>>> configuration patterns to use in OFBiz going forward. Please  
>>>>> keep other discussion in another thread, including the merits of  
>>>>> each possibility... let's just brainstorm in this thread.
>>>>>
>>>>> To get things started, here are the patterns that have been  
>>>>> discussed recently (in high level terms, we can get into  
>>>>> implementation and specific practices later on), these are in no  
>>>>> particular order:
>>>>>
>>>>> 1. artifacts responsible for their own security (especially  
>>>>> services and screens), and security permissions are referred to  
>>>>> directly (ie the actual permissions are configured directly in  
>>>>> the XML tags for the artifact)
>>>>>
>>>>> 2. artifacts responsible for their own security, and no direct  
>>>>> references are used and instead an indirect security control is  
>>>>> referred to; this is basically the permission service model  
>>>>> we've been using where a permission service is basically a  
>>>>> security policy that refers to permissions, can query/filter/
>>>>> whatever to do record level security, and in customization the  
>>>>> permission service can be overridden or its function changed by  
>>>>> ECA rules without touching any OOTB code or configuration
>>>>>
>>>>> 3. a hybrid of #1 and #2 where artifacts refer directly to  
>>>>> permissions and there is external configuration based on those  
>>>>> permissions that can add other qualifying permissions and/or  
>>>>> invoke logic to change how that permission is evaluated (ie  
>>>>> override the default behavior of requiring the user to have that  
>>>>> permission and either add additional constraints or allow  
>>>>> alternative constraints even if the user does not have the  
>>>>> original permission that triggered it all); this is recursive so  
>>>>> that if an alternative permission is configured that permission  
>>>>> may also have further alternative permissions; also being  
>>>>> recursive if attached logic evaluates other permissions that may  
>>>>> have alternative permissions and/or permission logic attached to  
>>>>> them; as I understand what Andrew has implemented, this is the  
>>>>> pattern he followed
>>>>>
>>>>> 4. artifacts are not responsible for their own security except  
>>>>> to specify whether any sort of permission is required or not (ie  
>>>>> a require-permission attribute, would be true by default; for  
>>>>> example most ecommerce screens would have this set to false);  
>>>>> access control would be configured externally so that you can  
>>>>> configure access at the most granular level possible (we would  
>>>>> go ALL the way here, including: screens, services, forms, form  
>>>>> fields, menu items, tree nodes, etc, etc); the access control  
>>>>> tools would have patterns and features to facilitate grouping of  
>>>>> artifacts, grouping of users (ie just use the current  
>>>>> SecurityGroup entity), and support for both functionality access  
>>>>> and record-level access
>>>>>
>>>>> Can anyone thing of other patterns? Again, PLEASE do not comment  
>>>>> on which one you like better or what you think the advantages or  
>>>>> disadvantages are of each in this thread (of course, definitely  
>>>>> think about such things and feel free to comment in other  
>>>>> threads, I just want this to be a "hat's off" (yes, that is a  
>>>>> reference to Six Thinking Hats by Edward de Bono; anyone who  
>>>>> hasn't read that should give it a go!) brainstorming session.
>>>>>
>>>>> Thank You!
>>>>> -David
>>>>>
>>>>>


smime.p7s (3K) Download Attachment
Reply | Threaded
Open this post in threaded view
|

Re: Brainstorming: Security Configuration Patterns

Shi Yusen
In reply to this post by Harmeet Bedi
+1.

That's why I mentioned OU. An OU can be a path not only String, for
example /root/domain1/Administrators/.


在 2009-05-05二的 11:52 -0400,Harmeet Bedi写道:

> I think an important thing missing is parentId in SecurityGroup.
> Adding that would give you heirarchy. Groups sort of are roles. Group has association with Subject(UserLogin through UserLoginSecurityGroup), Permission(SecurityGroupPermission), Permission is tied implicitly to action and resource.. Sort of RBAC.
>
> Harmeet
>
> ----- Original Message -----
> From: "Ruth Hoffman" <[hidden email]>
> To: [hidden email]
> Sent: Tuesday, May 5, 2009 11:05:12 AM GMT -05:00 US/Canada Eastern
> Subject: Re: Brainstorming: Security Configuration Patterns
>
> Hi All:
> One pattern I worked with some time ago is called Role Based Access
> Control (RBAC). This would be similar to #4 below, where you have a
> "role" - with permissions associated with that role - defining
> authorization levels. If you are interested in exploring this further,
> I'd be happy to elaborate.
>
> Ruth
> David E Jones wrote:
> >
> > This thread is specifically for discussing possible configuration
> > patterns to use in OFBiz going forward. Please keep other discussion
> > in another thread, including the merits of each possibility... let's
> > just brainstorm in this thread.
> >
> > To get things started, here are the patterns that have been discussed
> > recently (in high level terms, we can get into implementation and
> > specific practices later on), these are in no particular order:
> >
> > 1. artifacts responsible for their own security (especially services
> > and screens), and security permissions are referred to directly (ie
> > the actual permissions are configured directly in the XML tags for the
> > artifact)
> >
> > 2. artifacts responsible for their own security, and no direct
> > references are used and instead an indirect security control is
> > referred to; this is basically the permission service model we've been
> > using where a permission service is basically a security policy that
> > refers to permissions, can query/filter/whatever to do record level
> > security, and in customization the permission service can be
> > overridden or its function changed by ECA rules without touching any
> > OOTB code or configuration
> >
> > 3. a hybrid of #1 and #2 where artifacts refer directly to permissions
> > and there is external configuration based on those permissions that
> > can add other qualifying permissions and/or invoke logic to change how
> > that permission is evaluated (ie override the default behavior of
> > requiring the user to have that permission and either add additional
> > constraints or allow alternative constraints even if the user does not
> > have the original permission that triggered it all); this is recursive
> > so that if an alternative permission is configured that permission may
> > also have further alternative permissions; also being recursive if
> > attached logic evaluates other permissions that may have alternative
> > permissions and/or permission logic attached to them; as I understand
> > what Andrew has implemented, this is the pattern he followed
> >
> > 4. artifacts are not responsible for their own security except to
> > specify whether any sort of permission is required or not (ie a
> > require-permission attribute, would be true by default; for example
> > most ecommerce screens would have this set to false); access control
> > would be configured externally so that you can configure access at the
> > most granular level possible (we would go ALL the way here, including:
> > screens, services, forms, form fields, menu items, tree nodes, etc,
> > etc); the access control tools would have patterns and features to
> > facilitate grouping of artifacts, grouping of users (ie just use the
> > current SecurityGroup entity), and support for both functionality
> > access and record-level access
> >
> > Can anyone thing of other patterns? Again, PLEASE do not comment on
> > which one you like better or what you think the advantages or
> > disadvantages are of each in this thread (of course, definitely think
> > about such things and feel free to comment in other threads, I just
> > want this to be a "hat's off" (yes, that is a reference to Six
> > Thinking Hats by Edward de Bono; anyone who hasn't read that should
> > give it a go!) brainstorming session.
> >
> > Thank You!
> > -David
> >
> >
>

Reply | Threaded
Open this post in threaded view
|

Re: Brainstorming: Security Configuration Patterns

Shi Yusen
In reply to this post by Vikas Mayur-3
I guess what Adrian described is user A Alias to user B.

Personally I don't think it's necessary at the very beginning.


在 2009-05-06三的 10:17 +0530,Vikas Mayur写道:

> Hi Adrian,
>
> Is it desirable behavior? What if both the user need to have different  
> permission at certain point of time.
>
> Lets take a simple example of Jira. Two person contributing in OFBiz  
> have an account on jira with same and very basic permission. At this  
> moment they did not see any option to assign a task.
>
> Later on one becomes  a committer and now this person have higher  
> permissions (obviously see an option to assign a task) then the other  
> person. Does this mean second person should also be granted the same  
> permission as of the first at this moment, IMO No.
>
> This could be desirable behavior in certain cases but I am not able to  
> think of any example.
>
> Vikas
>
> On May 5, 2009, at 10:39 PM, Adrian Crum wrote:
>
> > Yes.
> >
> > -Adrian
> >
> > Vikas Mayur wrote:
> >> In security equivalency, what would happen if the permission for  
> >> first user are changed? Does these permission are also applied to  
> >> second user?
> >> Vikas
> >> On May 5, 2009, at 8:50 PM, Adrian Crum wrote:
> >>> Novell Netware has that, plus security groups. You can assign  
> >>> permissions to roles or groups, then assign the users to roles or  
> >>> groups.
> >>>
> >>> Another thing Netware has that might be useful - security  
> >>> equivalency. If two users require exactly the same sets of  
> >>> permissions, you don't have to assign those permissions twice. You  
> >>> assign permissions for one user, then make the second user  
> >>> "security equivalent" to the first.
> >>>
> >>> -Adrian
> >>>
> >>> Ruth Hoffman wrote:
> >>>> Hi All:
> >>>> One pattern I worked with some time ago is called Role Based  
> >>>> Access Control (RBAC). This would be similar to #4 below, where  
> >>>> you have a "role" - with permissions associated with that role -  
> >>>> defining authorization levels. If you are interested in exploring  
> >>>> this further, I'd be happy to elaborate.
> >>>> Ruth
> >>>> David E Jones wrote:
> >>>>>
> >>>>> This thread is specifically for discussing possible  
> >>>>> configuration patterns to use in OFBiz going forward. Please  
> >>>>> keep other discussion in another thread, including the merits of  
> >>>>> each possibility... let's just brainstorm in this thread.
> >>>>>
> >>>>> To get things started, here are the patterns that have been  
> >>>>> discussed recently (in high level terms, we can get into  
> >>>>> implementation and specific practices later on), these are in no  
> >>>>> particular order:
> >>>>>
> >>>>> 1. artifacts responsible for their own security (especially  
> >>>>> services and screens), and security permissions are referred to  
> >>>>> directly (ie the actual permissions are configured directly in  
> >>>>> the XML tags for the artifact)
> >>>>>
> >>>>> 2. artifacts responsible for their own security, and no direct  
> >>>>> references are used and instead an indirect security control is  
> >>>>> referred to; this is basically the permission service model  
> >>>>> we've been using where a permission service is basically a  
> >>>>> security policy that refers to permissions, can query/filter/
> >>>>> whatever to do record level security, and in customization the  
> >>>>> permission service can be overridden or its function changed by  
> >>>>> ECA rules without touching any OOTB code or configuration
> >>>>>
> >>>>> 3. a hybrid of #1 and #2 where artifacts refer directly to  
> >>>>> permissions and there is external configuration based on those  
> >>>>> permissions that can add other qualifying permissions and/or  
> >>>>> invoke logic to change how that permission is evaluated (ie  
> >>>>> override the default behavior of requiring the user to have that  
> >>>>> permission and either add additional constraints or allow  
> >>>>> alternative constraints even if the user does not have the  
> >>>>> original permission that triggered it all); this is recursive so  
> >>>>> that if an alternative permission is configured that permission  
> >>>>> may also have further alternative permissions; also being  
> >>>>> recursive if attached logic evaluates other permissions that may  
> >>>>> have alternative permissions and/or permission logic attached to  
> >>>>> them; as I understand what Andrew has implemented, this is the  
> >>>>> pattern he followed
> >>>>>
> >>>>> 4. artifacts are not responsible for their own security except  
> >>>>> to specify whether any sort of permission is required or not (ie  
> >>>>> a require-permission attribute, would be true by default; for  
> >>>>> example most ecommerce screens would have this set to false);  
> >>>>> access control would be configured externally so that you can  
> >>>>> configure access at the most granular level possible (we would  
> >>>>> go ALL the way here, including: screens, services, forms, form  
> >>>>> fields, menu items, tree nodes, etc, etc); the access control  
> >>>>> tools would have patterns and features to facilitate grouping of  
> >>>>> artifacts, grouping of users (ie just use the current  
> >>>>> SecurityGroup entity), and support for both functionality access  
> >>>>> and record-level access
> >>>>>
> >>>>> Can anyone thing of other patterns? Again, PLEASE do not comment  
> >>>>> on which one you like better or what you think the advantages or  
> >>>>> disadvantages are of each in this thread (of course, definitely  
> >>>>> think about such things and feel free to comment in other  
> >>>>> threads, I just want this to be a "hat's off" (yes, that is a  
> >>>>> reference to Six Thinking Hats by Edward de Bono; anyone who  
> >>>>> hasn't read that should give it a go!) brainstorming session.
> >>>>>
> >>>>> Thank You!
> >>>>> -David
> >>>>>
> >>>>>
>

Reply | Threaded
Open this post in threaded view
|

Re: Brainstorming: Security Configuration Patterns

David E Jones-3
In reply to this post by David E Jones-3

There has been a bit of discussion in this thread (and most of it on  
topic, so thanks for that), but in reviewing it I can't find any  
specific alternatives to add to this list. I'd like to move on to  
discussing the merits of these things soon and see which approach we  
each like best (or worst!), so if there is anything anyone would like  
to add to the list or if anyone has questions about any items on this  
list please speak up!

-David


On May 4, 2009, at 11:53 AM, David E Jones wrote:

>
> This thread is specifically for discussing possible configuration  
> patterns to use in OFBiz going forward. Please keep other discussion  
> in another thread, including the merits of each possibility... let's  
> just brainstorm in this thread.
>
> To get things started, here are the patterns that have been  
> discussed recently (in high level terms, we can get into  
> implementation and specific practices later on), these are in no  
> particular order:
>
> 1. artifacts responsible for their own security (especially services  
> and screens), and security permissions are referred to directly (ie  
> the actual permissions are configured directly in the XML tags for  
> the artifact)
>
> 2. artifacts responsible for their own security, and no direct  
> references are used and instead an indirect security control is  
> referred to; this is basically the permission service model we've  
> been using where a permission service is basically a security policy  
> that refers to permissions, can query/filter/whatever to do record  
> level security, and in customization the permission service can be  
> overridden or its function changed by ECA rules without touching any  
> OOTB code or configuration
>
> 3. a hybrid of #1 and #2 where artifacts refer directly to  
> permissions and there is external configuration based on those  
> permissions that can add other qualifying permissions and/or invoke  
> logic to change how that permission is evaluated (ie override the  
> default behavior of requiring the user to have that permission and  
> either add additional constraints or allow alternative constraints  
> even if the user does not have the original permission that  
> triggered it all); this is recursive so that if an alternative  
> permission is configured that permission may also have further  
> alternative permissions; also being recursive if attached logic  
> evaluates other permissions that may have alternative permissions  
> and/or permission logic attached to them; as I understand what  
> Andrew has implemented, this is the pattern he followed
>
> 4. artifacts are not responsible for their own security except to  
> specify whether any sort of permission is required or not (ie a  
> require-permission attribute, would be true by default; for example  
> most ecommerce screens would have this set to false); access control  
> would be configured externally so that you can configure access at  
> the most granular level possible (we would go ALL the way here,  
> including: screens, services, forms, form fields, menu items, tree  
> nodes, etc, etc); the access control tools would have patterns and  
> features to facilitate grouping of artifacts, grouping of users (ie  
> just use the current SecurityGroup entity), and support for both  
> functionality access and record-level access
>
> Can anyone thing of other patterns? Again, PLEASE do not comment on  
> which one you like better or what you think the advantages or  
> disadvantages are of each in this thread (of course, definitely  
> think about such things and feel free to comment in other threads, I  
> just want this to be a "hat's off" (yes, that is a reference to Six  
> Thinking Hats by Edward de Bono; anyone who hasn't read that should  
> give it a go!) brainstorming session.
>
> Thank You!
> -David
>

Reply | Threaded
Open this post in threaded view
|

Re: Brainstorming: Security Configuration Patterns

David E Jones-3

I think enough time has passed, but clearly if anyone has any comments  
for configuration patterns please speak up!

Now to the point: I propose that we use this list as a set of  
requirements to use to evaluate all future proposals for security  
improvements, especially related to configuration of authorization.

Does anyone disagree with doing that? (If so we should discuss it more  
as needed, and if needed also vote on it)

-David


On May 6, 2009, at 1:46 PM, David E Jones wrote:

>
> There has been a bit of discussion in this thread (and most of it on  
> topic, so thanks for that), but in reviewing it I can't find any  
> specific alternatives to add to this list. I'd like to move on to  
> discussing the merits of these things soon and see which approach we  
> each like best (or worst!), so if there is anything anyone would  
> like to add to the list or if anyone has questions about any items  
> on this list please speak up!
>
> -David
>
>
> On May 4, 2009, at 11:53 AM, David E Jones wrote:
>
>>
>> This thread is specifically for discussing possible configuration  
>> patterns to use in OFBiz going forward. Please keep other  
>> discussion in another thread, including the merits of each  
>> possibility... let's just brainstorm in this thread.
>>
>> To get things started, here are the patterns that have been  
>> discussed recently (in high level terms, we can get into  
>> implementation and specific practices later on), these are in no  
>> particular order:
>>
>> 1. artifacts responsible for their own security (especially  
>> services and screens), and security permissions are referred to  
>> directly (ie the actual permissions are configured directly in the  
>> XML tags for the artifact)
>>
>> 2. artifacts responsible for their own security, and no direct  
>> references are used and instead an indirect security control is  
>> referred to; this is basically the permission service model we've  
>> been using where a permission service is basically a security  
>> policy that refers to permissions, can query/filter/whatever to do  
>> record level security, and in customization the permission service  
>> can be overridden or its function changed by ECA rules without  
>> touching any OOTB code or configuration
>>
>> 3. a hybrid of #1 and #2 where artifacts refer directly to  
>> permissions and there is external configuration based on those  
>> permissions that can add other qualifying permissions and/or invoke  
>> logic to change how that permission is evaluated (ie override the  
>> default behavior of requiring the user to have that permission and  
>> either add additional constraints or allow alternative constraints  
>> even if the user does not have the original permission that  
>> triggered it all); this is recursive so that if an alternative  
>> permission is configured that permission may also have further  
>> alternative permissions; also being recursive if attached logic  
>> evaluates other permissions that may have alternative permissions  
>> and/or permission logic attached to them; as I understand what  
>> Andrew has implemented, this is the pattern he followed
>>
>> 4. artifacts are not responsible for their own security except to  
>> specify whether any sort of permission is required or not (ie a  
>> require-permission attribute, would be true by default; for example  
>> most ecommerce screens would have this set to false); access  
>> control would be configured externally so that you can configure  
>> access at the most granular level possible (we would go ALL the way  
>> here, including: screens, services, forms, form fields, menu items,  
>> tree nodes, etc, etc); the access control tools would have patterns  
>> and features to facilitate grouping of artifacts, grouping of users  
>> (ie just use the current SecurityGroup entity), and support for  
>> both functionality access and record-level access
>>
>> Can anyone thing of other patterns? Again, PLEASE do not comment on  
>> which one you like better or what you think the advantages or  
>> disadvantages are of each in this thread (of course, definitely  
>> think about such things and feel free to comment in other threads,  
>> I just want this to be a "hat's off" (yes, that is a reference to  
>> Six Thinking Hats by Edward de Bono; anyone who hasn't read that  
>> should give it a go!) brainstorming session.
>>
>> Thank You!
>> -David
>>
>

12