EMR Serverless Spark工作空間中的任務在調用其他阿里雲服務(如OSS、DLF)時,將通過執行角色進行許可權驗證。在建立工作空間時,您既可以使用預設執行角色,也可以使用自訂的角色。
使用情境
在任務執行過程中,執行角色會根據具體情境調用不同的資源或服務,並以指定的身份進行鑒權和Action Trail。以下是主要使用情境:
調用OSS檔案
在任務執行時,執行角色負責訪問和操作儲存在阿里雲Object Storage Service服務(OSS)中的檔案。
讀寫DLF中繼資料
如果開啟了資料湖中繼資料服務(DLF)許可權控制,執行角色將根據不同的任務類型扮演不同的身份:
資料開發:扮演提交任務的阿里雲帳號或RAM使用者(子帳號)身份。
Livy Gateway:扮演Token建立者的身份。
讀寫MaxCompute資料
在讀寫MaxCompute資料時,執行角色將扮演提交任務的阿里雲帳號或RAM使用者(子帳號)身份進行鑒權及Action Trail。
注意事項
工作空間建立後,執行角色不可更改。
使用預設執行角色
在建立工作空間時,如果您未對执行角色配置項進行修改,系統將自動使用預設執行角色AliyunEMRSparkJobRunDefaultRole。
預設執行角色說明如下:
角色名稱:AliyunEMRSparkJobRunDefaultRole。
關聯策略:該角色包含系統權限原則AliyunEMRSparkJobRunDefaultRolePolicy,授予了OSS(Object Storage Service服務)、DLF(資料湖中繼資料服務)和MaxCompute服務的存取權限。
維護方式:該策略由阿里雲建立和維護,會根據服務需求變化自動更新。
請謹慎編輯和刪除預設執行角色AliyunEMRSparkJobRunDefaultRole,否則會造成工作空間資源建立失敗或者任務執行失敗。
使用自訂執行角色
如果您希望自主控制執行角色的許可權點,可以在建立工作空間時修改執行角色。通過以下步驟配置自訂執行角色,以實現免密訪問同一帳號下的其他資源(例如,OSS和DLF)。
以下權限原則僅用於為您展示如何為自訂角色配置許可權。當選擇使用自訂執行角色,請注意其權限原則是靜態,不會隨阿里雲服務的需求變化而自動更新。為了確保任務能夠正常運行,建議定期檢查並更新權限原則。具體可以參考預設執行角色AliyunEMRSparkJobRunDefaultRole的權限原則(AliyunEMRSparkJobRunDefaultRolePolicy),以瞭解當前所需的最新的許可權列表。
操作流程
建立權限原則。
進入建立自訂權限原則頁面。
使用Resource Access Management員登入RAM控制台。
在左側導覽列,選擇。
在權限原則頁面,單擊建立權限原則。

