基於Sentry的大數據權限解決方案


● 系統環境說明

Linux環境:centos7.4
CDH:5.16.1
Java:1.8.0_131
Sentry版本:1.5.1

● 集群配置

機器數量:50
內存:64G
硬盤:4T
CPU核心數:32

安裝sentry

  1. 在主頁,單擊群集名稱右側的, 點擊“添加服務”;
  2. 選擇Sentry,點擊“繼續”;
  3. 選擇一組依賴關系;
  4. 確認新服務的主機分配;
  5. 配置存儲數據庫;
    在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;
  1. 測試連接
  2. 創建Sentry數據表,啟動Sentry服務

Hive開啟sentry服務以及開啟Hive安全性

  1. 在“Sentry 服務”中選擇“Sentry”

  2. 修改下面參數

Hive.warehouse.subdir.inherit.perms-->true

  1. 選擇hive-site.xml 的 Hive 服務高級配置代碼段(安全閥),增加如下配置:
<property>
<name>sentry.hive.testing.mode</name>
<value>false</value>
</property>
  1. 選擇“范圍”中的“HiveServer2”,修改如下配置:
hive.server2.enable.impersonation, hive.server2.enable.doAs-->false

  1. 選擇hive-site.xml 的 HiveServer2 高級配置代碼段(安全閥),添加如下配置
<property>
<name>hive.security.authorization.task.factory</name>
<value>org.apache.sentry.binding.hive.SentryHiveAuthorizationTaskFactoryImpl</value>
</property>
  1. 選擇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”的灰色框表示)。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM