溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

如何在DataWorks中實(shí)現(xiàn)指定UDF只能被指定賬戶訪問

發(fā)布時(shí)間:2021-11-15 17:04:33 來源:億速云 閱讀:242 作者:柒染 欄目:云計(jì)算

本篇文章為大家展示了如何在DataWorks中實(shí)現(xiàn)指定UDF只能被指定賬戶訪問,內(nèi)容簡明扼要并且容易理解,絕對(duì)能使你眼前一亮,通過這篇文章的詳細(xì)介紹希望你能有所收獲。

在DataWorks中實(shí)現(xiàn)指定資源被指定賬戶訪問

背景

之前寫過一篇文章是關(guān)于“DataWorks和MaxCompute內(nèi)部權(quán)限體系的區(qū)別”有興趣的朋友可以點(diǎn)擊閱讀查看詳情。但是還是有些同學(xué)會(huì)問,我如何在DataWorks中實(shí)現(xiàn)我的具體某個(gè)Resource,Table還是UDF只能被我指定的用戶所使用的權(quán)限管控。這個(gè)UDF可能涉及到數(shù)據(jù)的加解密算法,屬于數(shù)據(jù)安全管控范圍了。

常見方案

  1. package方案,通過打包授權(quán)進(jìn)行權(quán)限精細(xì)化管控。

  2. DataWorks上新建角色(管理>MaxCompute高級(jí)配置>自定義用戶角色)來進(jìn)行高級(jí)管控。

  3. Role policy方案,通過role policy來自定義role的權(quán)限集合。

可選方案

(1)package方案,通過打包授權(quán)進(jìn)行權(quán)限精細(xì)化管控。
package基本知識(shí),通常是為了解決跨項(xiàng)目空間的共享數(shù)據(jù)及資源的用戶授權(quán)問題。當(dāng)通過package后會(huì)發(fā)現(xiàn)給予其DataWorks開發(fā)者角色后用戶擁有了所有權(quán)限。不可控。

  • 首先,普及大家熟知的DataWorks開發(fā)者角色的權(quán)限如下:

如何在DataWorks中實(shí)現(xiàn)指定UDF只能被指定賬戶訪問cdn.com/6bad1105b21a5a7609c56fd7e908da55fa5d227b.png">

