天天看點

Sentry到Ranger—簡明指南1. 為什麼要切換到Ranger?2. Sentry到Ranger——一些行為改變3. 此更改如何影響我的環境?4. 總結

Cloudera Data Platform (CDP)

通過合并來自

Cloudera Enterprise Data Hub (CDH)

Hortonworks Data Platform (HDP)

這兩個傳統平台的技術,為客戶帶來了許多改進。CDP 包括新功能以及一些先前存在的安全和治理功能的替代方案。CDH 使用者的一項重大變化是将 Sentry 替換為 Ranger 以進行授權和通路控制。

對于像 Cloudera 堆棧這樣的大資料平台,由多個業務部門和多個使用者使用,即使更新小版本也必須是一項精心策劃的活動,以減少對使用者和業務的影響。是以,在 CDP 中更新到新的主要版本可能會引起猶豫和擔憂。通路正确的資訊集有助于使用者提前準備并消除更新過程中的任何障礙。這篇博文向 CDH 使用者提供了 Ranger 作為 CDP 中 Hadoop SQL 政策的 Sentry 替代品的快速概述。

1. 為什麼要切換到Ranger?

Apache Sentry 是 Hadoop 中特定元件的基于角色的授權子產品。它在為 Hadoop 叢集上的使用者定義和實施不同級别的資料權限時很有用。在CDH中,Apache Sentry為Apache Hive和Apache Impala等Hadoop SQL元件以及Apache Solr、Apache Kafka和HDFS(僅限于Hive表資料)等其他服務提供了一個獨立的授權子產品。Sentry 依靠 Hue 進行可視化政策管理,依靠 Cloudera Navigator 來審計 CDH 平台中的資料通路。

另一方面,Apache Ranger 提供了一個全面的安全架構來啟用、管理和監控整個 Hadoop 平台的資料安全。它提供了一個集中式平台,可以跨 Sentry 保護的所有 Hadoop 元件以及 Apache Hadoop生态系統中的其他服務(如 Apache HBase、YARN、Apache NiFi)一緻地定義、管理和管理安全政策。此外,Apache Ranger 現在支援公共雲對象存儲,如 Amazon S3 和 Azure Data Lake Store (ADLS)。Ranger 還通過實時跟蹤所有通路請求的集中稽核位置,為安全管理者提供對其環境的深入了解。

Apache Ranger 擁有自己的 Web 使用者界面 (Web UI),它是通過 Hue 服務提供的 Sentry 的 Web 界面的更好替代方案。Ranger Web UI 也可用于安全密鑰管理,使用 Ranger KMS 服務的密鑰管理者可以單獨登入。Apache Ranger 還提供了非常需要的安全功能,例如開箱即用的列掩碼和行過濾。另一個重要因素是 Ranger 中的通路政策可以使用不同的屬性(如地理區域、一天中的時間等)在動态上下文中進行自定義。下表給出了 Sentry 和 Ranger 之間功能的詳細比較。

Sentry到Ranger—簡明指南1. 為什麼要切換到Ranger?2. Sentry到Ranger——一些行為改變3. 此更改如何影響我的環境?4. 總結

2. Sentry到Ranger——一些行為改變

如上所述,Sentry 和 Ranger 是完全不同的産品,在架構和實作上有很大的不同。下面列出了當您從 CDH 的 Sentry 遷移到 CDP 中的 Ranger 時的一些顯着行為變化。

·       Sentry 中的繼承模型與 Ranger 中的顯式模型

o  在 Sentry 中,對層次結構中的容器對象授予的任何權限都會由其中的基礎對象自動繼承。例如,如果使用者對資料庫範圍擁有 ALL 權限,則該使用者對包含在該範圍内的所有基礎對象(如表和列)擁有 ALL 權限。是以,授予資料庫使用者的一項授權将授予對資料庫中所有對象的通路權限。

o  在 Ranger 中,應存在具有必要權限的顯式 Hadoop SQL 政策,以便使用者通路對象。這意味着,Ranger提供了更細粒度的通路控制。在資料庫級别擁有通路權限不會在表級别授予相同的通路權限。并且在表級别獲得通路權限不會在列級别授予相同的通路權限。例如,使用 Ranger Hadoop SQL 政策,要向使用者授予對所有表和列的通路權限,請使用通配符建立政策,例如 – 資料庫→ <資料庫名稱>、表→ * 和列 → *。

Sentry到Ranger—簡明指南1. 為什麼要切換到Ranger?2. Sentry到Ranger——一些行為改變3. 此更改如何影響我的環境?4. 總結

