中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

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

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

如何在DataWorks中實現指定UDF只能被指定賬戶訪問

發布時間:2021-11-15 17:04:33 來源:億速云 閱讀:251 作者:柒染 欄目:云計算

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

在DataWorks中實現指定資源被指定賬戶訪問

背景

之前寫過一篇文章是關于“DataWorks和MaxCompute內部權限體系的區別”有興趣的朋友可以點擊閱讀查看詳情。但是還是有些同學會問,我如何在DataWorks中實現我的具體某個Resource,Table還是UDF只能被我指定的用戶所使用的權限管控。這個UDF可能涉及到數據的加解密算法,屬于數據安全管控范圍了。

常見方案

  1. package方案,通過打包授權進行權限精細化管控。

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

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

可選方案

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

  • 首先,普及大家熟知的DataWorks開發者角色的權限如下:

如何在DataWorks中實現指定UDF只能被指定賬戶訪問cdn.com/6bad1105b21a5a7609c56fd7e908da55fa5d227b.png">

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

  • 其次,通過DataWorks添加了子賬號并賦予了開發者角色

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

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

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

Role policy方案

為了安全起見,建議初學者找個測試項目來驗證policy。以下操作都是通過MaxCompute console完成,具體詳見:console配置。

① 創建默認拒絕訪問UDF角色

step1:創建一個role  denyudfrole,如下:
odps@ sz_mc>create role denyudfrole;

step2:創建policy授權文件,如下:

{
"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:設置和查看role policy。如下:
odps@ sz_mc>put policy /Users/yangyi/Desktop/role_policy.json on role denyudfrole;

如何在DataWorks中實現指定UDF只能被指定賬戶訪問

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

至此我們驗證下,以子賬號RAM$yangyi.pt@aliyun-test.com:ramtest登錄MaxCompute console。
1、登錄console確認角色。

2、show grants查看當前登錄用戶權限。

如何在DataWorks中實現指定UDF只能被指定賬戶訪問

可以看出來,該RAM子賬號有兩個角色,一個是role_project_dev其實就是DataWorks默認的開發者角色,一個是我們剛自定義創建的denyudfrole。

3、驗證自建UDF以及依賴的包的權限。

如何在DataWorks中實現指定UDF只能被指定賬戶訪問

驗證成功,該子賬號在擁有了DataWorks開發者角色的前提下并沒有自建UDF:getregion的讀權限。但是離我們期望只能指定某個用戶來訪問該UDF還差最后一步。需要結合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:設置和查看policy。
odps@ sz_mc>put policy /Users/yangyi/Desktop/project_policy.json;

驗證下:

如何在DataWorks中實現指定UDF只能被指定賬戶訪問

跑一個SQL看看

查看依賴的包:

如何在DataWorks中實現指定UDF只能被指定賬戶訪問

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

有些同學到這里可能清晰的認識了DataWorks和MaxCompute的安全體系,但是有些同學可能還比較暈。總結如下:

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

  2. 指定賬戶訪問資源的,在DataWorks配置數據數據開發者權限后再再MaxCompute console上按照project policy配置為允許訪問權限。


上述內容就是如何在DataWorks中實現指定UDF只能被指定賬戶訪問,你們學到知識或技能了嗎?如果還想學到更多技能或者豐富自己的知識儲備,歡迎關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

盐源县| 和田县| 昭觉县| 博客| 宣化县| 香港| 芜湖市| 乌拉特前旗| 汪清县| 伊宁市| 仁寿县| 扎兰屯市| 湘潭市| 驻马店市| 军事| 通州市| 拉萨市| 通榆县| 通河县| 湖北省| 成都市| 古浪县| 游戏| 怀仁县| 滁州市| 长泰县| 淮安市| 永安市| 左权县| 涿州市| 紫云| 南部县| 辉县市| 邹平县| 浮梁县| 东乡| 泌阳县| 丰台区| 沈丘县| 金湖县| 彭州市|