開啟細粒度權限時,用戶通過該指導配置訪問OBS權限,實現MRS用戶對OBS文件系統下的目錄權限控制。

說明該章節內容僅適用于MRS 2.x及之前版本(MRS 1.9.2版本不適用)。
如需對MRS的用戶訪問OBS的資源進行詳細控制,可通過該功能實現。例如,您只允許用戶組A訪問某一OBS文件系統中的日志文件,您可以執行以下操作來實現:
- 為MRS集群配置OBS訪問權限的委托,實現使用ECS自動獲取的臨時AK/SK訪問OBS。避免了AK/SK直接暴露在配置文件中的風險。
- 在IAM中創建一個只允許訪問某一OBS文件系統中的日志文件的策略,并創建一個綁定該策略權限的委托。
- 在MRS集群中,新建的委托與MRS集群中的用戶組A進行綁定,即可實現用戶組A只擁有訪問某一OBS文件系統中的日志文件的權限。
在以下場景運行作業時,提交作業的用戶名為內置用戶名,無法實現MRS多用戶訪問OBS:
- spark-beeline在安全集群中提交作業的內置用戶名為spark,在普通集群中提交作業的內置用戶名為omm。
- hbase shell在安全集群提交作業的內置用戶名為hbase,在普通集群中提交作業的內置用戶名為omm。
- Presto在安全集群提交作業的內置用戶名為omm、hive,在普通集群提交作業的內置用戶名為omm(當通過“組件管理 >Presto > 服務配置”,選擇“全部配置”并搜索修改參數hive.hdfs.impersonation.enabled的值為true可以實現MRS多用戶訪問OBS細粒度權限功能)。
前提條件
- 給集群配置有OBS訪問權限的委托
請參考配置存算分離集群(委托方式)配置OBS訪問權限的委托。
配置的委托對該集群上所有用戶(包括內置用戶)及用戶組生效,如需對集群上的用戶及用戶組訪問OBS的權限進行控制請繼續執行后續步驟。
- 在IAM服務創建策略及委托
創建擁有不同訪問權限的策略,并將策略與委托進行綁定,具體操作請參考下方 在IAM服務創建策略及委托。
- 在MRS集群詳情頁面配置OBS權限控制映射關系
在MRS控制臺,選擇“集群列表 > 現有集群”并單擊集群名稱。
- 在“概覽”頁簽的基本信息區域,單擊“OBS權限控制”右側的“單擊管理”。
- 單擊“添加映射”,并參考下表配置相關參數。
OBS權限控制參數
| 參數 | 說明 |
|---|---|
| IAM委托 | 選擇步驟2中創建的委托。 |
| 類型 | User:在用戶級別進行映射 Group:用戶組級別進行映射 說明 用戶級別的映射優先級大于用戶組級別的映射。若選擇Group,建議在“MRS用戶(組)”一欄,填寫用戶的主組名稱。 請避免同個用戶名(組)出現在多個映射記錄上的情況。 |
| MRS用戶(組) | MRS中的用戶(組)的名稱,以英文逗號進行分隔。 說明 對于沒有配置在OBS權限控制的用戶,且沒有配置AK、SK時,將以MRS_ECS_DEFAULT_AGENCY中的OBS Operator的權限訪問OBS。對于組件內置用戶不建議綁定在委托中。 如需對組件內置用戶在以下場景提交作業時配置委托,要求如下: 如需對spark-beeline的操作進行權限控制,安全集群時配置用戶名“spark”,普通集群時配置用戶名“omm”。 如需對hbase shell的操作進行權限控制,安全集群時配置用戶名“hbase”,普通集群時配置用戶名“omm”。 如需對Presto的操作進行權限控制,安全集群時配置用戶名“omm”、“hive”和登錄客戶端的用戶名,普通集群時配置用戶名“omm”和登錄客戶端的用戶名。 如需使用Hive在beeline模式下創建表時,配置內置用戶“hive”。 |
- 單擊“確定”。
- 勾選“我同意授權MRS用戶(組)與IAM委托之間的信任關系。”,并單擊“確定”,完成MRS用戶與OBS權限的映射關系。
當集群詳情頁面“概覽”頁簽的“OBS權限控制”后出現
或OBS權限控制的映射表已刷新,表示映射生效(過程大約需要1分鐘)。
在關系列表的“操作”列可以對已添加的關系進行編輯和刪除。
說明
對于沒有配置在OBS權限控制的用戶,且沒有配置AK、SK時,將以集群配置的委托在“對象存儲服務”項目下所擁有的權限訪問OBS。
無論用戶是否配置OBS權限控制,只要配置AK、SK時,將以AK、SK的權限訪問OBS。
映射關系的修改、創建、刪除需要用戶有Security Administrator權限。
修改映射關系后,若想使之在spark-beeline中生效,需要重啟Spark服務,若想使之在hive beeline中生效,需要退出beeline重新進入,若想使之在Presto服務中生效,需要重啟Presto服務。
在開啟OBS權限控制功能時各組件訪問OBS的說明
以root用戶登錄集群任意一個節點,密碼為用戶創建集群時設置的root密碼。
- 配置環境變量(MRS 3.x及之后版本客戶端默認安裝路徑為“/opt/Bigdata/client”,MRS 3.x之前版本為“/opt/client”。具體以實際為準。)。
source /opt/Bigdata/client/bigdata_env
- 如果當前集群已啟用Kerberos認證,執行以下命令認證當前用戶。如果當前集群未啟用Kerberos認證,則無需執行此命令。
kinit MRS集群用戶
例如, kinit admin
- 如果當前集群未啟用Kerberos認證,執行如下命令登錄執行操作的用戶,該用戶需要屬于supergroup組,創建用戶可參考創建用戶,將XXXX替換成用戶名。
mkdir/home/XXXX
chownXXXX /home/XXXX
su -XXXX
- 訪問OBS。無需再配置AK、SK和endpoint。OBS路徑格式:obs://buck_name/XXX。
例如:hadoop fs -ls"obs://obs-example/job/hadoop-mapreduce-examples-3.1.2.jar"
說明
如需使用hadoop fs刪除OBS上文件,請使用hadoop fs -rm -skipTrash來刪除文件。
spark-sql、spark-beeline在創建表時,若不涉及數據導入,則不會訪問OBS。即若在一個無權限的OBS目錄下創建表,CREATE TABLE仍會成功,但插入數據會報403 AccessDeniedException。
在IAM服務創建策略及委托
在IAM服務創建策略及委托
- 登錄IAM服務控制臺。
- 單擊“權限 > 創建自定義策略”。
- 參考下表填寫參數。
策略參數
| 參數 | 說明 |
|---|---|
| 策略名稱 | 只能包含如下字符:大小寫字母、中文、數字、空格和特殊字符(-_.,)。 |
| 作用范圍 | 選擇全局級服務,OBS為全局服務。 |
| 配置策略方式 | 選擇可視化視圖。 |
| 策略內容 | 1. “允許”選擇“允許”。 2. “云服務”選擇“對象存儲服務(OBS)”。 3. “操作”勾選所有“寫”、“列表”和“只讀”權限。 4. “特定資源”選擇: a. “object”選擇“通過資源路徑指定”,并單擊“添加資源路徑”分別輸入路徑obs_bucket_name /tmp/和 obs_bucket_name /tmp/ 。此處以 /tmp目錄為例,如需其他目錄權限請參考該步驟添加對應目錄及該目錄下所有對象的資源路徑。 b. “bucket”選擇“通過資源路徑指定”,并單擊“添加資源路徑”輸入路徑 obs_bucket_name。 5. (可選)請求條件,暫不添加。 |
| 策略描述 | 可選,對策略的描述。 |

各個組件的寫數據操作若通過rename的方式實現時,寫數據時要配置刪除對象的權限。
- 單擊“確定”保存策略。
- 在IAM服務創建委托。
- 登錄IAM服務控制臺。
- 單擊“委托 > 創建委托”。
- 參考下表填寫參數。
委托參數
| 參數 | 說明 |
|---|---|
| 委托名稱 | 只能包含如下字符:大小寫字母、中文、數字、空格和特殊字符(-_.,)。 |
| 委托類型 | 選擇普通帳號。 |
| 委托的帳號 | 填寫本用戶的云帳號,即使用手機號開通的帳號,不能是聯邦用戶或者IAM用戶。 |
| 持續時間 | 請根據需要選擇。 |
| 描述 | 可選,對委托的描述。 |
| 權限選擇 | 1. 在“項目”列對應的“對象存儲服務”行,單擊“操作”列的“修改”。 2. 勾選步驟1中創建的策略,使之出現在“已選擇策略中”。 3. 單擊“確定”。 |
- 單擊“確定”保存委托。

說明當使用該委托訪問過OBS后,再修改該委托及其綁定的策略時,最長需要等待15分鐘,修改的內容才能生效。