我正在使用hive 0.14主要使用beeline。
我不是管理员,但我希望创建一些团队可以使用的观点。
我们有一个共同的配置单元数据库,每个人都有读+写。如果我创建某些我不希望其他人能够删除或修改的表/视图,我是否可以撤销其他人的删除/写入权限?
答案 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
。