MaxCompute結合了阿里雲的存取控制服務(RAM)和令牌服務(STS)實現對外部資料源的安全訪問。本文介紹基於存取控制服務(RAM)和令牌服務(STS)的不同功能情境下的授權方式。
OSS的RAM普通角色授權
MaxCompute外部表格直接存取OSS資料,需要表所有者將OSS資料存取權限(RAMRole)整合到OSS外部表格中,再根據需要為需要訪問此外部表格的使用者授予相應許可權。可以通過以下方式授權:
一鍵授權(推薦):當MaxCompute和OSS的Owner是同一個帳號時,登入阿里雲帳號後,單擊此處完成一鍵授權。
說明預設建立的AliyunODPSDefaultRole許可權較多,僅供參考,需要根據MaxCompute外表或外部資料源可訪問的外部資料許可權,在RAM控制台中配置合理的權限原則和信任策略。
自訂授權:無論MaxCompute和OSS的Owner是不是同一個帳號,都可以使用該方式授權。具體操作如下。
當MaxCompute和OSS的Owner是同一個帳號時,添加信任策略時需要將service配置成
odps.aliyuncs.com。當MaxCompute和OSS的Owner不是同一個帳號時,添加信任策略時需要將service配置成
MaxCompute的Owner雲帳號ID*@odps.aliyuncs.com,MaxCompute的Owner雲帳號ID可以在帳號概覽中擷取。
建立RAM角色。
登入RAM控制台,通過RAM控制台中的RAM角色建立角色。例如角色oss-admin。更多建立角色操作資訊,請參見建立可信實體為阿里雲帳號的RAM角色。

修改RAM角色策略內容。
登入RAM控制台。
在左側導覽列選擇。
在角色頁面,單擊目標角色名称,進入該角色詳情頁。
在信任策略頁簽,單擊編輯信任策略,在編輯信任策略頁面選擇腳本編輯頁簽。
配置如下策略:
當MaxCompute和OSS的Owner為同一個帳號時
{ "Statement": [ { "Action": "sts:AssumeRole", "Effect": "Allow", "Principal": { "Service": [ "odps.aliyuncs.com" ] } } ], "Version": "1" }當MaxCompute和OSS的Owner不是同一個帳號時
{ "Statement": [ { "Action": "sts:AssumeRole", "Effect": "Allow", "Principal": { "Service": [ "MaxCompute的Owner雲帳號I*@odps.aliyuncs.com" ] } } ], "Version": "1" }修改完成後,單擊确定。
建立權限原則。
在RAM控制台中的權限原則管理頁面,建立權限原則,例如AliyunODPSRolePolicy。
策略內容如下,也可以自訂其他許可權。更多授權操作資訊,請參見建立自訂權限原則。
{ "Version": "1", "Statement": [ { "Action": [ "oss:ListBuckets", "oss:GetObject", "oss:ListObjects", "oss:PutObject", "oss:DeleteObject", "oss:AbortMultipartUpload", "oss:ListParts" ], "Resource": "*", "Effect": "Allow" } ] }將建立的權限原則授權給建立的RAM角色。
登入RAM控制台。
在左側導覽列選擇。
在角色頁面,單擊目標角色名称,進入該角色詳情頁。
在权限管理頁簽,單擊新增授权。在彈出的新增授权面板中,選擇要授予該角色的權限原則,單擊確認新增授權。
更多操作資訊,請參見管理RAM角色的許可權。
OTS的RAM普通角色授權
MaxCompute外部表格直接存取OTS資料,需要表所有者將OTS資料存取權限(RAMRole)整合到OTS外部表格中,再根據需要為需要訪問此外部表格的使用者授予相應許可權。可以通過以下方式授權:
一鍵授權(推薦):當MaxCompute和OTS的Owner是同一個帳號時,登入阿里雲帳號後,單擊此處完成一鍵授權。
自訂授權:當MaxCompute和OTS的Owner不是同一個帳號時,自訂角色並授權。
建立RAM角色。
使用OTS帳號登入RAM控制台,通過RAM控制台中的RAM角色建立角色。例如角色oss-admin-ots。
更多建立角色操作資訊,請參見建立可信實體為阿里雲帳號的RAM角色。
修改RAM角色策略內容。
當MaxCompute和OTS的Owner不是同一個帳號時,設定如下所示,支援跨帳號實現MaxCompute訪問OTS。
登入RAM控制台。
在左側導覽列選擇。
在角色頁面,單擊目標角色名称,進入該角色詳情頁。
在信任策略頁簽,單擊編輯信任策略,在編輯信任策略頁面選擇腳本編輯頁簽。
配置如下策略:
{ "Statement": [ { "Action": "sts:AssumeRole", "Effect": "Allow", "Principal": { "Service": [ "MaxCompute的Owner雲帳號的UI*@odps.aliyuncs.com" ] } } ], "Version": "1" }MaxCompute的Owner雲帳號ID為訪問OTS服務的帳號。
建立權限原則。
在RAM控制台中的權限原則管理頁面,建立權限原則,例如AliyunODPSRolePolicy。
策略內容如下,也可以自訂其他許可權。更多授權操作資訊,請參見建立自訂權限原則。
{ "Version": "1", "Statement": [ { "Action": [ "ots:ListTable", "ots:DescribeTable", "ots:GetRow", "ots:PutRow", "ots:UpdateRow", "ots:DeleteRow", "ots:GetRange", "ots:BatchGetRow", "ots:BatchWriteRow", "ots:ComputeSplitPointsBySize" ], "Resource": "*", "Effect": "Allow" } ] }將建立的權限原則AliyunODPSRolePolicy授權給建立的RAM角色。
登入RAM控制台。
在左側導覽列選擇。
在角色頁面,單擊目標角色名称,進入該角色詳情頁。
在权限管理頁簽,單擊新增授权。在彈出的新增授权面板中,選擇要授予該角色的權限原則,單擊確認新增授權。
更多授權操作資訊,請參見管理RAM角色的許可權。
Hologres的RAM普通角色授權
MaxCompute外部表格直接存取Hologres資料,需要表所有者將Hologres資料存取權限(RAMRole)整合到Hologres外部表格中,再根據需要為需要訪問此外部表格的使用者授予相應許可權。可以通過以下方式授權:
建立RAM角色
建立RAM角色擷取ARN資訊,用於建立外部表格時填寫STS認證資訊。建立RAM角色的信任主體類型根據實際需求選擇,本樣本中信任主體類型為雲帳號。
雲帳號:
阿里雲帳號下的RAM使用者可以通過扮演RAM角色來訪問雲資源,詳情請參見建立可信實體為阿里雲帳號的RAM角色。
身份供應商:
通過設定SSO實現從企業本地帳號系統登入至阿里雲控制台,解決企業的統一使用者登入認證要求,詳情請參見建立可信實體為身份供應商的RAM角色。
操作步驟如下:
登入RAM控制台。
在左側導覽列選擇。
在角色頁面,單擊创建角色。
修改信任策略配置
在角色頁面,單擊目標角色名称,進入該角色詳情頁。
在信任策略頁簽,單擊編輯信任策略,在編輯信任策略頁面選擇腳本編輯頁簽。
參照如下內容修改信任策略配置
修改信任策略配置內容與選擇的可信實體類型相關。其中
<UID>即阿里雲帳號ID,可在使用者資訊頁面擷取。可信實體類型為阿里雲帳號
{ "Statement": [ { "Action": "sts:AssumeRole", "Effect": "Allow", "Principal": { "RAM": [ "acs:ram::<UID>:root" ] } }, { "Action": "sts:AssumeRole", "Effect": "Allow", "Principal": { "Service": [ "<UID>@odps.aliyuncs.com" ] } } ], "Version": "1" }可信實體類型為身份供應商
{ "Statement": [ { "Action": "sts:AssumeRole", "Condition": { "StringEquals": { "saml:recipient": "https://signin.aliyun.com/saml-role/sso" } }, "Effect": "Allow", "Principal": { "Federated": [ "acs:ram::<UID>:saml-provider/IDP" ] } }, { "Action": "sts:AssumeRole", "Effect": "Allow", "Principal": { "Service": [ "<UID>@odps.aliyuncs.com" ] } } ], "Version": "1" }
添加RAM角色至Hologres執行個體並授權
RAM角色需要有Hologres執行個體的開發許可權,才能在許可權範圍內使用Hologres。
由於RAM角色預設沒有Hologres管理主控台的查看和操作執行個體的許可權,因此需要阿里雲帳號完成RAM相關許可權授予才能進行後續操作。
添加RAM角色至Hologres執行個體步驟如下:
通過Hologres管理主控台授權
登入Hologres管理主控台,在左上方選擇地區。
在左側導覽列選擇實例清單。
在實例清單頁面,單擊目標執行個體名稱。
在執行個體詳情頁面,在左側導覽列選擇帳號管理。
在用户管理頁面,單擊新增使用者。
在彈出的新增使用者頁面,配置相關資訊,單擊确认。
角色選擇
AliyunODPSDefaultRole。成員角色選擇普通使用者。
在用户管理頁面,在左側導覽列選擇DB授權。
在DB授權頁面,單擊新增資料庫。
在彈出的新增資料庫頁面,配置相關資訊,單擊确认。
权限策略選擇SPM。
在DB授權頁面,單擊目標資料庫對應的操作列的使用者授權。
單擊右上方新增授权。在彈出的新增授权對話方塊中,配置使用者和使用者組。
用户選擇要配置的RAM使用者。
用户组選擇Developer。
通過RAM存取控制台授權
將建立的權限原則AliyunODPSRolePolicy授權給建立的RAM角色。
登入RAM控制台。
在左側導覽列選擇。
在用户頁面,單擊目標用户登录名称/显示名称,進入使用者詳情頁面。
在使用者詳情頁面,單擊权限管理頁簽。
在权限管理頁簽下,選擇个人权限,單擊新增授权。
在彈出的新增授权面板中,選擇要授予該使用者的權限原則,單擊確認新增授權。
權限原則選擇
AliyunRAMReadOnlyAccess。更多授權操作資訊,請參見授予RAM使用者權限。
通過SQL方式授權
授權SQL請參見Hologres許可權模型。
Hologres還支援雙簽名的認證方式,詳情請參見Hologres外部表格。
DLF+OSS的RAM普通角色授權
通過MaxCompute與DLF和OSS構建湖倉一體時,需要將DLF和OSS的資料存取權限(RAMRole)整合到外部資料源中,然後建立外部Schema(External Schema)並使用該許可權訪問DLF和OSS。如需為其他使用者授予外部Schema中表的存取權限,請參見外部模式內對聯邦外表授權。授權方式如下:
一鍵授權(推薦):當建立MaxCompute專案的帳號和部署DLF、OSS的帳號相同時。推薦直接單擊授權DLF和OSS一鍵授權。
自訂授權:無論建立MaxCompute專案的帳號和部署DLF、OSS的帳號是否相同,都可以使用該方式。具體操作如下。
MaxCompute專案RAM使用者和部署DLF的帳號相同時,添加信任策略時需要將service配置成
odps.aliyuncs.com。MaxCompute專案RAM使用者和部署DLF的帳號不同時,添加信任策略時需要將service配置成
<MaxCompute專案的Owner雲帳號id>@odps.aliyuncs.com。可以在帳號概覽中擷取MaxCompute的Owner雲帳號id。
登入RAM存取控制台建立可信實體為阿里雲帳號的RAM角色。
通過RAM控制台修改RAM角色的信任策略。信任策略內容如下:
建立MaxCompute專案的帳號和部署DLF的帳號是同一個帳號
{ "Statement": [ { "Action": "sts:AssumeRole", "Effect": "Allow", "Principal": { "Service": [ "odps.aliyuncs.com" ] } } ], "Version": "1" }建立MaxCompute專案的帳號和部署DLF的帳號不是同一個帳號
{ "Statement": [ { "Action": "sts:AssumeRole", "Effect": "Allow", "Principal": { "Service": [ "<MaxCompute專案的Owner雲帳號id>@odps.aliyuncs.com" ] } } ], "Version": "1" }通過RAM控制台,為建立的RAM角色自訂權限原則。操作詳情,請參見建立自訂權限原則。自訂許可權內容如下:
{ "Version": "1", "Statement": [ { "Action": [ "oss:ListBuckets", "oss:GetObject", "oss:ListObjects", "oss:PutObject", "oss:DeleteObject", "oss:AbortMultipartUpload", "oss:ListParts" ], "Resource": "*", "Effect": "Allow" }, { "Action": [ "dlf:CreateFunction", "dlf:BatchGetPartitions", "dlf:ListDatabases", "dlf:CreateLock", "dlf:UpdateFunction", "dlf:BatchUpdateTables", "dlf:DeleteTableVersion", "dlf:UpdatePartitionColumnStatistics", "dlf:ListPartitions", "dlf:DeletePartitionColumnStatistics", "dlf:BatchUpdatePartitions", "dlf:GetPartition", "dlf:BatchDeleteTableVersions", "dlf:ListFunctions", "dlf:DeleteTable", "dlf:GetTableVersion", "dlf:AbortLock", "dlf:GetTable", "dlf:BatchDeleteTables", "dlf:RenameTable", "dlf:RefreshLock", "dlf:DeletePartition", "dlf:UnLock", "dlf:GetLock", "dlf:GetDatabase", "dlf:GetFunction", "dlf:BatchCreatePartitions", "dlf:ListPartitionNames", "dlf:RenamePartition", "dlf:CreateTable", "dlf:BatchCreateTables", "dlf:UpdateTableColumnStatistics", "dlf:ListTableNames", "dlf:UpdateDatabase", "dlf:GetTableColumnStatistics", "dlf:ListFunctionNames", "dlf:ListPartitionsByFilter", "dlf:GetPartitionColumnStatistics", "dlf:CreatePartition", "dlf:CreateDatabase", "dlf:DeleteTableColumnStatistics", "dlf:ListTableVersions", "dlf:BatchDeletePartitions", "dlf:ListCatalogs", "dlf:UpdateTable", "dlf:ListTables", "dlf:DeleteDatabase", "dlf:BatchGetTables", "dlf:DeleteFunction" ], "Resource": "*", "Effect": "Allow" } ] }將自訂的權限原則,授權給建立的RAM角色。操作詳情,請參見管理RAM角色的許可權。
Hologres的服務關聯角色(身份透傳)授權
MaxCompute通過外部資料源和外部項目訪問Hologres資料時,需要通過服務關聯角色打通Hologres的資料存取權限。建立服務關聯角色的方法如下。建立成功後,為防止越權訪問,此模式會在訪問時透傳使用者身份到Hologres鑒權,使用者需要加入MaxCompute外部項目並具備外部項目所映射的Hologres資料來源的許可權。
登入RAM控制台。
在左側導覽列選擇。
在角色頁面,單擊创建角色。
在创建角色頁面的右上方,單擊創建服務關聯角色。
在創建服務關聯角色頁面,選擇信任的雲服務
aliyunserviceroleformaxcomputeidentitymgmt,單擊創建服務關聯角色。若提示角色已經存在,說明已經授權過,忽略即可。
Paimon_DLF的服務關聯角色(身份透傳)授權
MaxCompute通過外部資料源和外部項目訪問DLF的資料,MaxCompute需要通過服務關聯角色打通DLF的資料相關許可權,建立服務關聯角色需要使用者佈建,方法如下。建立成功後,使用時為了不越權訪問,此模式會在訪問時透傳使用者身份到DLF鑒權,需要使用者加入MaxCompute外部項目並具備外部項目映射的DLF資料來源的許可權。
MaxCompute通過外部資料源和外部項目訪問DLF資料時,需要通過服務關聯角色打通DLF的資料存取權限。建立服務關聯角色的方法如下。建立成功後,為防止越權訪問,此模式會在訪問時透傳使用者身份到DLF鑒權,使用者需要加入MaxCompute外部項目並具備外部項目所映射的DLF資料來源的許可權。
登入RAM控制台。
在左側導覽列選擇。
在角色頁面,單擊创建角色。
在创建角色頁面的右上方,單擊創建服務關聯角色。
在創建服務關聯角色頁面,選擇信任的雲服務
AliyunServiceRoleForMaxComputeLakehouse,單擊創建服務關聯角色。若提示角色已經存在,說明已經授權過,忽略即可。