Our Community is getting an upgrade! To get everything ready for the relaunch, we’ll be placing the site in read-only mode starting September 21st. We really appreciate your understanding while we get things set up behind the scenes. Catch up on all the exciting details about the move here. Need help or have questions? Drop us a line at [email protected]
In some situations, Ranger is not an option but a Hive Authorization scheme is advisable. It is possible to use SQLStdAuth for this. However it comes with a couple caveats.
- In Ambari, select Authorization SQLStdAuth. This will set all related configuration parameters like hive.enable.authorization and disable doAs.
- Add admin users to admin role. If you have a user you want to be admin add him to hive.users.in.admin.role=hive,hue,myadmin
2. Prepare HDFS
Since all queries now run as the hive user he needs to have read/write rights on all files in HDFS. This includes the load directories for external tables. Ideally change the owner to the warehousing folder to hive and set access right 700.
I also added hive to an ETL group and made all load folders read AND writable to this group.
3. Create roles
In Hive as an admin user
- Become Admin: SET ROLE ADMIN;
- Create roles:
CREATE ROLE BI; ( should have read rights to all tables )
CREATE ROLE ETL; ( should have read/write rights to all tables )
- Add users to roles:
GRANT ETL TO USER ETLUSER;
GRANT BI TO USER BIUSER;
- Make ETL Role owner of database to be able to create tables in the database
ALTER DATABASE DEFAULT SET OWNER ROLE ETL;
- Change table to be readable by BI
GRANT SELECT ON MYTABLE TO BI;
- Change table to be read and writable by ETL
GRANT ALL ON MYTABLE TO ETL;
NOTE: I did not find a way to make a ROLE into the owner of a table, so only the table owner or admin can drop tables but the ETL user could insert, drop partitions etc.
4. Beeline parameters
SQLStdAuth restricts access to hive config parameters to a white list. In older environments Hive scripts would be parametrized with configuration parameters. -hiveconf day=20150201.
This will not work anymore since the parameters are not in the whitelist. You can instead use