在建立權限原則頁面,單擊指令碼編輯頁簽。
輸入權限原則內容,然後單擊確定。
{ "Version": "1", "Statement": [ { "Action": [ "oss:ListBuckets", "oss:PutObject", "oss:ListObjectsV2", "oss:ListObjects", "oss:GetObject", "oss:CopyObject", "oss:DeleteObject", "oss:DeleteObjects", "oss:RestoreObject", "oss:CompleteMultipartUpload", "oss:ListMultipartUploads", "oss:AbortMultipartUpload", "oss:UploadPartCopy", "oss:UploadPart", "oss:GetBucketInfo", "oss:PostDataLakeStorageFileOperation", "oss:PostDataLakeStorageAdminOperation", "oss:GetBucketVersions", "oss:ListObjectVersions", "oss:DeleteObjectVersion" ], "Resource": [ "acs:oss:*:*:serverless-spark-test-resources/*", "acs:oss:*:*:serverless-spark-test-resources" ], "Effect": "Allow" }, { "Action": [ "dlf:AlterDatabase", "dlf:AlterTable", "dlf:ListCatalogs", "dlf:ListDatabases", "dlf:ListFunctions", "dlf:ListFunctionNames", "dlf:ListTables", "dlf:ListTableNames", "dlf:ListIcebergNamespaceDetails", "dlf:ListIcebergTableDetails", "dlf:ListIcebergSnapshots", "dlf:CreateDatabase", "dlf:Get*", "dlf:DeleteDatabase", "dlf:DropDatabase", "dlf:DropTable", "dlf:CreateTable", "dlf:CommitTable", "dlf:UpdateTable", "dlf:DeleteTable", "dlf:ListPartitions", "dlf:ListPartitionNames", "dlf:CreatePartition", "dlf:BatchCreatePartitions", "dlf:UpdateTableColumnStatistics", "dlf:DeleteTableColumnStatistics", "dlf:UpdatePartitionColumnStatistics", "dlf:DeletePartitionColumnStatistics", "dlf:UpdateDatabase", "dlf:BatchCreateTables", "dlf:BatchDeleteTables", "dlf:BatchUpdateTables", "dlf:BatchGetTables", "dlf:BatchUpdatePartitions", "dlf:BatchDeletePartitions", "dlf:BatchGetPartitions", "dlf:DeletePartition", "dlf:CreateFunction", "dlf:DeleteFunction", "dlf:UpdateFunction", "dlf:ListPartitionsByFilter", "dlf:DeltaGetPermissions", "dlf:UpdateCatalogSettings", "dlf:CreateLock", "dlf:UnLock", "dlf:AbortLock", "dlf:RefreshLock", "dlf:ListTableVersions", "dlf:CheckPermissions", "dlf:RenameTable", "dlf:RollbackTable" ], "Resource": "*", "Effect": "Allow" }, { "Action": [ "dlf-dss:CreateDatabase", "dlf-dss:CreateFunction", "dlf-dss:CreateTable", "dlf-dss:DropDatabase", "dlf-dss:DropFunction", "dlf-dss:DropTable", "dlf-dss:DescribeCatalog", "dlf-dss:DescribeDatabase", "dlf-dss:DescribeFunction", "dlf-dss:DescribeTable", "dlf-dss:AlterDatabase", "dlf-dss:AlterFunction", "dlf-dss:AlterTable", "dlf-dss:ListCatalogs", "dlf-dss:ListDatabases", "dlf-dss:ListTables", "dlf-dss:ListFunctions", "dlf-dss:CheckPermissions" ], "Resource": "*", "Effect": "Allow" }, { "Effect": "Allow", "Action": "dlf-auth:ActOnBehalfOfAnotherUser", "Resource": "*" } ] }輸入權限原則名稱(例如,test-serverless-spark)和備忘,然後單擊確定。
策略中涉及的元素如下所示:
Action:是指對具體資源的操作。本樣本是OSS和DLF的讀取及查詢目錄的許可權。Resource:是指被授權的具體對象。本樣本是訪問DLF所有對象及其中的內容,以及訪問OSS Bucket(serverless-spark-test-resources)下的所有內容,其中serverless-spark-test-resources需要根據實際情況替換為指定OSS Bucket的名稱。
更多權限原則的基本元素,請參見權限原則基本元素。
建立RAM角色。
在左側導覽列,選擇。
在角色頁面,單擊建立角色。
建立RAM角色。
在建立角色面板,配置以下資訊,單擊確定。
參數
描述
信任主體類型
選擇雲端服務。
信任主體名稱
spark.emr-serverless.aliyuncs.com
輸入角色名稱(例如,test-serverless-spark-jobrun),單擊確定。
為RAM角色授權。
在角色頁面,單擊剛建立的角色操作列的新增授權。
在新增授權面板,權限原則選擇自訂策略,添加前一步驟中建立的權限原則。
單擊確認新增授權。
單擊關閉。
建立工作空間並訪問外部資源。
其他權限原則參考
訪問MaxCompute資料
為執行角色添加以下權限原則。
{
"Version": "1",
"Statement": [
{
"Effect": "Allow",
"Action": "odps:ActOnBehalfOfAnotherUser",
"Resource": [
"acs:odps:*:*:users/default/aliyun/*",
"acs:odps:*:*:users/default/ramuser/*",
"acs:odps:*:*:users/default/ramrole/*"
]
}
]
}訪問開啟了KMS的OSS
為執行角色添加以下權限原則。
{
"Version": "1",
"Statement": [
{
"Effect": "Allow",
"Action": [
"kms:List*",
"kms:DescribeKey",
"kms:GenerateDataKey",
"kms:Decrypt"
],
"Resource": "*"
}
]
}相關文檔
如果需要訪問不同阿里雲賬戶下的OSS資源,詳情請參見如何跨帳號訪問阿里雲OSS?。
關於通過RAM Policy實現使用者權限的常見樣本,請參見RAM Policy常見樣本。