[Zope-dev] New-style ExtensionClass, ZODB 3.3, and Zope 2.8 status

Jim Fulton jim at zope.com
Sat Nov 15 07:53:06 EST 2003


Dieter Maurer wrote:
> Jim Fulton wrote at 2003-11-13 15:22 -0500:
>  > ...
>  >    We need to refactor the way security assertions (permission
>  >    settings) are stored and accessed.  We need to store required
>  >    permissions (__permissions__) on objects. When we need to figure
>  >    out roles, we need to compute them at a higher level. (For
>  >    example, we could compute the needed roles in the zope security
>  >    policy It's likely that we can speed security checks when doing
>  >    this.)
>  > 
>  > I estimate that the necessary refactoring would take me 3-5
>  > days. The vast majority of the required time will be spent writing
>  > tests.  I really need to focus on Zope 3 for a while, so I may not
>  > be able to get back to this soon.  I think that this is an area
>  > where some volunteers could make a big difference.  I'd be happy to
>  > work with some folks on this.
> 
> Folklore says that Zope cannot protect attributes of simple types
> (because they do not provide the method magic that will be lost
> for NSEC).

 From your patch, I think you are talking about protection of
attributes of non-simple types whose values are not simple types.
That is, protecting the title attribute of a folder even though the
value of the attribute is a string and thus, can't be assigned a
__roles__ attribute.


> However, whenever I looked at ZopeSecurityPolicy (and I did often),
> I could not believe that this is true. I always thought, it would
> be easy to provide security declarations for simple type attributes, too.
> 
> Of course, Zope cannot check a bare value of simple type, but
> usually it has "container" and/or "parent" and then checking would
> be easy by looking at related ("__roles__") attributes of the container/parent.
> 
> I will see this weekend whether I have been true.
> If so, the same mechanism could (in principle) be used for
> methods.
> 
> Bound methods can even be checked without "container/parent"
> as they allow access to the bound instance.
> 

And a day later, Dieter Maurer wrote:
 > Patch attached.

So, when we are accessing a named attribute and the value doesn't
have security data, look for security data on the object we got it
from.  I like the general idea.

Hm, I suppose that this would let us keep the __roles__ travesty for now,
which would allow us to proceed with 2.8 without doing the refactoring now.

Very nice.  (well, sort of ;)

I'll see if this idea lets me get the "devil branch" merged to the trunk next
week. (I need to make the next Z3 milestone release first.)

Jim

-- 
Jim Fulton           mailto:jim at zope.com       Python Powered!
CTO                  (540) 361-1714            http://www.python.org
Zope Corporation     http://www.zope.com       http://www.zope.org




More information about the Zope-Dev mailing list