[ 
https://issues.apache.org/jira/browse/HIVE-78?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12970662#action_12970662
 ] 

John Sichi commented on HIVE-78:
--------------------------------

First batch of review comments.

JDO:

* Do we want roles to be contained by databases?  Let's discuss this
  at next design review.
* Instead of two separate flags (IS_ROLE/IS_GROUP) should we instead use
  an enum for principal type { USER, GROUP, ROLE }?
* Naming suggestions (if accepted, propagate to Thrift API also):
** SECURITYROLE -> ROLES
** SECURITYROLEMAP -> ROLE_MAP
** SECURITYUSER -> GLOBAL_PRIVS
** SECURITYDB -> DB_PRIVS
** SECURITYTBLPART -> TBLPART_PRIVS
** SECURITYCOLUMN -> COL_PRIVS
* VARCHAR precision for "privileges" fields should be 4000
* Since we're going to need to record GRANT OPTION eventually, maybe
  we should add it now so that we don't have to ALTER TABLE later?

Thrift API:

* Avoid embedding objects inside of other objects except where
  necessary.  For example, in the definition of struct Role, use
  dbName instead of a Database object (assuming we keep roles as
  contained by databases).  Likewise, in PrivilegeBag, the map keys
  should be identifiers, not objects.  This applies to quite a few of
  the new structs.
* Can we reduce the number of new structs and API calls by
  consolidating different object types?  For example, for the
  get_XXX_privilege_set calls, just have one, and take object
  type+identifier.
* Add comments for all new methods.

Config:

* Why is hive.exec.security used for some config params instead of
  hive.security?  Also, those parameter names should make it clear
  that they are default grants.  Also, do we really need owner grants
  (don't owners automatically have full privileges implicitly)?
* Looks like hive.variable.substitute crept in from some other patch.
* Comments for plugin-loading parameters should make it explicit
  exactly which interface they are supposed to implement.
* Comment for role grants says "to some groups" instead.

Pluggable Interfaces:

* I don't think we need the factory classes; just add new methods to
  HiveUtils (and follow the classloading pattern used there)
* Rename AuthorizationProvider to HiveAuthorizationProvider 
  and make it extend Configurable
* Rename AuthorizationProviderManager to AbstractAuthorizationProvider
* All outside references should be to the interface (HiveAuthorizationProvider)
  not the abstract class.
* Rename Authenticator to HiveAuthenticationProvider and make it
  extend Configurable
* Javadoc?

Typos:

* principla
* Authrization
* GrantInfor
* privielges
* "Table is partitioned, but partition spec found"
* DummpyAuthenticator
* detroy
* wheenve

Implementation:

* why does doAuthorization return a boolean when it just throws
  anyway?
* more coming...


> Authorization infrastructure for Hive
> -------------------------------------
>
>                 Key: HIVE-78
>                 URL: https://issues.apache.org/jira/browse/HIVE-78
>             Project: Hive
>          Issue Type: New Feature
>          Components: Metastore, Query Processor, Server Infrastructure
>            Reporter: Ashish Thusoo
>            Assignee: He Yongqiang
>         Attachments: createuser-v1.patch, hive-78-metadata-v1.patch, 
> hive-78-syntax-v1.patch, HIVE-78.1.nothrift.patch, HIVE-78.1.thrift.patch, 
> HIVE-78.2.nothrift.patch, HIVE-78.2.thrift.patch, HIVE-78.4.complete.patch, 
> HIVE-78.4.no_thrift.patch, HIVE-78.5.complete.patch, 
> HIVE-78.5.no_thrift.patch, HIVE-78.6.complete.patch, 
> HIVE-78.6.no_thrift.patch, hive-78.diff
>
>
> Allow hive to integrate with existing user repositories for authentication 
> and authorization infromation.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply via email to