本文分享自華為云社區《【平滑上云】Apache Sentry->Ranger平滑升級方案-云社區-華為云》,作者: 啊喔YeYe 。
背景介紹
CDH是Apache Hadoop和相關項目的最完整、最受測試和最流行的發行版,常常是許多客戶建設IDC大數據平臺中的首選。早期CDH版本只提供sentry的權限管理方案,后期新版本提供ranger作為替換方案,而CDH只有商業版本提供sentry升級ranger的服務,開源社區版并未提供這樣的能力。本文主要探討如何平滑解決sentry到ranger升級過程中的權限遷移問題。
Sentry權限介紹
Sentry是典型的RABC權限管理系統,通過用戶-用戶組-角色關聯,最終通過role來進行賦權,一般只用于表級授權,存在三種權限類型:select/insert/all(*)。
sentry關鍵表分析
- sentry_role: 角色列表
- sentry_group;用戶組列表
- sentry_role_group_map;角色、用戶映射關系表
- sentry_db_privilege: 表權限信息表
- sentry_role_db_privilege_map: 權限、角色映射關系表
舉例
表bi_plus.data_xy_b_error_event賦予了XX用戶select權限,數據模型如下:
Sentry->Ranger方案分解
Ranger基于策略policy的PBAC賦權策略,面向資源授權。轉換sentry策略我們先需要解決用戶、用戶組、角色同步問題。
整體遷移策略
用戶同步方案
Sentry不存在用戶,一般來自于外部OpenLdap。Ranger本身支持外部LDAP同步,在華為云MRS 中通過配置usersync實例與LDPA對接即可實現
用戶組同步方案
Sentry用戶組如果來源于外部Ldap,參考用戶同步方案同步用戶組即可。如果沒有外部LDAP,通過讀取表sentry_group獲取用戶組插入Ranger中即可實現。
角色同步方案
角色同步稍比用戶、用戶組同步復雜需要自行開發工具支持。角色同步時要關聯用戶、用戶組,因此需要先完成用戶、用戶組同步后再進行角色同步。
策略同步
- 分析sentry中hive表權限,對應每張表生成對應一條ranger策略,例如:庫表:default.student生成策略名:default_student。
- 根據表權限類型,分解為:select、all(*)、insert對相關角色&用戶&用戶組進行分組,生成為ranger中策略的Condition內容
樣例
表bi_plus.data_xy_b_error_event在sentry中實際只有對部分角色用戶進行了select授權
對應生成的ranger策略為: bi_plus_data_xy_b_error_event
FAQ
- Sentry本身不存儲用戶信息,實際多個客戶案例來看一般一個用戶對應一個用戶組且名稱相同,我們基于這個策略進行同步。
- Ranger用戶組、用戶不區分大小寫而sentry中如果存在大小寫差異的用戶組會導致同步失敗,這種情況建議改造或者下線其中不規范的用戶組命名。
使用華為云大數據產品→大數據遷移上云解決方案_IDC上云_CDH上云_云上資源遷移-華為云,提供端到端遷移方案與技術支持。