Created 01-20-2016 09:42 AM
I have configured ranger authorization for hive and want to force all the users to use beeline and want to block access to hive shell to all the users.
I know one workaround - we can revoke execute access for below file on all hive-clients.
/usr/hdp/current/hive-client/bin/hive
By doing this it could cause an issue to jobs scheduled via workflow engines like oozie or azkabaan etc.
Is there any other effective way to do this ?
Created 01-21-2016 10:25 AM
Suggestion given by @Hajime
We can add below lines in hive-env template via ambari to disable hive-shell
if [ "$SERVICE" = "cli" ]; then echo "Sorry! I have disabled hive-shell" exit 1 fi
After restarting hive services, when you try to run hive shell then you will get below output
[root@sandbox hive]# hive Sorry! I have disabled hive-shell
Created 01-20-2016 12:09 PM
I think you have to make sure Storage Based Authorization (SBA) is enabled for the Metastore
And then lock down filesystem permissions for data warehouse dir. I don't think there's a way to actually prevent users from issuing the "hive" command. I may be wrong, though - happy to be corrected.
Created 01-20-2016 03:53 PM
@Ana Gillan Can you provide details on your idea? Do you have any doc or demo?
Created 01-20-2016 11:08 PM
@Neeraj Sabharwal I don't have a doc or demo, but it's simple enough to demonstrate. Enable SBA (should be already by default) and and then give the hive warehouse dir e.g. 750 permissions for hive:hadoop (recursively). Then if people try to access tables through Hive CLI as any other user, they will get a permission denied error. This won't apply to access via HiveServer2 because you'd manage table and DB permissions via Ranger Hive repository or SQL Standard authorisation. @Alex Miller's suggestion goes on top of that as well. To be truly secure, users must come in via Knox.
Created 01-20-2016 04:02 PM
This is correct. You can hide the standard binary from end users, but if they can create and execute arbitrary files on hosts with access to the cluster then there is no workaround that is 100% effective.
You should restrict access to the entire cluster (via a firewall and/or other means), and users who need to access Hive should do so from through HiveServer2 behind a Knox gateway.
Created 01-21-2016 10:19 AM
Thank you @Alex Miller
Created 01-21-2016 10:19 AM
Thank you @Ana Gillan
Created 01-20-2016 12:32 PM
@Kuldeep Kulkarni perhaps remove alias to Hive or create alias for Hive to redirect to beeline¡ Hive shell is in deprecated mode, it will be dropped at some point. Great question.
Created 01-21-2016 10:20 AM
Thanks @Artem Ervits
Created 01-20-2016 12:44 PM
Good question because we don't want user to run hive cli as part of the best practice. One of the things that I suggest is not to install hive client in edge node.
I found this thread and I believe this can be done to avoid the hive cli access.