·       通路控制實施——Sentry與Ranger

o  Hive的 Sentry 授權處理通過 HiveServer2 執行的語義鈎子發生。每次通路請求都會傳回 Sentry Server 進行驗證。Impala 中的通路控制檢查與 Hive 中的類似。Impala 中的主要差別在于 Impala Catalog 伺服器對 Sentry 中繼資料(權限)的緩存。

Sentry到Ranger—簡明指南1. 為什麼要切換到Ranger?2. Sentry到Ranger——一些行為改變3. 此更改如何影響我的環境?4. 總結

o  CDP Private Cloud Base 中支援基于 Ranger 授權的所有服務都有一個關聯的 Ranger 插件。這些 Ranger 插件在用戶端緩存通路權限和标簽。他們還定期輪詢特權和标簽存儲以了解任何更改。當檢測到更改時,緩存會自動更新。這樣的實作模型使 Ranger 插件能夠完全在服務守護程序内處理授權請求,進而顯着提高性能,并在面對服務外的故障時具有彈性。

Sentry到Ranger—簡明指南1. 為什麼要切換到Ranger?2. Sentry到Ranger——一些行為改變3. 此更改如何影響我的環境?4. 總結

·       HDFS 通路同步實作——Sentry Vs Ranger

o  Sentry有一個選項可以自動轉換 SQL 權限以提供對 HDFS 的通路。這是通過 HDFS-Sentry 插件實作的,該插件允許您為特定 HDFS 目錄配置 Sentry 權限與 HDFS ACL 的同步。啟用同步後,Sentry 會将資料庫和表的權限轉換為 HDFS 中底層檔案的相應 HDFS ACL。并且可以通過使用 HDFS 指令列出擴充 ACL 來檢視這些對 HDFS 檔案添加的通路權限。

o  自 CDP Private Cloud Base 7.1.5 起,引入了一個功能 Ranger Resource Mapping Server (RMS),用于相同的目的。請注意,RMS 在 CDP Private Cloud Base 7.1.4 中作為技術預覽可用。Sentry 中HDFS ACL 同步的實作與 Ranger RMS 處理從 Hive 到 HDFS 的通路政策自動轉換的方式不同。但是表級通路的底層概念和授權決策是相同的。請重新閱讀這篇

Ranger RMS導讀 博文,

以了解有關此新功能的更多資訊。

·       SQL 中 HDFS 位置的通路權限 – Sentry Vs Ranger

o  在 Sentry 中,以下操作需要某個位置的 URI 權限

§ 顯式設定表的位置——建立外部表

§ 更改表的位置 – 更改表

§ 從帶有位置的表中導入和導出

§  從 jar 檔案建立一個函數

o  在 Ranger 中,Hadoop SQL 中的“URL”政策或Hive 對象使用的位置的 HDFS 政策可用于此類使用位置的活動的相同效果。要建立函數,需要在 Hadoop SQL 中的“udf”政策中具有适當的權限。

·       Ranger中的特殊實體

o  “public”組- 這是 Ranger 中的一個特殊内部組,由系統上存在的任何經過身份驗證的使用者組成。成員身份是隐含的和自動的。應該注意的是,所有使用者都将成為該組的一部分,并且授予該組的任何政策都為每個人提供通路權限。以下是授予此特殊組“public”權限的預設政策。根據安全要求,可以從這些預設政策中删除“public”以進一步限制使用者通路。

§  全部 – 資料庫 ⇒ public ⇒ create權限

§  允許使用者自助建立自己的資料庫

§  預設資料庫表列⇒public⇒create權限

§  允許使用者在預設資料庫中自助建立表

§  Information_schema 資料庫表列⇒ public ⇒ select權限

§  允許使用者查詢有關表、視圖、列和您的 Hive 權限的資訊

o  特殊對象{OWNER} – 這應該被視為 Ranger 中的一個特殊實體,它會根據使用者的行為附加到使用者身上。使用這個特殊對象可以顯着簡化政策結構。例如,如果使用者“bob”建立了一個表,那麼“bob”将成為該表的 {OWNER},并且将在所有政策中獲得在該表上提供給 {OWNER} 的任何權限。以下是對 {OWNER} 具有權限的預設政策。盡管不建議這樣做,但基于安全要求,可以更改對該特殊實體的通路權限。删除預設的 {OWNER} 權限可能需要為每個對象所有者添加額外的特定政策,這會增加政策管理的操作負擔。

