天天看點

配置安全的Hive叢集內建Sentry1. 環境說明2. 安裝和配置Sentry3. 配置Hive4. 準備測試資料5. 測試6. 其他說明

本文主要記錄配置安全的hive叢集內建sentry的過程。hive上配置了kerberos認證,配置的過程請參考:

使用yum安裝cdh hadoop叢集

hive配置kerberos認證

系統環境:

作業系統:centos 6.6

hadoop版本:<code>cdh5.4</code>

jdk版本:<code>1.7.0_71</code>

運作使用者:root

叢集各節點角色規劃為:

cdh1作為master節點,其他節點作為slave節點,我們在cdh1節點安裝kerberos server,在其他節點安裝kerberos client。

這部分内容,請參考安裝和配置sentry,因為叢集中配置了kerberos,是以需要在kdc節點上(cdh1)生成 sentry 服務的 principal 并導出為 ticket:

然後,修改/etc/sentry/conf/sentry-site.xml 中下面的參數:

擷取sentry的ticket再啟動sentry-store服務:

需要在 /etc/hive/conf/hive-site.xml中添加:

在hive配置了kerberos認證之後,hive-server2內建sentry有以下要求:

修改 <code>/user/hive/warehouse</code> 權限:

禁止 hiveserver2 impersonation:

确認 /etc/hadoop/conf/container-executor.cfg 檔案中 <code>min.user.id=0</code>。

修改 /etc/hive/conf/hive-site.xml:

另外,因為叢集配置了kerberos,故需要/etc/hive/conf/sentry-site.xml添加以下内容:

參考模闆sentry-site.xml.hive-client.template在 /etc/hive/conf/ 目錄建立 sentry-site.xml:

注意:這裡<code>sentry.hive.provider.backend</code>配置的是<code>org.apache.sentry.provider.db.simpledbproviderbackend</code>方式,關于<code>org.apache.sentry.provider.file.simplefileproviderbackend</code>的配置方法,後面再作說明。

hive添加對sentry的依賴,建立軟連接配接:

在cdh1上啟動或重新開機hiveserver2:

參考 securing impala for analysts,準備測試資料:

然後,在hive中運作下面 sql 語句:

在 cdh1上通過 beeline 連接配接 hiveserver2,運作下面指令建立角色群組:

建立 role、group 等等,執行下面的 sql 語句:

上面建立了兩個角色:

admin_role,具有管理者權限,可以讀寫所有資料庫,并授權給 admin 和 hive 組(對應作業系統上的組)

test_role,隻能讀寫 filtered 資料庫,并授權給 test 組。

以 test 使用者為例,通過 beeline 連接配接 hive-server2:

接下來運作一些sql查詢,檢視是否有權限。

在 ldap 伺服器上建立系統使用者 yy_test,并使用 migrationtools 工具将該使用者導入 ldap,最後設定 ldap 中該使用者密碼。

在每台 datanode 機器上建立 test 分組,并将 yy_test 使用者加入到 test 分組:

運作 beeline 檢視是否能夠使用 ldap 使用者連接配接 hiveserver2:

如果要使用基于檔案存儲的方式配置sentry store,則需要修改/etc/hive/conf/sentry-site.xml為:

建立 sentry-provider.ini 檔案并将其上傳到 hdfs 的 /user/hive/sentry/ 目錄:

關于 sentry-provider.ini 檔案的文法說明,請參考官方文檔。這裡我指定了 hive 組有全部權限,并指定 hive 使用者屬于 hive 分組,而其他兩個分組隻有部分權限。