[
https://issues.apache.org/jira/browse/DERBY-2207?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#action_12526270
]
Rick Hillegas commented on DERBY-2207:
--------------------------------------
Thanks for the great spec, Dag. I have a couple comments.
General - I think that it would be nice if the introductory paragraphs of
section 5 spelled out the semantics of ANSI roles in greater detail. For
instance, I think that something like the following is true, but the spec
doesn't exactly say this:
"At any given time, a session has a user and a role associated with it. At that
point in time, the session enjoys all of the privileges explicitly granted to
the user plus the transitive closure of all privileges granted to the role and
its ancestors in the role graph."
A related, recurrent usage confuses me. Throughout the spec, statements like
the following appear: "the privilege is revoked from any user who has the
role". I don't think that granting a role to a user results in the role's
privileges being granted to the user. I don't think that you can revoke those
privileges from the user--you can only revoke them from the role.
Also, it would be nice if divergences from the standard were highlighted
somehow.
5.6 (Granting a role to a role) - I think that cycles are not allowed in the
role graph. Do you agree?
5.7 (Revoking privileges from a role) - The phrasing confuses me (see my
general comment above). I think what you are saying is that, after revoking
privilege P from role A, then P is no longer enjoyed by a session operating as
A or s one of its descendants in the role graph. Even this is not strictly
speaking true, though--or so it seems to me. The session could still enjoy P if
P is granted to some other ancestor of the current role.
I am afraid I became terribly muddled from paragraph 4 onward. It might help if
you could tease apart the concepts of session, user, and role.
5.8 (Revoking a role from a user) - I got muddled in paragraph 2. Maybe teasing
apart the concepts, again, would help.
5.9 (Revoking a role from a role) - I did not understand what was meant by
saying that role A is also role C. I did not understand the reference to drop
behavior in the previous section.
5.10 (Setting a role) - I recommend moving this section further up. I think
that it will give the reader more context for understanding how a session
enjoys privileges by changing role.
6.1 (The name authorization identifier name space issue) - There is lots of
good discussion of the issues in this section. However, I did not come away
with a clear picture of what behavior will be implemented.
6.2 & 5.4 - I get the sense that we may be diverging from the standard here. Is
this because the current GRANT/REVOKE behavior diverges from the standard?
Would it be fair to say that the set of roles is determined by the following
query "select distinct roleid from sys.sysroles where grantor='_SYSTEM'". This
might argue for adding a secondary index on (grantor, roleid).
Thanks!
> Improve usability of Derby's client/server security by implementing ANSI Roles
> ------------------------------------------------------------------------------
>
> Key: DERBY-2207
> URL: https://issues.apache.org/jira/browse/DERBY-2207
> Project: Derby
> Issue Type: New Feature
> Components: Security, SQL
> Reporter: Rick Hillegas
> Assignee: Dag H. Wanvik
> Attachments: spec.html
>
>
> Implementing ANSI Roles will make it easier to manage security for multi-user
> applications with high user turnover.
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.