[
https://issues.apache.org/jira/browse/DERBY-2109?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12561086#action_12561086
]
Rick Hillegas commented on DERBY-2109:
--------------------------------------
Thanks for the continued discussion, Dan. I agree that we seem to be talking
past one another.
>> 2) AuthorizationID -- this is the SQL concept of identity. This is
>> case-insensitive unless double-quoted.
>
>We seem to be using the same terms for slightly different concepts.
>
>I believe I'm using authorization identifier in the way that the SQL standard
>defines it. This would be a case-sensitive value that defines a unique
>identity in the sql system (database). Thus an authorization identifier is
>never double >quoted, contradicting your statement 2).
I think the relevant section of the SQL spec is part 2 section 5.4 (names and
identifiers). In that section <authorization identifier> can resolve to be a
<user identifier> which in turn can resolve to an <identifier> which in turn
can resolve to a <regular identifier> or a <delimited identifier>. The <regular
identifier> is uppercased to a normalized value regardless of its original
casing and the <delimited identifer> is quoted and is not uppercased. This is
what I mean by "This is case-insensitive unless double-quoted".
I think the disconnect here is that the authorization identifier can be
referenced in two ways. When it is used in a SQL statement and resolves to a
<regular identifier>, it is normalized to uppercase and so, as I would put it,
it is case-insensitive. When it is referenced in the form stored in the system
catalogs, it is case-sensitive.
>
>A UserName is a representation of an authorization identifier using the SQL
>rules for regular and delimited identifiers and thus has the case folding
>rules etc.
The term UserName is a word I invented for this discussion. But it pretty much
corresponds to userName as used in the javadoc for UserAuthenticator.
>
>In SQL this behaviour, mapping UserName to authorization identifier is defined
>by the standard.
This is where I am not tracking you. The term UserName does not occur in the
SQL standard as far as I know. It is a term which I thought I invented in order
to bring some precision to this discussion. But I don't seem to have succeeded.
Can you refer me to the section of the SQL standard which defines this term (or
a related term)? That will help me propose some new language which we can agree
on.
>
>In Java code and Java property files Derby chose to use SQL identifier rules
>(ie. UserName) as the representation of an authorization identifier. Looking
>back this maybe was a poor choice, a direct representation of the
>authorization i>dentifier might have been better, (ie. jdbc:derby:cs;user=fred
>and jdbc:derby:cs;user=FRED would connect as different authorization ids,
>today they map to the same authorization id). So if we want to be consistent
>with other Java us>es, the policy file should probably use UserName, however
>using authorization identifier might be clearer.
>
>> 1) UserName -- this is part of the credentials passed to the authentication
>> service. This could be case-sensitive or case-insensitive depending on the
>> rules of the authentication service.
>
>I think the last sentence is incorrect. The rules of UserName are set by
>Derby, not an arbitrary implementation of the authentication service.
>As above, the rules for how UserName map to a unique identity follows the
>rules of SQL identifiers, and thus UserNames of FRED and fred always map to
>the same unique identity FRED. However, I'm not sure you agree with this,
>sinc>e you are promoting authorization identifier as a SQL only concept. That
>may be a valid approach, but I think you need to clearly state the rules for
>that, and then we can discuss if having two different models (one for database
>and o>ne for system) adds any benefit or adds complication. The rules would
>need to state how UserName maps to a unique identity in a system context.
Ha! Once we can agree on some terms, I can take another crack at stating the
rules.
Thanks.
> System privileges
> -----------------
>
> Key: DERBY-2109
> URL: https://issues.apache.org/jira/browse/DERBY-2109
> Project: Derby
> Issue Type: New Feature
> Components: Security
> Affects Versions: 10.3.1.4
> Reporter: Rick Hillegas
> Assignee: Martin Zaun
> Attachments: DERBY-2109-02.diff, DERBY-2109-02.stat,
> derby-2109-03-javadoc-see-tags.diff, DERBY-2109-04.diff, DERBY-2109-04.stat,
> DERBY-2109-05and06.diff, DERBY-2109-05and06.stat, DERBY-2109-07.diff,
> DERBY-2109-07.stat, DERBY-2109-08.diff, DERBY-2109-08.stat,
> DERBY-2109-08_addendum.diff, DERBY-2109-08_addendum.stat,
> SystemPrivilegesBehaviour.html, systemPrivs.html, systemPrivs.html,
> systemPrivs.html, systemPrivs.html
>
>
> Add mechanisms for controlling system-level privileges in Derby. See the
> related email discussion at
> http://article.gmane.org/gmane.comp.apache.db.derby.devel/33151.
> The 10.2 GRANT/REVOKE work was a big step forward in making Derby more
> secure in a client/server configuration. I'd like to plug more client/server
> security holes in 10.3. In particular, I'd like to focus on authorization
> issues which the ANSI spec doesn't address.
> Here are the important issues which came out of the email discussion.
> Missing privileges that are above the level of a single database:
> - Create Database
> - Shutdown all databases
> - Shutdown System
> Missing privileges specific to a particular database:
> - Shutdown that Database
> - Encrypt that database
> - Upgrade database
> - Create (in that Database) Java Plugins (currently Functions/Procedures,
> but someday Aggregates and VTIs)
> Note that 10.2 gave us GRANT/REVOKE control over the following
> database-specific issues, via granting execute privilege to system
> procedures:
> Jar Handling
> Backup Routines
> Admin Routines
> Import/Export
> Property Handling
> Check Table
> In addition, since 10.0, the privilege of connecting to a database has been
> controlled by two properties (derby.database.fullAccessUsers and
> derby.database.defaultConnectionMode) as described in the security section of
> the Developer's Guide (see
> http://db.apache.org/derby/docs/10.2/devguide/cdevcsecure865818.html).
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.