全部產品
Search
文件中心

MaxCompute:訪問外部資料源授權方案

更新時間:Sep 16, 2026

MaxCompute結合了阿里雲的存取控制服務(RAM)和令牌服務(STS)實現對外部資料源的安全訪問。本文介紹基於存取控制服務(RAM)和令牌服務(STS)的不同功能情境下的授權方式。

OSS/OTS的RAM普通角色授權

MaxCompute外部表格直接存取OSS或OTS(Tablestore)資料,需要表所有者將OSS或OTS資料存取權限(RAMRole)整合到OSS或OTS外部表格中,再根據需要為訪問此外部表格的使用者授予相應許可權。

根據業務需求使用如下授權方式,建議使用自訂授權,可以更細粒度的控制許可權。

同帳號授權

當MaxCompute和OSS/OTS的Owner是同一個帳號時,MaxCompute支援一鍵授權和自訂授權。

  • 一鍵授權:登入阿里雲帳號後,單擊此處完成一鍵授權。一鍵授權會預設建立AliyunODPSDefaultRole角色,涉及許可權較多,適合測試使用。

  • 自訂授權:通過RAM控制台建立一個新的角色,並為其配置合理的權限原則和信任策略,達到細粒度許可權控制的效果。具體操作如下。

    1. 建立RAM角色。

      登入RAM控制台,通過RAM控制台中的RAM角色建立角色。例如角色test-admin。更多建立角色操作資訊,請參見建立可信實體為阿里雲帳號的RAM角色。

    2. 修改RAM角色策略內容。

      1. 登入RAM控制台。

      2. 在左側導覽列選擇身份管理 > 角色。

      3. 在角色頁面,單擊目標角色名称,進入該角色詳情頁。

      4. 在信任策略頁簽,單擊編輯信任策略,在編輯信任策略頁面選擇腳本編輯頁簽。

        配置如下策略:

        {
         "Statement": [
         {
         "Action": "sts:AssumeRole",
         "Effect": "Allow",
         "Principal": {
         "Service": [
         "odps.aliyuncs.com"
         ]
         }
         }
         ],
         "Version": "1"
        }
      5. 修改完成後,單擊确定。

    3. 建立權限原則。

      在RAM控制台中的權限原則管理頁面,建立權限原則,例如AliyunODPSRolePolicy。

      策略內容如下,也可以自訂其他許可權。更多授權操作資訊,請參見建立自訂權限原則。

      OSS相關權限原則

      {
      "Version": "1",
      "Statement": [
      {
       "Action": [
              "oss:ListBuckets",
              "oss:GetObject",
              "oss:ListObjects",
              "oss:PutObject",
              "oss:DeleteObject",
              "oss:AbortMultipartUpload",
              "oss:ListParts",
              "oss:GetBucketInfo",
              "oss:PostDataLakeStorageFileOperation",
              "oss:PostDataLakeStorageAdminOperation"
       ],
       "Resource": "*",
       "Effect": "Allow"
      }
      ]
      }

      OTS相關權限原則

      {
      "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"
      }
      ]
      }
    4. 將建立的權限原則授權給建立的RAM角色。

      1. 登入RAM控制台。

      2. 在左側導覽列選擇身份管理 > 角色。

      3. 在角色頁面,單擊目標角色名称,進入該角色詳情頁。

      4. 在权限管理頁簽,單擊新增授权。在彈出的新增授权面板中,選擇要授予該角色的權限原則,單擊確認新增授權。

        更多操作資訊,請參見管理RAM角色的許可權。

跨帳號授權

當MaxCompute和OSS/OTS的Owner不是同一個帳號時,MaxCompute支援自訂授權。

OSS/OTS的Owner通過RAM控制台建立一個新的角色,並為其配置合理的權限原則和信任策略。具體操作如下。

  1. 建立RAM角色。

    登入RAM控制台,通過RAM控制台中的RAM角色建立角色。例如角色test-admin。更多建立角色操作資訊,請參見建立可信實體為阿里雲帳號的RAM角色。

  2. 修改RAM角色策略內容。

    1. 登入RAM控制台。

    2. 在左側導覽列選擇身份管理 > 角色。

    3. 在角色頁面,單擊目標角色名称,進入該角色詳情頁。

    4. 在信任策略頁簽,單擊編輯信任策略,在編輯信任策略頁面選擇腳本編輯頁簽。

      配置如下策略:

      {
      "Statement": [
      {
       "Action": "sts:AssumeRole",
       "Effect": "Allow",
       "Principal": {
       "Service": [
       "MaxCompute的Owner雲帳號的UI*@odps.aliyuncs.com"
       ]
       }
      }
      ],
      "Version": "1"
      }
    5. 修改完成後,單擊确定。

  3. 在RAM控制台中的權限原則管理頁面,建立權限原則,例如AliyunODPSRolePolicy。

    策略內容如下,也可以自訂其他許可權。更多授權操作資訊,請參見建立自訂權限原則。

    OSS相關權限原則

    {
    "Version": "1",
    "Statement": [
    {
     "Action": [
            "oss:ListBuckets",
            "oss:GetObject",
            "oss:ListObjects",
            "oss:PutObject",
            "oss:DeleteObject",
            "oss:AbortMultipartUpload",
            "oss:ListParts",
            "oss:GetBucketInfo",
            "oss:PostDataLakeStorageFileOperation",
            "oss:PostDataLakeStorageAdminOperation"
     ],
     "Resource": "*",
     "Effect": "Allow"
    }
    ]
    }

    OTS相關權限原則

    {
    "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"
    }
    ]
    }
  4. 將建立的權限原則授權給建立的RAM角色。

    1. 登入RAM控制台。

    2. 在左側導覽列選擇身份管理 > 角色。

    3. 在角色頁面,單擊目標角色名称,進入該角色詳情頁。

    4. 在权限管理頁簽,單擊新增授权。在彈出的新增授权面板中,選擇要授予該角色的權限原則,單擊確認新增授權。

      更多操作資訊,請參見管理RAM角色的許可權。

Hologres的RAM普通角色授權

MaxCompute外部表格直接存取Hologres資料,需要表所有者將Hologres資料存取權限(RAMRole)整合到Hologres外部表格中,再根據需要為需要訪問此外部表格的使用者授予相應許可權。可以根據業務情況自行選擇授權方式。

同帳號授權

當MaxCompute和Hologres 的Owner是同一個帳號時,需按如下方式授權。

  1. 建立RAM角色

    建立RAM角色擷取ARN資訊,用於建立外部表格時填寫STS認證資訊。建立RAM角色的信任主體類型根據實際需求選擇,本樣本中信任主體類型為雲帳號。

    操作步驟如下:

    1. 登入RAM控制台。

    2. 在左側導覽列選擇身份管理 > 角色。

    3. 在角色頁面,單擊创建角色。

  2. 修改信任策略配置

    1. 在角色頁面,單擊目標角色名称,進入該角色詳情頁。

    2. 在信任策略頁簽,單擊編輯信任策略,在編輯信任策略頁面選擇腳本編輯頁簽。

    3. 參照如下內容修改信任策略配置

      修改信任策略配置內容與選擇的可信實體類型相關。其中<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.alibabacloud.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"
      }
  3. 添加RAM角色至Hologres執行個體並授權

    RAM角色需要有Hologres執行個體的開發許可權,才能在許可權範圍內使用Hologres。

    由於RAM角色預設沒有Hologres管理主控台的查看和操作執行個體的許可權,因此需要阿里雲帳號完成RAM相關許可權授予才能進行後續操作。

    添加RAM角色至Hologres執行個體步驟如下:

    通過Hologres管理主控台授權

    1. 登入Hologres管理主控台,在左上方選擇地區。

    2. 在左側導覽列選擇實例清單。

    3. 在實例清單頁面,單擊目標執行個體名稱。

    4. 在執行個體詳情頁面,在左側導覽列選擇帳號管理。

    5. 在用户管理頁面,單擊新增使用者。

    6. 在彈出的新增使用者頁面,配置相關資訊,單擊确认。

      • 角色選擇步驟一建立的RAM角色。

      • 成員角色選擇普通使用者。

    7. 在用户管理頁面,在左側導覽列選擇DB授權。

    8. 在DB授權頁面,單擊新增資料庫。

    9. 在彈出的新增資料庫頁面,配置相關資訊,單擊确认。

      权限策略選擇SPM。

    10. 在DB授權頁面,單擊目標資料庫對應的操作列的使用者授權。

    11. 單擊右上方新增授权。在彈出的新增授权對話方塊中,配置使用者和使用者組。

      • 用户選擇要配置的RAM使用者。

      • 用户组選擇Developer。

    通過RAM存取控制台授權

    將建立的權限原則AliyunODPSRolePolicy授權給建立的RAM角色。

    1. 登入RAM控制台。

    2. 在左側導覽列選擇身份管理 > 用户。

    3. 在用户頁面,單擊目標用户登录名称/显示名称,進入使用者詳情頁面。

    4. 在使用者詳情頁面,單擊权限管理頁簽。

    5. 在权限管理頁簽下,選擇个人权限,單擊新增授权。

    6. 在彈出的新增授权面板中,選擇要授予該使用者的權限原則,單擊確認新增授權。

      權限原則選擇AliyunRAMReadOnlyAccess。

      更多授權操作資訊,請參見授予RAM使用者權限。

    通過SQL方式授權

    授權SQL請參見許可權模型介紹。

    說明

    Hologres還支援服務關聯角色授權方式,詳情請參見Hologres的服務關聯角色(身份透傳)授權。

跨帳號授權

當MaxCompute和Hologres 的Owner不是同一個帳號時,可參考如下方式授權。

  1. 建立RAM角色

    建立RAM角色擷取ARN資訊,用於建立外部表格時填寫STS認證資訊。建立RAM角色的信任主體類型根據實際需求選擇,本樣本中信任主體類型為雲帳號。

    操作步驟如下:

    1. 登入RAM控制台。

    2. 在左側導覽列選擇身份管理 > 角色。

    3. 在角色頁面,單擊创建角色。

  2. 修改信任策略配置。

    1. 在角色頁面,單擊目標角色名称,進入該角色詳情頁。

    2. 在信任策略頁簽,單擊編輯信任策略,在編輯信任策略頁面選擇腳本編輯頁簽。

    3. 參照如下內容修改信任策略配置

      修改信任策略配置內容與選擇的可信實體類型相關。其中<UID>即阿里雲帳號ID,可在使用者資訊頁面擷取。

      可信實體類型為阿里雲帳號

      {
       "Statement": [
       {
       "Action": "sts:AssumeRole",
       "Effect": "Allow",
       "Principal": {
       "RAM": [
       "acs:ram::<MaxCompute的Owner雲帳號>:root"
       ]
       }
       },
       {
       "Action": "sts:AssumeRole",
       "Effect": "Allow",
       "Principal": {
       "Service": [
       "<MaxCompute的Owner雲帳號>@odps.aliyuncs.com"
       ]
       }
       }
       ],
       "Version": "1"
      }

      可信實體類型為身份供應商

      {
       "Statement": [
       {
       "Action": "sts:AssumeRole",
       "Condition": {
       "StringEquals": {
       "saml:recipient": "https://signin.alibabacloud.com/saml-role/sso"
       }
       },
       "Effect": "Allow",
       "Principal": {
       "Federated": [
       "acs:ram::<MaxCompute的Owner雲帳號>:saml-provider/IDP"
       ]
       }
       },
       {
       "Action": "sts:AssumeRole",
       "Effect": "Allow",
       "Principal": {
       "Service": [
       "<MaxCompute的Owner雲帳號>@odps.aliyuncs.com"
       ]
       }
       }
       ],
       "Version": "1"
      }
  3. 添加RAM角色至Hologres執行個體並授權

    RAM角色需要有Hologres執行個體的開發許可權,才能在許可權範圍內使用Hologres。

    由於RAM角色預設沒有Hologres管理主控台的查看和操作執行個體的許可權,因此需要阿里雲帳號完成RAM相關許可權授予才能進行後續操作。

    添加RAM角色至Hologres執行個體步驟如下:

    通過Hologres管理主控台授權

    1. 登入Hologres管理主控台,在左上方選擇地區。

    2. 在左側導覽列選擇實例清單。

    3. 在實例清單頁面,單擊目標執行個體名稱。

    4. 在執行個體詳情頁面,在左側導覽列選擇帳號管理。

    5. 在用户管理頁面,單擊新增使用者。

    6. 在彈出的新增使用者頁面,配置相關資訊,單擊确认。

      • 角色選擇步驟一建立的RAM角色。

      • 成員角色選擇普通使用者。

    7. 在用户管理頁面,在左側導覽列選擇DB授權。

    8. 在DB授權頁面,單擊新增資料庫。

    9. 在彈出的新增資料庫頁面,配置相關資訊,單擊确认。

      权限策略選擇SPM。

    10. 在DB授權頁面,單擊目標資料庫對應的操作列的使用者授權。

    11. 單擊右上方新增授权。在彈出的新增授权對話方塊中,配置使用者和使用者組。

      • 用户選擇要配置的RAM使用者。

      • 用户组選擇Developer。

    通過RAM存取控制台授權

    將建立的權限原則AliyunODPSRolePolicy授權給建立的RAM角色。

    1. 登入RAM控制台。

    2. 在左側導覽列選擇身份管理 > 用户。

    3. 在用户頁面,單擊目標用户登录名称/显示名称,進入使用者詳情頁面。

    4. 在使用者詳情頁面,單擊权限管理頁簽。

    5. 在权限管理頁簽下,選擇个人权限,單擊新增授权。

    6. 在彈出的新增授权面板中,選擇要授予該使用者的權限原則,單擊確認新增授權。

      權限原則選擇AliyunRAMReadOnlyAccess。

      更多授權操作資訊,請參見授予RAM使用者權限。

    通過SQL方式授權

    授權SQL請參見許可權模型介紹。

    說明

    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。

    1. 登入RAM存取控制台建立可信實體為阿里雲帳號的RAM角色。

    2. 通過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"
      }
    3. 通過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"
      }
      ]
      }
    4. 將自訂的權限原則,授權給建立的RAM角色。操作詳情,請參見管理RAM角色的許可權。

Hologres的服務關聯角色(身份透傳)授權

MaxCompute通過外部資料源和外部項目訪問Hologres資料時,需要通過服務關聯角色打通Hologres的資料存取權限。建立服務關聯角色的方法如下。建立成功後,為防止越權訪問,此模式會在訪問時透傳使用者身份到Hologres鑒權,使用者需要加入MaxCompute外部項目並具備外部項目所映射的Hologres資料來源的許可權。

  1. 登入RAM控制台。

  2. 在左側導覽列選擇身份管理 > 角色。

  3. 在角色頁面,單擊创建角色。

  4. 在创建角色頁面的右上方,單擊創建服務關聯角色。

  5. 在創建服務關聯角色頁面,選擇信任的雲服務aliyunserviceroleformaxcomputeidentitymgmt,單擊創建服務關聯角色。

    若提示角色已經存在,說明已經授權過,忽略即可。

Paimon_DLF的服務關聯角色(身份透傳)授權

MaxCompute通過外部資料源和外部項目訪問DLF的資料,MaxCompute需要通過服務關聯角色打通DLF的資料相關許可權,建立服務關聯角色需要使用者佈建,方法如下。建立成功後,使用時為了不越權訪問,此模式會在訪問時透傳使用者身份到DLF鑒權,需要使用者加入MaxCompute外部項目並具備外部項目映射的DLF資料來源的許可權。

MaxCompute通過外部資料源和外部項目訪問DLF資料時,需要通過服務關聯角色打通DLF的資料存取權限。建立服務關聯角色的方法如下。建立成功後,為防止越權訪問,此模式會在訪問時透傳使用者身份到DLF鑒權,使用者需要加入MaxCompute外部項目並具備外部項目所映射的DLF資料來源的許可權。

  1. 登入RAM控制台。

  2. 在左側導覽列選擇身份管理 > 角色。

  3. 在角色頁面,單擊创建角色。

  4. 在创建角色頁面的右上方,單擊創建服務關聯角色。

  5. 在創建服務關聯角色頁面,選擇信任的雲服務AliyunServiceRoleForMaxComputeLakehouse,單擊創建服務關聯角色。

    若提示角色已經存在,說明已經授權過,忽略即可。