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