問題來源:maxcompute 管理員無法訪問敏感列?
先拋一個(gè)問題:作為 maxcompute 的管理員,擁有較高的權(quán)限,為什么訪問不了設(shè)置了敏感列的數(shù)據(jù)?
這個(gè)問題是我最近遇到的一個(gè)難題之一。
一開始我以為作為 maxcompute 管理員,應(yīng)該可以“暢通無阻”,卻沒想到,敏感列遲遲無法訪問,中間做了很多功夫,讀了很多官方文檔,最終的結(jié)論是需要 maxcompute 項(xiàng)目的 owner 或超級(jí)管理員給我設(shè)置用戶等級(jí)(Label)或者給我管理員權(quán)限,我自己配置。
注意,以上涉及了好些概念,我不知道我這么命名是否合理,不過在我看來是合理的。如果你已經(jīng)很了解阿里云大數(shù)據(jù)服務(wù)的權(quán)限問題,那可能很輕松能理解我的意思,但如果是新手,可能會(huì)有一些疑惑。沒事,待我細(xì)細(xì)說來。
首先 maxcompute 和 maxcompute 項(xiàng)目是兩個(gè)不同的東西,切忌混為一談!
你可以把 maxcompute 看做是一個(gè)服務(wù)器,而 maxcompute 項(xiàng)目是一個(gè)數(shù)據(jù)庫,然后敏感表、敏感列則是庫里的表和表的字段。
但作為數(shù)據(jù)庫的管理員不應(yīng)該是可以訪問數(shù)據(jù)庫里的所有數(shù)據(jù)嗎?這就涉及到另外一個(gè)概念:用戶等級(jí),官方定義為 User Label。由于我的賬號(hào)等級(jí)是 0 級(jí),而敏感列等級(jí)高于 0 級(jí),等級(jí)可以高級(jí)訪問低級(jí),但是無法逆向低級(jí)訪問高級(jí),所以訪問不了。
這樣子理解應(yīng)該就能明白為什么作為 maxcompute 的管理員,卻訪問不了敏感列的數(shù)據(jù)。
Label 策略是一個(gè)比較重要的參考標(biāo)準(zhǔn),即使在數(shù)據(jù)保護(hù)傘已經(jīng)設(shè)置了白名單,還是無法訪問敏感數(shù)據(jù)。
主線問題:如何提高用戶等級(jí)
那么,如何提高用戶等級(jí)呢?
從下面這篇官方文檔可以得知,提高用戶等級(jí)需要通過終端執(zhí)行命令來實(shí)現(xiàn)。
Label權(quán)限控制:https://help.aliyun.com/zh/maxcompute/user-guide/label-based-access-control?#section-4ha-2x9-h5i
修改 RAM 用戶等級(jí)的命令如下:
set Label 3 to USER RAM$Bob@aliyun.com:Allen;
其中,數(shù)字3
是目標(biāo)等級(jí),即要升到哪一個(gè)級(jí)別,RAM
指代 RAM 用戶,Bob@aliyun.com
是主賬號(hào)的郵箱,Allen
是 RAM 用戶名。如果是給主賬號(hào)調(diào)整,則把RAM$Bob@aliyun.com:Allen
改為ALIYUN$Bob@aliyun.com
。
執(zhí)行命令的地方有多個(gè)(相關(guān)鏈接可以再文檔中查找到):
- MaxCompute客戶端
- 使用SQL分析連接
- MaxCompute Studio
- 使用DataWorks連接
這里以 MaxCompute 為例,做個(gè)示例,比如我的賬號(hào)是:xindata,主賬號(hào)是:123456@qq.com,目標(biāo)等級(jí)是 1 級(jí),那么命令如下:
set Label 1 to USER RAM$123456@qq.com:xindata;
瀏覽器打開 maxcompute 控制臺(tái):https://maxcompute.console.aliyun.com/,然后點(diǎn)擊下圖的【命令行】,這個(gè)才是 ODPS CMD,上面的那個(gè)是云命令行,使用云命令行也可以,不過需要切換下路徑,進(jìn)入 ODPS CMD,命令為cloudshell-odpscmd -p "項(xiàng)目名稱"
,一開始搞錯(cuò)了,點(diǎn)了云命令行輸入以上命令一直報(bào)錯(cuò)說命令不存在,哈哈哈。
點(diǎn)擊命令行之后選擇對(duì)應(yīng)的項(xiàng)目,便可以開啟一個(gè)窗口,輸入以上命令,返回結(jié)果說我沒有安全操作。
Authorization Failed [4003], You have NO privilege to do the PROJECT SECURITY OPERATION for {acs:odps:*:projects/xxx/authorization/users}.
通過搜索錯(cuò)誤提示,找到了一篇解決文檔:https://help.aliyun.com/zh/maxcompute/user-guide/odps-0420095?#pAFKK
從解決文檔提示看,需要授權(quán),授權(quán)方式有兩種:
- 可以是項(xiàng)目的 admin 或者 super_administrator 角色
- 也可以是項(xiàng)目管理類權(quán)限一覽表。
表單提供了一種方法,可以通過新增策略動(dòng)作給用戶授權(quán),我所需要的動(dòng)作是SetDataLabel
。
于是編輯了相關(guān)的權(quán)限策略:
{
"Version": "1",
"Statement": [
{
"Effect": "Allow",
"Action": [
"odps:SetDataLabel"
],
"Resource": [
* // 開始使用:"acs:odps:*:projects/xxx/authorization/users" 但提示格式有誤,改 *
],
"Condition": {}
}
]
}
但是這個(gè)策略放哪里呢?
一開始我不清楚 maxcompute 和 maxcompute 項(xiàng)目的差異的時(shí)候,我在 RAM 控制臺(tái)的權(quán)限策略中新建了一個(gè)策略進(jìn)行授權(quán),可想而知,這是無效的!其實(shí)在 RAM 控制臺(tái),我已經(jīng)是有了 maxcompute 的管理權(quán)限,所以并不需要再一次這么配置。
實(shí)際上配置的位置是在 maxcompute 項(xiàng)目中,具體路徑是在 maxcompute 控制臺(tái)的項(xiàng)目管理中,選擇對(duì)應(yīng)的項(xiàng)目列表,點(diǎn)擊右側(cè)的管理。在項(xiàng)目詳情中,點(diǎn)擊角色權(quán)限,如果沒有權(quán)限,會(huì)有報(bào)錯(cuò)提示。由于我沒有權(quán)限,所以是空的(報(bào)錯(cuò)已關(guān)閉)。
參考通過控制臺(tái)(新版)管理用戶權(quán)限:https://help.aliyun.com/zh/maxcompute/user-guide/manage-user-permissions-in-the-maxcompute-console
所以,第二條路是走不通的,沒有管理權(quán)限,根本無法進(jìn)入配置用戶權(quán)限。
結(jié)論就是:只能由項(xiàng)目的 admin 或者 super_administrator 角色處理了。
衍生問題1:怎么知道自己的等級(jí)和表單的等級(jí)
這個(gè)其實(shí)用表的時(shí)候,如果有權(quán)限問題,會(huì)報(bào)錯(cuò)提示:
The sensitive label of column ‘xxx’ is 1, but your effective label from package is 0.
如果想直接查詢,也可以通過以下命令查詢:
# 查看自己的等級(jí)信息,第一條是當(dāng)前用戶,第二條是指定用戶
show label grants;
show label grants for RAM$123456@qq.com:xindata;
# 查看表的等級(jí)信息,注意,如果提示沒有 odps:describe 權(quán)限,去安全中心申請(qǐng)表單權(quán)限,獲取 describe 權(quán)限。
desc 項(xiàng)目名.表名稱;
衍生問題2:為什么 dataworks 空間管理員也沒有設(shè)置等級(jí)的權(quán)限?
DataWorks 是阿里云提供的一站式大數(shù)據(jù)開發(fā)治理平臺(tái),可以在 DataWorks 上進(jìn)行 MaxCompute 作業(yè)開發(fā)、周期性調(diào)度、作業(yè)運(yùn)維、數(shù)據(jù)治理等一站式數(shù)據(jù)開發(fā)治理操作??稍?DataWorks 控制臺(tái)創(chuàng)建 DataWorks 工作空間,并在這過程中直接創(chuàng)建并綁定 MaxCompute 項(xiàng)目,后續(xù)即可在 DataWorks 工作空間中開發(fā) MaxCompute 作業(yè)。
DataWorks 和 maxcompute 二者的權(quán)限有相通之處,但也有不同點(diǎn),具體差異如下:
參考MaxCompute和DataWorks的權(quán)限關(guān)系:https://help.aliyun.com/zh/maxcompute/user-guide/permissions?#section-u7s-ys0-vv0
可以看到 MaxCompute 的管理員角色不能通過 DataWorks 設(shè)置,即使是 DataWorks 空間管理員,再 MaxCompute 的映射也只是一個(gè) Role_Project_Admin 角色,對(duì)應(yīng)的權(quán)限僅僅是 當(dāng)前項(xiàng)目下project/table/fuction/resource/instance/job
的所有權(quán)限,以及 package 的 read 權(quán)限,并非管理員。
所以 DataWorks 空間管理員也沒有設(shè)置等級(jí)的權(quán)限。
衍生問題3:敏感列從哪里來
首先是項(xiàng)目的設(shè)置,在 MaxCompute 項(xiàng)目的詳情中,我們可以看到項(xiàng)目的配置信息,里面會(huì)限制一欄:啟動(dòng)Label訪問控制,如果啟動(dòng),就可以配置敏感列。
敏感列的配置地方在數(shù)據(jù)保護(hù)傘,可以在 DataWorks 首頁打開全部產(chǎn)品找到它。
然后在【敏感數(shù)據(jù)識(shí)別】中新增規(guī)則識(shí)別敏感數(shù)據(jù),在此之前可能需要先在【數(shù)據(jù)分類分級(jí)】中新增分類和分級(jí)的類別和層數(shù)。
配置好之后,還可以在【用戶組管理】添加用戶組,并在【數(shù)據(jù)脫敏管理】中新增白名單,但這并不能覆蓋用戶等級(jí)的限制,低等級(jí)依舊無法訪問高等級(jí)的數(shù)據(jù)。文章來源:http://www.zghlxwxcb.cn/news/detail-694696.html
小結(jié)
本次探索過程,發(fā)現(xiàn)了一個(gè)問題,阿里云產(chǎn)品,可能每一個(gè)都會(huì)有自己的控制臺(tái),有自己的一套權(quán)限管理,配置權(quán)限前,需要先思考,這個(gè)權(quán)限是在哪一個(gè)平臺(tái)上使用,然后針對(duì)性去對(duì)應(yīng)的文檔和對(duì)應(yīng)的控制臺(tái)中尋找解決方案。
就如本次,處理的內(nèi)容其實(shí)是 MaxCompute 項(xiàng)目級(jí)別的問題,需要到項(xiàng)目中去尋找解決方案,一開始我配置了 RAM 用戶相關(guān)權(quán)限,也在數(shù)據(jù)保護(hù)傘和 DataWorks 用戶管理上面也嘗試了解決方案,不過都是無用功,無法最終解決問題,只是更加清晰地了解了阿里云的權(quán)限管理邏輯。文章來源地址http://www.zghlxwxcb.cn/news/detail-694696.html
到了這里,關(guān)于阿里云大數(shù)據(jù)實(shí)戰(zhàn)記錄9:MaxCompute RAM 用戶與授權(quán)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!