没有管理员权限的用户可以管理配置单元中的对象访问权限吗?

时间:2016-11-04 03:27:12

标签: hadoop hive hiveql

我正在使用hive 0.14主要使用beeline。

我不是管理员,但我希望创建一些团队可以使用的观点。

我们有一个共同的配置单元数据库,每个人都有读+写。如果我创建某些我不希望其他人能够删除或修改的表/视图,我是否可以撤销其他人的删除/写入权限?

1 个答案:

答案 0 :(得分:1)

对hive表的访问取决于HDFS访问权限。

每当您在位于tbl的数据库中创建新表db时,都会创建一个新目录db/tbl

如果要限制对该目录的写入组访问,请使用hadoop fs -chmod,例如:

hadoop fs -chmod 750 db/tbl

如果要查找数据库中表的位置,可以创建表而不指定位置,然后运行describe formated tbl

您始终可以通过运行hadoop fs -ls db

来检查表的访问权限

关于观点:

  

虽然基于存储的授权可以在数据库,表和分区级别提供访问控制,它无法控制更精细级别的授权,例如列和视图,因为文件系统提供的访问控制在目录和文件的级别。细粒度访问控制的先决条件是数据服务器,它只能提供用户需要(或有)访问的列和行。在文件系统访问的情况下,整个文件被提供给用户。 HiveServer2满足这个条件,因为它有一个理解行和列的API(通过使用SQL),并且只能提供SQL查询所要求的列和行。

     

SQL Standards Based Authorization(在Hive 0.13.0中引入,HIVE-5837)可用于实现细粒度访问控制。它基于授权的SQL标准,并使用熟悉的grant / revoke语句来控制访问。 需要通过HiveServer2配置启用

     

请注意,对于Hive命令行,禁用基于SQL标准的授权。这是因为在Hive中使用访问控制策略的Hive命令行无法进行安全访问控制,因为用户可以直接访问HDFS,因此他们可以轻松绕过基于SQL标准的授权检查,甚至完全禁用它。禁用此功能可以避免给用户带来错误的安全感。

因此,简而言之,需要在配置中启用SQL Standards Based Authorization

然后,您就可以在视图上使用REVOKE