§ all – 資料庫、表、列 ⇒ {OWNER} ⇒ 所有權限

§ all – 資料庫、表 ⇒ {OWNER} ⇒ 所有權限

§ all – 資料庫,udf ⇒{OWNER} ⇒ 所有權限

§  all – 資料庫 ⇒{OWNER} ⇒ 所有權限

o  特殊對象{USER} – 這應該被視為 Ranger 中的一個特殊實體,意思是“目前使用者”。使用此特殊對象可以顯着簡化政策結構,其中資料資源包含使用者名屬性值。例如,授予對 HDFS 路徑/home/{USER} 上的 {USER} 的通路權限将授予使用者“bob”對“/home/bob”的通路權限,以及使用者“kiran”對“/home/kiran”的通路權限。同樣,授予對資料庫 db_{USER} 上的 {USER} 的通路權限,将為使用者“bob”提供對“db_bob”的通路權限,以及使用者“kiran”對“db_kiran”的通路權限。

3. 此更改如何影響我的環境?

·       遷移到Ranger 

o  Cloudera提供了一個自動化工具

authzmigrator

,用于從 Sentry 遷移到 Ranger

o  該工具轉換 Hive 對象的權限和 URL 權限(即 Sentry 中的URI)以及 CDH 叢集中Sentry 中的 Kafka 權限

o  目前該工具不包括通過 Sentry for Cloudera Search (Solr) 啟用的授權權限

o  該工具有一個明确定義的兩步過程 - (1) 從 Source 中的Sentry 導出權限 (2) 将導出的檔案攝取到 CDP 中的 Ranger 服務中

o  該工具适用于從 CDH 到 CDP 的直接更新和 side-car 遷移方法

§ 在直接更新的情況下,整個過程是自動化的

§  在 side-car 遷移的情況下,為

工具定義了一個手動程式

·       Ranger 中的對象權限

o  Sentry中的“插入”權限現在映射到 Ranger Hadoop SQL 政策中的“更新”權限

o  Sentry中的“URI”權限現在映射到 Ranger Hadoop SQL 中的“URL”政策

o  Ranger Hadoop SQL 中存在額外的細化權限

§  Drop、Alter、Index、Lock等。

·       Hive-HDFS 通路同步與 Ranger

o  需要部署新服務 Ranger RMS 

o  Ranger RMS 連接配接到 Ranger 使用的同一個資料庫

o  Ranger RMS 目前僅适用于表級同步,而不适用于資料庫級(即将推出)

·       在 Hive 中使用 Ranger 建立外部表

o  在 Hive 中使用自定義 LOCATION 子句建立外部表時,需要以下附加通路之一 (1) 或(2)

§  (1) 使用者應具有對 HDFS 位置的直接讀寫通路權限

§  這可以通過 Ranger 中的 HDFS Policy 或 HDFS POSIX 權限或 HDFS ACL 提供

§  (2) Ranger Hadoop SQL 政策中的一個 URL 政策,為使用者提供對表定義的 HDFS 位置的讀寫權限

§ URL不應包含尾部斜杠字元 (“/”)

§  如果使用者不擁有位置路徑,請確定配置“ranger.plugin.hive.urlauth.filesystem.schemes”設定為“file:”而不是“hdfs:,file:”(這是預設設定) ) 在 Hive 和 Hive on Tez 服務中

o  使用者“hive”應該擁有表的 HDFS 位置的所有權限

4. 總結

Apache Ranger 支援授權作為共享資料體驗 (SDX) 的一部分,這是 Cloudera 資料平台架構的基礎部分,對資料管理和資料治理至關重要。在 CDP 中,Ranger 提供了 Apache Sentry在 CDH 堆棧中提供的所有功能。Ranger 是一個全面的解決方案,可以在整個 CDP 生态系統中啟用、管理和監控資料安全。它還提供額外的安全功能,如資料過濾和屏蔽。Ranger 将授權和審計結合在一起,增強了 CDP 的資料安全政策,并提供了卓越的使用者體驗。除了這些授權和稽核增強功能之外,Ranger Web UI 還可以用于安全密鑰管理,使用 Ranger KMS 服務的密鑰管理者可以單獨登入。

要了解有關 Ranger 和相關功能的更多資訊,以下是一些有用的資源:

Apache Ranger 授權 Apache Ranger 審計 更新到 CDP CDP 知識中心

原文作者:

Kiran Anand

原文連結:

https://blog.cloudera.com/sentry-to-ranger-a-concise-guide/