配置OSS/OSS-HDFS開啟Ranger權(quán)限控制
Apache Ranger作為集中式權(quán)限管理框架,允許對(duì)Hadoop生態(tài)系統(tǒng)中的多個(gè)組件實(shí)施細(xì)粒度訪問(wèn)控制。本文介紹如何配置阿里云OSS或OSS-HDFS開啟Ranger權(quán)限控制。
前提條件
已創(chuàng)建EMR-5.15.0及之后版本,或者EMR-3.49.0及之后版本的DataLake或Custom集群,開啟了Kerberos身份認(rèn)證,并且選擇了Ranger和Ranger-plugin服務(wù),創(chuàng)建集群詳情請(qǐng)參見創(chuàng)建集群。
開啟Kerberos認(rèn)證后,無(wú)法關(guān)閉此功能,因此請(qǐng)謹(jǐn)慎選擇。在啟用Kerberos后,集群內(nèi)所有大數(shù)據(jù)組件的服務(wù)均需經(jīng)過(guò)Kerberos認(rèn)證,提交至集群的大數(shù)據(jù)作業(yè)也將首先進(jìn)行身份認(rèn)證。有關(guān)Kerberos的詳細(xì)信息,請(qǐng)參見Kerberos概述。
使用限制
該功能支持的集群版本如下:
EMR-5.15.0及后續(xù)版本
EMR-3.49.0及后續(xù)版本
OSS/OSS-HDFS集成Ranger
進(jìn)入集群服務(wù)頁(yè)面。
在EMR on ECS頁(yè)面,單擊目標(biāo)集群操作列的集群服務(wù)。
Ranger啟用OSS/OSS-HDFS。
在集群服務(wù)頁(yè)面,單擊Ranger-plugin服務(wù)區(qū)域的狀態(tài)。
在服務(wù)概述區(qū)域,打開enableOSS開關(guān)。
在彈出的對(duì)話框中,單擊確定。
部署客戶端配置。
在集群服務(wù)頁(yè)面,選擇
。單擊配置頁(yè)簽。
單擊部署客戶端配置。
在彈出的對(duì)話框中,輸入執(zhí)行原因,單擊確定。
在確認(rèn)對(duì)話框中,單擊確定。
重啟HiveServer2。
在集群服務(wù)頁(yè)面,選擇
。單擊狀態(tài)頁(yè)簽。
在組件列表區(qū)域,單擊HiveServer操作列的重啟。
在彈出的對(duì)話框中,輸入執(zhí)行原因,單擊確定。
在確認(rèn)對(duì)話框中,單擊確定。
創(chuàng)建Principal。
通過(guò)SSH方式以root用戶身份連接到集群的Master節(jié)點(diǎn),詳情請(qǐng)參見登錄集群。
執(zhí)行如下命令,進(jìn)入Kerberos admin工具。
kadmin.local
執(zhí)行如下命令,創(chuàng)建名為test的Principal。
本示例密碼設(shè)置為123456。
addprinc -pw 123456 test
說(shuō)明需要記錄名稱和密碼,在創(chuàng)建TGT時(shí)會(huì)用到。如果希望避免手動(dòng)輸入名稱和密碼,則可以執(zhí)行以下命令,將Principal的認(rèn)證信息導(dǎo)出至keytab文件中。
ktadd -k /root/test.keytab test
執(zhí)行
quit
命令,退出Kerberos admin工具。
創(chuàng)建TGT。
使用root用戶執(zhí)行以下命令,創(chuàng)建test用戶。
useradd test
執(zhí)行以下命令,切換為test用戶。
su - test
生成TGT。
方式一:使用用戶名和密碼方式。
執(zhí)行
kinit
命令,回車后輸入test的密碼123456。方式二:使用keytab文件。
test.keytab文件已經(jīng)保存在Master節(jié)點(diǎn)的/root/目錄下,需要先使用
cp /root/test.keytab /home/test/
命令拷貝到當(dāng)前機(jī)器的/home/test/
目錄下,再執(zhí)行以下命令創(chuàng)建TGT。kinit -kt /home/test/test.keytab test
(可選)查看TGT。
使用
klist
命令,返回如下信息。Ticket cache: FILE:/tmp/krb5cc_1025 Default principal: test@EMR.C-24DF259BB32****.COM Valid starting Expires Service principal 08/29/2024 18:19:14 08/30/2024 18:19:14 krbtgt/EMR.C-24DF259BB32****.COM@EMR.C-24DF259BB32****.COM renew until 09/05/2024 18:19:14
權(quán)限配置示例
本文以EMR-5.17.1版本操作為例,授予test用戶指定路徑的訪問(wèn)權(quán)限,其余版本請(qǐng)以實(shí)際界面為準(zhǔn)。
進(jìn)入Ranger UI頁(yè)面,詳情請(qǐng)參見訪問(wèn)Ranger UI。
在Ranger UI頁(yè)面,單擊配置好的emr-oss。
創(chuàng)建新策略。
單擊右上角的Add New Policy。
在Create Policy頁(yè)面,根據(jù)您的實(shí)際需求配置相關(guān)參數(shù)。
參數(shù)
描述
Policy Name
策略名稱,可以自定義。
Resource Path
OSS或OSS-HDFS的路徑。路徑無(wú)需oss://前綴,格式為
<bucketname>/<path>
。例如,本示例為bucket-test/user
。重要路徑末尾無(wú)需帶正斜線(/)。
禁止關(guān)閉recursive開關(guān)。
recursive
子目錄或文件是否集成權(quán)限。
Select User
指定添加此策略的用戶。本示例設(shè)置為test用戶。
Permissions
選擇授予的權(quán)限。
本示例設(shè)置訪問(wèn)權(quán)限為ALL(Read、Write和Execute)。
單擊Add。
添加Policy后,實(shí)現(xiàn)了對(duì)test用戶的授權(quán)。test用戶對(duì)配置的路徑擁有了Read、Write和Execute權(quán)限。
說(shuō)明添加、刪除或修改Policy后,需要等待約一分鐘至授權(quán)生效。
訪問(wèn)OSS或OSS-HDFS。
通過(guò)SSH方式連接集群的Master節(jié)點(diǎn),詳情請(qǐng)參見登錄集群。
執(zhí)行以下命令,切換為本文示例創(chuàng)建的test用戶。
su - test
執(zhí)行以下命令,訪問(wèn)OSS或OSS-HDFS目錄。
訪問(wèn)OSS目錄。
hadoop fs -ls oss://bucket-test/user
訪問(wèn)OSS-HDFS目錄。
hadoop fs -ls oss://bucket-test.cn-hangzhou.oss-dls.aliyuncs.com/user
如果您訪問(wèn)Ranger未授權(quán)的路徑,將會(huì)提示以下錯(cuò)誤信息。
org.apache.hadoop.security.AccessControlException: Permission denied: user=test, access=READ_EXECUTE, resourcePath="bucket-test/"