從權(quán)限配置上看明顯不符合我們的要求,明顯看出來其對(duì)project中的package、functions、resources和table默認(rèn)有全部權(quán)限。
A projects/sz_mc/packages/*: *
A projects/sz_mc/registration/functions/*: *
A projects/sz_mc/resources/*: *
A projects/sz_mc/tables/*: *

  • 其次,通過DataWorks添加了子賬號(hào)并賦予了開發(fā)者角色

上述的普及應(yīng)該讓大家明白,通過打package和DataWorks默認(rèn)的角色都不能夠滿足我們的需求。比如我將子賬號(hào)RAM$yangyi.pt@aliyun-test.com:ramtest并給予開發(fā)者角色,那么他就默認(rèn)擁有這個(gè)當(dāng)前項(xiàng)目里所有Object的所有action權(quán)限,具體詳見。

(2)DataWorks上新建角色(管理>MaxCompute高級(jí)配置>自定義用戶角色)來進(jìn)行高級(jí)管控。但是在DataWorks-MaxCompute高級(jí)配置中只能針對(duì)某個(gè)表/某個(gè)項(xiàng)目進(jìn)行授權(quán),不能對(duì)resource和udf進(jìn)行授權(quán)。

(3)role policy方案,通過policy可以精細(xì)化的管理到具體用戶針對(duì)具體資源的具體權(quán)限粒度,可以滿足我們的場景需求。但是policy機(jī)制的官方文檔一直沒有公開,主要考慮到用戶是否熟悉policy否則使用起來會(huì)造成一定的困擾和問題,耽誤開發(fā)效率。

Role policy方案

為了安全起見,建議初學(xué)者找個(gè)測(cè)試項(xiàng)目來驗(yàn)證policy。以下操作都是通過MaxCompute console完成,具體詳見:console配置。

① 創(chuàng)建默認(rèn)拒絕訪問UDF角色

step1:創(chuàng)建一個(gè)role  denyudfrole,如下:
odps@ sz_mc>create role denyudfrole;

step2:創(chuàng)建policy授權(quán)文件,如下:

{
"Version": "1", "Statement":

[{
"Effect":"Deny",
"Action":["odps:Read","odps:List"],
"Resource":"acs:odps:*:projects/sz_mc/resources/getaddr.jar"
},
{
"Effect":"Deny",
"Action":["odps:Read","odps:List"],
"Resource":"acs:odps:*:projects/sz_mc/registration/functions/getregion"
}
 ] }

step3:設(shè)置和查看role policy。如下:
odps@ sz_mc>put policy /Users/yangyi/Desktop/role_policy.json on role denyudfrole;

如何在DataWorks中實(shí)現(xiàn)指定UDF只能被指定賬戶訪問

step4:添加用戶至role denyudfrole。
odps@ sz_mc>grant denyudfrole to RAM$yangyi.pt@aliyun-test.com:ramtest;

至此我們驗(yàn)證下,以子賬號(hào)RAM$yangyi.pt@aliyun-test.com:ramtest登錄MaxCompute console。
1、登錄console確認(rèn)角色。

2、show grants查看當(dāng)前登錄用戶權(quán)限。

如何在DataWorks中實(shí)現(xiàn)指定UDF只能被指定賬戶訪問

可以看出來,該RAM子賬號(hào)有兩個(gè)角色,一個(gè)是role_project_dev其實(shí)就是DataWorks默認(rèn)的開發(fā)者角色,一個(gè)是我們剛自定義創(chuàng)建的denyudfrole。

3、驗(yàn)證自建UDF以及依賴的包的權(quán)限。

如何在DataWorks中實(shí)現(xiàn)指定UDF只能被指定賬戶訪問

驗(yàn)證成功,該子賬號(hào)在擁有了DataWorks開發(fā)者角色的前提下并沒有自建UDF:getregion的讀權(quán)限。但是離我們期望只能指定某個(gè)用戶來訪問該UDF還差最后一步。需要結(jié)合project policy來解決此需求。

配置project policy

step1:編寫policy。

{
"Version": "1", "Statement":
[{
"Effect":"Allow",
"Principal":"RAM$yangyi.pt@aliyun-test.com:yangyitest",
"Action":["odps:Read","odps:List","odps:Select"],
"Resource":"acs:odps:*:projects/sz_mc/resources/getaddr.jar"
},
{
"Effect":"Allow",
 "Principal":"RAM$yangyi.pt@aliyun-test.com:yangyitest",
"Action":["odps:Read","odps:List","odps:Select"],
"Resource":"acs:odps:*:projects/sz_mc/registration/functions/getregion"
}] }

step2:設(shè)置和查看policy。
odps@ sz_mc>put policy /Users/yangyi/Desktop/project_policy.json;

驗(yàn)證下:

如何在DataWorks中實(shí)現(xiàn)指定UDF只能被指定賬戶訪問

跑一個(gè)SQL看看

查看依賴的包:

如何在DataWorks中實(shí)現(xiàn)指定UDF只能被指定賬戶訪問

到此為止,我們完成了需求。指定項(xiàng)目下只有指定的RAM子賬號(hào)能夠訪問指定的UDF和依賴的包。

有些同學(xué)到這里可能清晰的認(rèn)識(shí)了DataWorks和MaxCompute的安全體系,但是有些同學(xué)可能還比較暈??偨Y(jié)如下:

  1. 不想其訪問具體資源的,在DataWorks中添加數(shù)據(jù)開發(fā)者權(quán)限后再在MaxCompute console上按照role policy配置為拒絕訪問權(quán)限。

  2. 指定賬戶訪問資源的,在DataWorks配置數(shù)據(jù)數(shù)據(jù)開發(fā)者權(quán)限后再再M(fèi)axCompute console上按照project policy配置為允許訪問權(quán)限。


上述內(nèi)容就是如何在DataWorks中實(shí)現(xiàn)指定UDF只能被指定賬戶訪問,你們學(xué)到知識(shí)或技能了嗎?如果還想學(xué)到更多技能或者豐富自己的知識(shí)儲(chǔ)備,歡迎關(guān)注億速云行業(yè)資訊頻道。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請(qǐng)聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI