Configuration of permissions in Hive tables - hadoop

I need to set a set of permissions for the tables under a particular database in hive, which is different from the default permissions.
The database got created with 750 permission and I changed into 755. I used the below hive parameter, but still the tables are having 750 permission,
hive.warehouse.subdir.inherit.perms=true
I need the tables with 755 permission. I am changing the group of the db, inherited to the tables inside but not the permissions.

Related

Insuficient privileges on Apex_200200 tables

i tried to update table wwv_flow_item_list in Oracle autonomus database on cloud but i get error insuficient privileges. I cant even select data from those tables (all wwv prefix). User is ADMIN. which user have rights to perform these tasks ?

How can a user with no sentry permissions on a table can execute queries if he has access to the table files in HDFS?

As per https://www.cloudera.com/documentation/enterprise/latest/topics/sg_sentry_service_config.html,
HiveServer2 impersonation lets users execute queries and access HDFS files as the connected user rather than as the super user. Access policies are applied at the file level using the HDFS permissions specified in ACLs (access control lists). Enabling HiveServer2 impersonation bypasses Sentry from the end-to-end authorization process. Specifically, although Sentry enforces access control policies on tables and views within the Hive warehouse, it does not control access to the HDFS files that underlie the tables. This means that users without Sentry permissions to tables in the warehouse may nonetheless be able to bypass Sentry authorization checks and execute jobs and queries against tables in the warehouse as long as they have permissions on the HDFS files supporting the table.
Access policies are applied at the file level using the HDFS permissions specified in ACLs (access control lists) -> I didn't understand this.
My undestanding is that, whenever a user runs a query, authorization will be done by the sentry plugin(binding) in the data engine with the help of sentry server to validate whether the user has access(select, insert) to the resources(db, table) he is trying to query. In this case, if the user doesn't have access to the resource, then it should fail here, how can the query be successful when he has access to the files corresponding to a table in HDFS and doesn't have sentry permissions on the table? What am I missing here?
I feel like you didn't see "users without Sentry permissions to tables in the warehouse" part.
Sure, Sentry is used, but not all users are automatically given permissions, therefore it falls back to the ACLs applied at the HDFS level given by chown/chmod/setfacl functions. You need to explicitly add a "deny all" rule to say no one can access the Hive databases unless otherwise set
This can simply be bypassed as well by reading the raw HDFS location of the tables using Spark or Pig, and not using Hive. That's what it's really saying.
Also, not all Hadoop clusters use Sentry for authorized access

how to change ownership of hive table/database

I have some tables in test database in HIVE that were created by another user.
I am trying to move these tables to another database called events
I have tried like below
alter table test.123 rename to events.123
But I am receiving permission denied error because the table 123 has been created by another.
1) How can I move this table?
2) How can we change the owner of the table to other user's?
3) Or How can we change ownership of all tables of a database to another user?
4) What is the best scenario where we don't need to worry about permission on Hive tables?
You can try following with superuser
ALTER (DATABASE|SCHEMA) database_name SET OWNER [USER|ROLE] user_or_role; -- (Note: Hive 0.13.0 and later; SCHEMA added in Hive 0.14.0)
If your Hadoop cluster is Kerberos enabled then there is no way you can change the ownership with non-super user account. If this would have been possible then there is no use of Permissions.

Can a user without admin rights manage object access privileges in hive?

I am working with hive 0.14 mainly using beeline.
I am not an admin but I am looking to create a couple of views that the team can use.
We've got a common hive database where everyone has read+write. If I am creating certain tables/views that I don't want other people to be able to drop or modify, is it possible for me to revoke drop/write access for others?
The access to hive tables depends on HDFS access rights.
Whenever you create a new table tbl in database located in db, a new directory db/tbl will be created.
If you want to restrict write group access to that directory use hadoop fs -chmod, for example:
hadoop fs -chmod 750 db/tbl
If you want to find out where tables are located in a database, you can create a table without specifying a location, and run describe formated tbl.
You can always check what are the access rights of the tables by running hadoop fs -ls db
Regarding views:
Although Storage Based Authorization can provide access control at the level of Databases, Tables and Partitions, it can not control authorization at finer levels such as columns and views because the access control provided by the file system is at the level of directory and files. A prerequisite for fine grained access control is a data server that is able to provide just the columns and rows that a user needs (or has) access to. In the case of file system access, the whole file is served to the user. HiveServer2 satisfies this condition, as it has an API that understands rows and columns (through the use of SQL), and is able to serve just the columns and rows that your SQL query asked for.
SQL Standards Based Authorization (introduced in Hive 0.13.0, HIVE-5837) can be used to enable fine grained access control. It is based on the SQL standard for authorization, and uses the familiar grant/revoke statements to control access. It needs to be enabled through HiveServer2 configuration.
Note that for Hive command line, SQL Standards Based Authorization is disabled. This is because secure access control is not possible for the Hive command line using an access control policy in Hive, because users have direct access to HDFS and so they can easily bypass the SQL standards based authorization checks or even disable it altogether. Disabling this avoids giving a false sense of security to users.
So, in short, SQL Standards Based Authorization needs to be enabled in the config.
Then you'll be able to use: REVOKE on views.

How to log errors in Informatica?

Due to security issues the user or Informatica has grants to create neither tables nor synonyms.
So I have come up with this:
The PMERR_DATA, PMERR_MSG, etc. tables are created under another user
The user of Informatica is granted to select, inset, update and delete from these tables
Name of the owner of the tables was set in the error table log prefix field:
But when the task starts, the integration service tries to create these PMERR% tables and it fails (due to lack of permissions to create tables)
How can these restrictions be overcome?

Resources