[
https://issues.apache.org/jira/browse/DERBY-2109?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#action_12464260
]
Daniel John Debrunner commented on DERBY-2109:
----------------------------------------------
I agree that supporting a more flexible Principle scheme could be added later,
I don't think I see any issues with having a database login always having a
DatabasePrinciple associated with it. I think for forwards compatibility that
will be required, i.e. in the future methods in UserAuthenticator may be able
to add Principles to the Subject, but will not be able to remove the
DatabasePrinciple. I do think that Derby's internal implementation should not
be relying on DatabasePrinciple, e.g. all fields, variables, parameters etc.
are declared as Principle and DatabasePrinciple should only appear when the
actual instance is created using new DatabsaePrinciple.
A few new thoughts did come out of your comment:
- with Java routines this spec does not indicate that the routine will run
with the Subject set to one including the DatabasePrinciple. I don't think it
needs to but it is a direction that may be required in the future. This would
allow database user based granting on permissions in Java routines which might
be useful since the only way to grant java permissions to code in installed jar
files is to sign the jar and grant permissions to the signer.
- related to the last point, the visibility of the current Subject containing
its DatabasePrinciple, might be clear to state that currently there is no
visibility to user code of the Subject containing its DatabasePrinciple.
- Derby supports multiple databases within a system and per-database
authentication. This means that ALICE in one database can be a different
identity to ALICE in another database. DatabasePrinciple does not account for
this. This may have the potential to be a security hole, though maybe not with
the limited set of permissions today. Basic idea would be.
ALICE has some permissions that FRED does not have.
FRED only has permission to create databases
FRED can create a database with BUILTIN authentication and a user ALICE to
pick up any permissions granted to ALICE.
It might be ok with the proposed changes because the identity is also
authenticated in that specific domain, e.g. I assume to be ALICE to shutdown an
engine or create a database one must be authenticated against the system
authentication. Thus the ALICE from FRED's database would not be able to log
into take advantage of the shutdown engine granted to the real ALICE.
The problems come when the policy file contains entries that are not linked to
database authentication, e.g. to allow specific actions in routines, e.g. grant
permission to ALICE to read '/etc/password', that could be hijacked by FRED's
ALICE if the routine was run as the DatabasePrinciple(FRED).
I think this needs some thought, possible paths are: not an issue,
DatabasePrinciple with database location path or good documentation the scope
of DatabasePrinciple.
> 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.0.0
> Reporter: Rick Hillegas
> Fix For: 10.3.0.0
>
> Attachments: 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.
-
If you think it was sent incorrectly contact one of the administrators:
https://issues.apache.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira