MaxCompute結合了阿里雲的存取控制服務(RAM)和令牌服務(STS)實現對資料的安全訪問。本文介紹控制服務(RAM)和令牌服務(STS)的授權方式。
OSS的STS模式普通角色授權
MaxCompute外部表格直接存取OSS的資料,需要事先將OSS的資料相關許可權賦予MaxCompute的訪問帳號,可以通過以下方式授權:
一鍵授權(推薦):當MaxCompute和OSS的Owner是同一個帳號時,登入阿里雲帳號後,單擊此處完成一鍵授權。
說明預設建立的AliyunODPSDefaultRole許可權較多,僅供參考,需要根據MaxCompute外表或外部資料源可訪問的外部資料許可權,在RAM控制台中配置合理的權限原則和信任策略。
自訂授權:無論MaxCompute和OSS的Owner是不是同一個帳號,都可以使用該方式授權。具體操作如下。
當MaxCompute和OSS的Owner是同一個帳號時,添加信任策略時需要將service配置成
odps.aliyuncs.com。當MaxCompute和OSS的Owner不是同一個帳號時,添加信任策略時需要將service配置成
MaxCompute的Owner雲帳號I*@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角色。
OTS的STS模式普通角色授權
MaxCompute外部表格直接存取OTS的資料,需要事先將OTS的資料相關許可權賦予MaxCompute的訪問帳號,可以通過以下方式授權:
一鍵授權(推薦):當MaxCompute和OTS的Owner是同一個帳號時,登入阿里雲帳號後,單擊此處完成一鍵授權。
自訂授權:當MaxCompute和OTS的Owner不是同一個帳號時,自訂角色並授權。
建立RAM角色。
使用OTS帳號登入RAM控制台,通過RAM控制台中的RAM角色建立角色。例如角色oss-adminots。
更多建立角色操作資訊,請參見建立可信實體為阿里雲帳號的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角色。
Hologres的STS模式普通角色授權
MaxCompute外部表格直接存取Hologres的資料,需要先將Hologres的資料相關許可權賦予MaxCompute的訪問帳號,以下介紹Hologres的STS模式授權操作。
使用Hologres帳號登入RAM控制台,通過RAM控制台中的RAM角色建立角色。
雲帳號:
阿里雲帳號下的RAM使用者可以通過扮演RAM角色來訪問雲資源,詳情請參見建立可信實體為阿里雲帳號的RAM角色。
身份供應商:
通過設定SSO實現從企業本地帳號系統登入至阿里雲控制台,幫您解決企業的統一使用者登入認證要求。詳情請參見建立可信實體為身份供應商的RAM角色。
修改信任策略配置
登入RAM控制台。
在左側導覽列選擇。
在角色頁面,單擊目標角色名稱,進入該角色詳情頁。
在信任策略頁簽,單擊編輯信任策略,在編輯信任策略頁面選擇指令碼編輯頁簽。
修改信任策略配置內容與選擇的可信實體類型相關。
當可信實體類型為阿里雲帳號時,配置策略如下:
{ "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。
通過SQL方式授權
授權SQL請參見Hologres許可權模型。
Tab 標題
將建立的權限原則AliyunODPSRolePolicy授權給建立的RAM角色。
登入RAM控制台。
在左側導覽列選擇。
在使用者頁面,單擊目標使用者登入名稱稱/顯示名稱,進入使用者詳情頁面。
在使用者詳情頁面,單擊許可權管理頁簽。
在許可權管理頁簽下,選擇個人許可權,單擊新增授權。
在彈出的新增授權面板中,選擇要授予該使用者的權限原則,單擊確認新增授權。
權限原則選擇
AliyunRAMReadOnlyAccess。更多授權操作資訊,請參見授予RAM使用者權限。
Hologres還支援雙簽名的認證方式,詳情請參見建立Hologres外部表格(雙簽名模式)。
DLF+OSS的STS模式普通角色授權
通過MaxCompute與DLF和OSS構建湖倉一體時,由於MaxCompute專案的帳號未經授權無法訪問DLF或OSS,需要執行授權操作。授權方式包含以下兩種:
一鍵授權(推薦):當建立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的STS模式服務關聯角色授權
MaxCompute通過外部資料源和外部項目訪問Hologres的資料,需要事先將Hologres的資料相關許可權賦予MaxCompute的訪問帳號。
使用任務執行者身份本質是為MaxCompute服務關聯角色授予訪問Hologres的許可權,並將任務執行者身份傳遞至Hologres。雙方同時將當前任務執行者限制在其擁有的兩個產品各自的許可權範圍內,因此需預先為MaxCompute建立服務關聯角色並完成授權。可以通過以下方式授權:
登入RAM控制台。
在左側導覽列選擇。
在角色頁面,單擊建立角色。
在建立角色頁面的右上方,單擊建立服務關聯角色。
在建立服務關聯角色頁面,選擇信任的雲端服務
aliyunserviceroleformaxcomputeidentitymgmt,單擊建立服務關聯角色。若提示角色已經存在,說明已經授權過,忽略即可。
Paimon_DLF的STS模式服務關聯角色授權
MaxCompute通過外部資料源和外部項目訪問Paimon_DLF的資料,需要事先將DLF的資料相關許可權賦予MaxCompute的訪問帳號。
使用任務執行者身份本質是為MaxCompute服務關聯角色授予訪問DLF的許可權,並將任務執行者身份傳遞至 DLF。雙方同時將當前任務執行者限制在其擁有的兩個產品各自的許可權範圍內,因此需預先為MaxCompute建立服務關聯角色並完成授權。可以通過以下方式授權:
登入RAM控制台。
在左側導覽列選擇。
在角色頁面,單擊建立角色。
在建立角色頁面的右上方,單擊建立服務關聯角色。
在建立服務關聯角色頁面,選擇信任的雲端服務
AliyunServiceRoleForMaxComputeLakehouse,單擊建立服務關聯角色。若提示角色已經存在,說明已經授權過,忽略即可。