Dataproc中的Hive授权

时间:2017-05-11 10:34:46

标签: google-cloud-dataproc

Dataproc没有与Apache Ranger和Apache Sentry集成。那么Hive中推荐的用户授权方式是什么?

我是Dataproc的新手,你的答案真的很有用。

2 个答案:

答案 0 :(得分:4)

这是一个很好的问题。

作为一些背景,Cloud Dataproc(和其他云服务)的总体目标是在单个产品上使用安全性/ IAM。在很多情况下,使用大量Hive的客户最终会切换到具有特定控件的BigQuery。

在群集级别,您的群集将在服务帐户下运行,您可以switch the service account使用群集。这意味着您可以限制群集访问服务帐户有权访问的内容 - GCS存储桶等。这使特定群集只能访问特定的资源集。

从用户级别,您可以通过Dataproc IAM roles访问Dataproc。但是,正如您所指出的,当有人访问群集时,他们可以有效地利用群集可以访问的任何内容。

我们通常会看到客户创建一组项目和服务帐户来分区他们的安全需求。例如,客户可以创建三个项目,一个用于销售,一个用于营销,一个用于开发人员。所有这些帐户都设置了各种权限,因此,它们的Cloud Dataproc使用本质上是作用域。

话虽如此,这是长期改善的重点领域。

(免责声明 - 我是Cloud Dataproc PM)

答案 1 :(得分:0)

默认情况下,Dataproc 上的 Hive 授权处于禁用状态,因此任何人都可以做任何事情。

但是,有一种方法可以启用它。 我在 /etc/hive/conf/hive-default.xml.template

找到了这个属性
  <property>
    <name>hive.security.authorization.enabled</name>
    <value>false</value>
    <description>enable or disable the Hive client authorization</description>
  </property>

通过将这部分复制到 /etc/hive/conf/hive-site.xml 并将值设置为 true,我设法打开了 Hive 授权。 您只需要在此之后运行 systemctl restart hive-server2.service,这样 Hive 就可以获取配置更改,仅此而已。

根据Hive documentation,也考虑添加此属性:

<property>
  <name>hive.security.authorization.createtable.owner.grants</name>
  <value>ALL</value>
  <description>the privileges automatically granted to the owner whenever a table gets created. 
   An example like "select,drop" will grant select and drop privilege to the owner of the table</description>
</property>

还有一些与授权相关的属性,但如果您使用 GCS 作为底层存储,则可以忽略它们。根据 GCP 支持,它们无关紧要,因为 GCS 连接器并不真正支持细粒度的 HDFS 权限。

<name>hive.metastore.authorization.storage.checks</name>
<name>hive.metastore.authorization.storage.check.externaltable.drop</name>
...