● 系統環境說明
Linux環境:centos7.4
CDH:5.16.1
Java:1.8.0_131
Sentry版本:1.5.1
● 集群配置
機器數量:50
內存:64G
硬盤:4T
CPU核心數:32
安裝sentry
- 在主頁,單擊群集名稱右側的
, 點擊“添加服務”;
- 選擇Sentry,點擊“繼續”;
- 選擇一組依賴關系;
- 確認新服務的主機分配;
- 配置存儲數據庫;
在mysql中創建對應用戶和數據庫:
mysql> create database sentry default character set utf8 collate utf8_general_ci;
mysql>grant all on sentry.* to 'sentry'@'cdh03.ali.aiwaystack.com' identified by 'sentry';
mysql>flush privileges;
- 測試連接
- 創建Sentry數據表,啟動Sentry服務
Hive開啟sentry服務以及開啟Hive安全性
-
在“Sentry 服務”中選擇“Sentry”
-
修改下面參數
Hive.warehouse.subdir.inherit.perms-->true
- 選擇hive-site.xml 的 Hive 服務高級配置代碼段(安全閥),增加如下配置:
<property>
<name>sentry.hive.testing.mode</name>
<value>false</value>
</property>
- 選擇“范圍”中的“HiveServer2”,修改如下配置:
hive.server2.enable.impersonation, hive.server2.enable.doAs-->false
- 選擇hive-site.xml 的 HiveServer2 高級配置代碼段(安全閥),添加如下配置
<property>
<name>hive.security.authorization.task.factory</name>
<value>org.apache.sentry.binding.hive.SentryHiveAuthorizationTaskFactoryImpl</value>
</property>
- 選擇hive-site.xml 的 Hive Metastore Server 高級配置代碼段(安全閥),添加如下參數:
<property>
<name>hive.metastore.client.impl</name>
<value>org.apache.sentry.binding.metastore.SentryHiveMetaStoreClient</value>
<description>Sets custom Hive Metastore client which Sentry uses to filter out metadata.</description>
</property>
<property>
<name>hive.metastore.pre.event.listeners</name>
<value>org.apache.sentry.binding.metastore.MetastoreAuthzBinding</value>
<description>list of comma separated listeners for metastore events.</description>
</property>
<property>
<name>hive.metastore.event.listeners</name>
<value>org.apache.sentry.binding.metastore.SentryMetastorePostEventListener</value>
<description>list of comma separated listeners for metastore, post events.</description>
</property>
<property>
<name>hive.metastore.filter.hook</name>
<value>org.apache.sentry.binding.metastore.SentryMetaStoreFilterHook</value>
</property>
配置yarn
在“允許的系統用戶”參數“allowed.system.users”中添加hive用戶
Yarn->配置->min.user.id修改為合適的值,當前為0
配置sentry
管理員組(sentry.service.admin.group)和允許的連接用戶(sentry.service.allow.connect)中添加admin用戶和組;
選擇“服務范圍”,修改管理員組,將默認“hive”、“impala”、“hue”刪除,並增加“admin”。
在sentry-site.xml 的 Sentry 服務高級配置代碼段(安全閥)中添加如下參數:
<property>
<name>sentry.service.processor.factories</name>
<value>org.apache.sentry.provider.db.service.thrift.SentryPolicyStoreProcessorFactory,org.apache.sentry.hdfs.SentryHDFSServiceProcessorFactory</value>
</property>
<property>
<name>sentry.policy.store.plugins</name>
<value>org.apache.sentry.hdfs.SentryPlugin</value>
</property>
<property>
<name>sentry.hdfs.integration.path.prefixes</name>
<value>/user/hive/warehouse</value>
</property>
配置HDFS開啟ACLs與sentry權限同步:
impala配置使用sentry:
HUE配置使用sentry:
等待“生成憑據”命令完成
在 Cloudera Manager 中為任何服務啟用安全保護之后,將自動觸發稱為“生成憑據”的命令。您可以在顯示正在運行的命令的屏幕右上角看到該命令的進度。請等待此命令完成(通過內含“0”的灰色框表示)。