授權(quán)自定義角色寫(xiě)數(shù)據(jù)到MaxCompute
MaxCompute投遞任務(wù)(新版)運(yùn)行時(shí),需要將讀取到的Logstore中數(shù)據(jù)投遞到MaxCompute的表中,您可以授權(quán)MaxCompute投遞任務(wù)(新版)扮演自定義RAM角色完成該操作。本文介紹如何對(duì)自定義RAM角色進(jìn)行授權(quán)。
前提條件
如果您使用的是RAM用戶,請(qǐng)確保該用戶具備操作RAM角色授權(quán)的權(quán)限。
將您的MaxCompute項(xiàng)目創(chuàng)建為DataWorks的MaxCompute數(shù)據(jù)源。更多信息,請(qǐng)參見(jiàn)創(chuàng)建MaxCompute數(shù)據(jù)源。
同賬號(hào)投遞
授予RAM角色對(duì)MaxCompute的寫(xiě)入權(quán)限后,MaxCompute投遞任務(wù)可以使用該角色將Logstore中的數(shù)據(jù)寫(xiě)入到目標(biāo)MaxCompute的表中。此處通過(guò)添加RAM角色為工作空間成員的方式完成授權(quán)。
操作步驟
創(chuàng)建RAM角色,例如
MaxComputeShipRole
。具體操作,請(qǐng)參見(jiàn)創(chuàng)建可信實(shí)體為阿里云服務(wù)的RAM角色。重要創(chuàng)建RAM角色時(shí),必須選擇可信實(shí)體類型為阿里云服務(wù),且必須選擇受信服務(wù)為日志服務(wù)。
請(qǐng)檢查角色的信任策略如下,
Service
內(nèi)容至少包含"log.aliyuncs.com"
。{ "Statement": [ { "Action": "sts:AssumeRole", "Effect": "Allow", "Principal": { "Service": [ "log.aliyuncs.com" ] } } ], "Version": "1" }
修改RAM角色信任策略。
登錄RAM控制臺(tái)。
在左側(cè)導(dǎo)航欄中,選擇
。在RAM角色列表中,單擊目標(biāo)RAM角色,例如
MaxComputeShipRole
。在信任策略頁(yè)簽下,單擊編輯信任策略。
將原有的信任策略替換為如下內(nèi)容,然后單擊保存信任策略。
{ "Statement": [ { "Action": "sts:AssumeRole", "Effect": "Allow", "Principal": { "Service": [ "log.aliyuncs.com", "dataworks.aliyuncs.com" ] } } ], "Version": "1" }
添加RAM角色為工作空間成員。
您可以通過(guò)可視化界面或命令行授予RAM角色寫(xiě)MaxCompute權(quán)限。
通過(guò)可視化界面完成授權(quán)
在頁(yè)面左上角,選擇地域。
在左側(cè)導(dǎo)航欄中,單擊工作空間。在工作空間列表頁(yè)面,單擊目標(biāo)工作空間對(duì)應(yīng)的管理。
在工作空間頁(yè)面的空間成員頁(yè)簽下,單擊添加成員。
在添加成員對(duì)話框中,選中當(dāng)前登錄賬號(hào)和目標(biāo)RAM角色,完成添加。
此處需在批量設(shè)置角色中選中開(kāi)發(fā)。更多信息,請(qǐng)參見(jiàn)授權(quán)給其他用戶。
授予RAM角色操作MaxCompute表的權(quán)限。
登錄MaxCompute控制臺(tái),在左上角選擇地域。
選擇
,在項(xiàng)目管理頁(yè)面,單擊目標(biāo)項(xiàng)目操作列的管理。在MaxCompute項(xiàng)目管理頁(yè)面,單擊角色權(quán)限。
如果出現(xiàn)如下報(bào)錯(cuò),您需要先在角色列表中單擊admin對(duì)應(yīng)的成員管理,然后在成員管理對(duì)話框中,選中當(dāng)前登錄賬號(hào),根據(jù)頁(yè)面提示完成添加。
在角色列表中,單擊role_project_admin角色對(duì)應(yīng)的成員管理。
在成員管理對(duì)話框中,選中當(dāng)前登錄賬號(hào)和目標(biāo)RAM角色賬號(hào),如
MaxComputeShipRole
。完成添加。在角色列表中,單擊role_project_admin角色對(duì)應(yīng)的編輯角色。
在編輯角色對(duì)話框的Table頁(yè)簽下,選擇目標(biāo)MaxCompute表,選中Describe、Alter和Update。
重要上述授權(quán)只針對(duì)指定的MaxCompute表。如果您希望目標(biāo)角色可以操作當(dāng)前MaxCompute空間項(xiàng)目下所有的表,則您可以為當(dāng)前登錄賬號(hào)和目標(biāo)角色添加admin角色權(quán)限。即在角色列表中,單擊admin角色對(duì)應(yīng)的成員管理,然后在成員管理對(duì)話框中,選中當(dāng)前登錄賬號(hào)和目標(biāo)角色,完成添加。
通過(guò)命令行完成授權(quán)
在頁(yè)面左上角,選擇地域。
在左側(cè)導(dǎo)航欄中,單擊工作空間列表。
在工作空間列表頁(yè)面,將鼠標(biāo)懸停至目標(biāo)工作空間對(duì)應(yīng)的快速進(jìn)入,然后單擊數(shù)據(jù)開(kāi)發(fā)。
新建業(yè)務(wù)流程。
在數(shù)據(jù)開(kāi)發(fā)頁(yè)面,選擇
。在新建業(yè)務(wù)流程對(duì)話框中,設(shè)置業(yè)務(wù)名稱,然后單擊新建。
新建節(jié)點(diǎn)。
在數(shù)據(jù)開(kāi)發(fā)頁(yè)面,選擇
。在新建節(jié)點(diǎn)對(duì)話框中,設(shè)置節(jié)點(diǎn)名稱和路徑,然后單擊確認(rèn)。
其中,路徑需設(shè)置為您在上一步中所創(chuàng)建的業(yè)務(wù)流程。
在已創(chuàng)建的節(jié)點(diǎn)編輯框中,執(zhí)行如下命令,完成授權(quán)。
命令
說(shuō)明
USE project-name;
指定MaxCompute項(xiàng)目,需與您在創(chuàng)建MaxCompute投遞任務(wù)(新版)時(shí)設(shè)置的MaxCompute項(xiàng)目保持一致。更多信息,請(qǐng)參見(jiàn)創(chuàng)建MaxCompute投遞任務(wù)(新版)。
ADD USER RAM$****.aliyunid.com:`role/maxcomputeshiprole`;
在MaxCompute項(xiàng)目空間中添加用戶。
****.aliyunid.com為MaxCompute項(xiàng)目所屬的阿里云賬號(hào)。您可以通過(guò)
list users;
命令查看對(duì)應(yīng)的阿里云賬號(hào)。maxcomputeshiprole為自定義RAM角色的名稱,必須為小寫(xiě)格式。
GRANT CreateInstance ON PROJECT project-name TO USER RAM$*****:`role/maxcomputeshiprole`;
授予用戶在項(xiàng)目空間名為project-name的CreateInstance(創(chuàng)建實(shí)例)權(quán)限。
project-name
為MaxCompute項(xiàng)目名稱。GRANT DESCRIBE, ALTER, UPDATE ON TABLE table-name to user RAM$****.aliyunid.com:`role/maxcomputeshiprole`;
授予用戶查看、修改、更新目標(biāo)MaxCompute表的權(quán)限。
table-name
為MaxCompute表名。說(shuō)明該授權(quán)只針對(duì)指定的MaxCompute表,如果您希望目標(biāo)用戶可以操作當(dāng)前MaxCompute項(xiàng)目下的所有表,請(qǐng)執(zhí)行
GRANT admin to user RAM$****.aliyunid.com:`role/maxcomputeshiprole`;
命令完成授權(quán)。SHOW GRANTS FOR `RAM$****.aliyunid.com:role/maxcomputeshiprole`;
確認(rèn)授權(quán)是否成功。
如果返回如下類似信息表示授權(quán)成功。
Authorization Type: ACL [user/RAM$****.aliyunid.com:role/maxcomputeshiprole] A projects/default_project_****: CreateInstance A projects/default_project_****/tables/****: Describe | Alter | Update
在授權(quán)過(guò)程中,可能發(fā)生如下報(bào)錯(cuò)。
在操作過(guò)程中出現(xiàn)
FAILED: mismatched input
錯(cuò)誤,表示當(dāng)前的RAM用戶沒(méi)有執(zhí)行ADD USER
等語(yǔ)句的權(quán)限。更多信息,請(qǐng)參見(jiàn)出現(xiàn)FAILED: mismatched input錯(cuò)誤時(shí),如何解決。在操作過(guò)程中出現(xiàn)
FAILED: ODPS-0130013:Authorization exception - Authorization Failed [4003], You have NO privilege to do the PROJECT SECURITY OPERATION for {acs:odps:*:projects/xxxxxx/authorization/users}. Context ID:1111-11111-1111-1111-11111.
錯(cuò)誤,表示當(dāng)前的操作用戶無(wú)MaxCompute賬戶操作或者授權(quán)權(quán)限。更多信息,請(qǐng)參見(jiàn)出現(xiàn)操作用戶無(wú)權(quán)限錯(cuò)誤時(shí),如何解決。
后續(xù)操作
完成授權(quán)后,您可以在創(chuàng)建MaxCompute投遞任務(wù)(新版)時(shí),選擇寫(xiě)MaxCompute授權(quán)為自定義角色,然后輸入自定義RAM角色的ARN(如acs:ram::10**12:role/maxcomputeshiprole
),即可授權(quán)MaxCompute投遞任務(wù)(新版)使用自定義RAM角色將數(shù)據(jù)投遞到MaxCompute表中。具體操作,請(qǐng)參見(jiàn)創(chuàng)建MaxCompute投遞任務(wù)(新版)。
跨賬號(hào)投遞
日志服務(wù)和MaxCompute屬于不同的阿里云賬號(hào),例如日志服務(wù)屬于賬號(hào)A,MaxCompute屬于賬號(hào)B。則需授予賬號(hào)B下的RAM角色MaxComputeShipRole
寫(xiě)MaxCompute的權(quán)限。授權(quán)完成后,MaxCompute投遞任務(wù)可以使用該RAM角色將Logstore中的數(shù)據(jù)寫(xiě)入到目標(biāo)MaxCompute表中。
操作步驟
修改賬號(hào)B下RAM角色的信任策略。
使用阿里云賬號(hào)B登錄RAM控制臺(tái)。
創(chuàng)建RAM角色,例如
MaxComputeShipRole
。具體操作,請(qǐng)參見(jiàn)創(chuàng)建可信實(shí)體為阿里云服務(wù)的RAM角色。重要創(chuàng)建RAM角色時(shí),必須選擇可信實(shí)體類型為阿里云服務(wù),且必須選擇受信服務(wù)為日志服務(wù)。
請(qǐng)檢查角色的信任策略如下,
Service
內(nèi)容至少包含"log.aliyuncs.com"
。{ "Statement": [ { "Action": "sts:AssumeRole", "Effect": "Allow", "Principal": { "Service": [ "log.aliyuncs.com" ] } } ], "Version": "1" }
修改RAM角色信任策略
在左側(cè)導(dǎo)航欄中,選擇
。在RAM角色列表中,單擊RAM角色
MaxComputeShipRole
。在信任策略頁(yè)簽中,單擊編輯信任策略。在
Service
配置項(xiàng)中添加{阿里云賬號(hào)A的ID}@log.aliyuncs.com
和dataworks.aliyuncs.com
。其中{阿里云賬號(hào)A的ID}
,需根據(jù)實(shí)際情況替換,您可以在賬號(hào)中心查看阿里云賬號(hào)ID。說(shuō)明該策略表示賬號(hào)A有權(quán)限通過(guò)日志服務(wù)獲取臨時(shí)Token來(lái)操作賬號(hào)B中的資源。
{ "Statement": [ { "Action": "sts:AssumeRole", "Effect": "Allow", "Principal": { "Service": [ "log.aliyuncs.com", "dataworks.aliyuncs.com", "{阿里云賬號(hào)A的ID}@log.aliyuncs.com" ] } } ], "Version": "1" }
確認(rèn)無(wú)誤后,單擊保存信任策略。
添加賬號(hào)B下的RAM角色
MaxComputeShipRole
為工作空間成員。您可以在賬號(hào)B下通過(guò)可視化界面或命令行進(jìn)行RAM角色授權(quán)。具體操作,請(qǐng)參見(jiàn)通過(guò)可視化界面完成授權(quán)或通過(guò)命令行完成授權(quán)。
后續(xù)操作
完成授權(quán)后,您可以在創(chuàng)建MaxCompute投遞任務(wù)(新版)時(shí),選擇寫(xiě)MaxCompute授權(quán)為自定義角色,然后輸入賬號(hào)B下的自定義RAM角色的ARN(例如acs:ram::11**13:role/maxcomputeshiprole
),即可授權(quán)MaxCompute投遞任務(wù)(新版)使用賬號(hào)B下的自定義RAM角色將數(shù)據(jù)投遞到MaxCompute表中。具體操作,請(qǐng)參見(jiàn)創(chuàng)建MaxCompute投遞任務(wù)(新版)。