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

Sushanth Sowmyan commented on HIVE-3705:
----------------------------------------

@Ashutosh : Funny - I've uploaded a lone patch as well now, just in case 
something was wrong with the autogeneration. It's called 
hive-backend-auth.git.patch and can be applied with a patch -p1

@Shreepadma : Thanks for your comments!

a) The idea is that the box (or vm/etc) on which the metastore server runs can 
be secured and given limited login privileges, and kept away from most of the 
hive users. That way, the "secrets" such as the hive-site.xml that contains the 
mysql password, and the hive-site.xml config that sets which 
AuthorizationProvider to use from the metastore is under strict control of the 
admin.

b) I agree that the current model's semantics can sometimes be confusing, 
especially when you consider separate grant/revoke based permissions and HDFS 
permissions, and indeed, the authorization provider I intend to use with hive 
that builds on top of this will be a HDFS-permissions based Authorization 
Provider, but the hooks for how to launch the Authorization(&Authentication) 
Providers and what objects they authorize on are good interfaces, I think, and 
I've merely extended them in where/how they can be invoked in this patch.

I think there's a lot of work yet to be done, in cleaning up the privilege 
definitions in HiveOperation, and making sure that the various authorization 
calls are actually called. Take, for example the notion that "drop database" 
does not make any auth calls! So yes, there is more work to be done on this 
end. I'll be glad to put up a list of other items I felt needed to be 
changed/fixed.

c) The userid for performing authorization is obtained from the provided 
authenticator. I have an implementation of a default MetastoreAuthenticator 
with this patch which tries to obtain the userid from the ugi that the 
HMSHandler has access to. I use this because it makes the most sense as it is 
as that user that HMSHandler uses to create wh objects, and to perform 
filesystem calls, for example. I'm afraid I don't know the thrift-side plumbing 
too well to know where it gets that setting from. As for how it interacts with 
HS2, again, I don't know how HS2 itself works, but if HS2 is performing a task 
on behalf of a user, then it would call create_table_core, for eg., as that 
user.

Additional Authentication providers can also be written and plugged in to this 
scheme - I merely describe how the one I wrote and use works.
                
> Adding authorization capability to the metastore
> ------------------------------------------------
>
>                 Key: HIVE-3705
>                 URL: https://issues.apache.org/jira/browse/HIVE-3705
>             Project: Hive
>          Issue Type: New Feature
>          Components: Authorization, Metastore
>            Reporter: Sushanth Sowmyan
>            Assignee: Sushanth Sowmyan
>         Attachments: HIVE-3705.D6681.1.patch, HIVE-3705.D6681.2.patch, 
> hive-backend-auth.git.patch, hivesec_investigation.pdf
>
>
> In an environment where multiple clients access a single metastore, and we 
> want to evolve hive security to a point where it's no longer simply 
> preventing users from shooting their own foot, we need to be able to 
> authorize metastore calls as well, instead of simply performing every 
> metastore api call that's made.

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira

Reply via email to