Ketika tugas dalam ruang kerja EMR Serverless Spark memanggil layanan Alibaba Cloud lainnya seperti Object Storage Service (OSS) dan Data Lake Formation (DLF), peran eksekusi digunakan untuk otentikasi izin. Saat membuat ruang kerja, Anda dapat menggunakan peran eksekusi default atau peran kustom.
Skenario
Selama eksekusi tugas, peran eksekusi mengasumsikan identitas tertentu untuk memanggil berbagai sumber daya atau layanan. Identitas ini digunakan untuk otentikasi dan Audit ActionTrail. Berikut adalah skenario yang didukung:
Mengakses File OSS
Selama eksekusi tugas, peran eksekusi mengakses dan mengelola file yang disimpan di Alibaba Cloud OSS.
Membaca dan menulis metadata DLF
Jika kontrol akses diaktifkan untuk DLF, peran eksekusi mengasumsikan identitas yang berbeda berdasarkan jenis tugas:
Pengembangan data: Peran eksekusi mengasumsikan identitas Akun Alibaba Cloud atau Pengguna RAM yang mengirimkan tugas.
Livy Gateway: Peran eksekusi mengasumsikan identitas pembuat token.
Membaca dan menulis data MaxCompute
Untuk membaca dan menulis data MaxCompute, peran eksekusi mengasumsikan identitas Akun Alibaba Cloud atau Pengguna RAM yang mengirimkan tugas. Identitas ini digunakan untuk otentikasi dan Audit ActionTrail.
Perhatian
Setelah ruang kerja dibuat, peran eksekusi tidak dapat diubah.
Menggunakan peran eksekusi default
Saat membuat ruang kerja, sistem menggunakan peran eksekusi default AliyunEMRSparkJobRunDefaultRole jika Anda tidak memodifikasi item konfigurasi Execution Role.
Peran eksekusi default memiliki properti berikut:
Nama peran: AliyunEMRSparkJobRunDefaultRole.
Kebijakan terkait: Peran ini disambungkan ke kebijakan sistem AliyunEMRSparkJobRunDefaultRolePolicy, yang memberikan izin akses ke OSS, DLF, dan MaxCompute.
Pemeliharaan: Kebijakan ini dibuat dan dipelihara oleh Alibaba Cloud serta diperbarui secara otomatis untuk memenuhi persyaratan layanan.
Jangan mengedit atau menghapus peran eksekusi default AliyunEMRSparkJobRunDefaultRole. Jika tidak, pembuatan ruang kerja atau eksekusi tugas mungkin gagal.
Menggunakan peran eksekusi kustom
Untuk mengontrol izin untuk peran eksekusi, Anda dapat memilih peran kustom untuk parameter Execution Role saat membuat ruang kerja. Ikuti langkah-langkah berikut untuk mengonfigurasi peran eksekusi kustom guna mengakses sumber daya lain tanpa kata sandi dalam akun yang sama.
Kebijakan akses berikut adalah contoh untuk mengonfigurasi peran kustom. Perhatikan bahwa kebijakan akses untuk peran eksekusi kustom bersifat statis dan tidak diperbarui secara otomatis oleh Alibaba Cloud. Untuk memastikan tugas Anda berjalan dengan benar, kami sarankan Anda secara berkala memeriksa dan memperbarui kebijakan akses. Anda dapat merujuk ke kebijakan akses AliyunEMRSparkJobRunDefaultRolePolicy dari peran eksekusi default AliyunEMRSparkJobRunDefaultRole untuk mendapatkan izin terbaru yang diperlukan.
Prosedur
Buat kebijakan akses.
Pergi ke halaman Buat Kebijakan Kustom.
Masuk ke Konsol RAM sebagai administrator RAM.
Di panel navigasi di sebelah kiri, pilih .
Di halaman Policies, klik Create Policy.

Di halaman Create Policy, klik tab Script.
Masukkan isi kebijakan dan klik OK.
{ "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": "*" } ] }Masukkan Name (misalnya, test-serverless-spark) dan Note untuk kebijakan akses, lalu klik OK.
Kebijakan mencakup elemen-elemen berikut:
Action: Operasi yang dapat dilakukan pada suatu sumber daya. Dalam contoh ini, izin untuk membaca data dari dan menanyakan direktori di OSS dan DLF diberikan.Resource: Objek tempat otorisasi dilakukan. Dalam contoh ini, izin diberikan untuk mengakses semua objek di DLF dan semua konten di Bucket OSS bernama serverless-spark-test-resources. Anda harus menggantiserverless-spark-test-resourcesdengan nama Bucket OSS Anda.
Untuk informasi lebih lanjut mengenai elemen dasar kebijakan akses, lihat Elemen Dasar Kebijakan Akses.
Buat peran RAM.
Di panel navigasi, pilih .
Di halaman Roles, klik Create Role.
Buat peran RAM.
Di panel Create Role, konfigurasikan parameter berikut dan klik OK.
Parameter
Deskripsi
Jenis Entitas Tepercaya
Pilih Alibaba Cloud Service.
Nama Entitas Tepercaya
spark.emr-serverless.aliyuncs.com
Masukkan Role Name (misalnya, test-serverless-spark-jobrun) dan klik OK.
Berikan izin kepada peran RAM.
Di halaman Roles, temukan peran yang Anda buat dan klik Add Permissions di kolom Actions.
Di panel Add Permissions, pilih Custom Policy dan tambahkan kebijakan akses yang Anda buat.
Klik OK.
Klik Close.
Buat ruang kerja serta akses sumber daya eksternal.
Masuk ke Konsol E-MapReduce.
Di panel navigasi, pilih .
Klik Create Workspace dan konfigurasikan parameter berikut. Untuk informasi lebih lanjut tentang parameter, lihat Buat ruang kerja.
Workspace Directory: Pilih jalur OSS yang mana peran RAM yang Anda buat memiliki izin baca dan tulis.
Execution Role: Pilih nama peran RAM yang Anda buat (misalnya, test-serverless-spark-jobrun).
Setelah ruang kerja dibuat, jalankan pekerjaan batch untuk memverifikasi izin. Untuk informasi lebih lanjut, lihat Panduan cepat untuk pengembangan JAR.
Jika Anda mengunggah file ke Bucket OSS yang telah diberi izin, tugas akan berjalan sesuai harapan.
Jika Anda mengunggah file ke Bucket OSS yang tidak diberi izin, tugas akan gagal dan pesan kesalahan menunjukkan bahwa Anda tidak memiliki izin untuk mengakses jalur OSS.
Contoh kebijakan lainnya
Akses data MaxCompute
Tambahkan kebijakan akses berikut ke peran eksekusi:
{
"Version": "1",
"Statement": [
{
"Effect": "Allow",
"Action": "odps:ActOnBehalfOfAnotherUser",
"Resource": [
"acs:odps:*:*:users/default/aliyun/*",
"acs:odps:*:*:users/default/ramuser/*",
"acs:odps:*:*:users/default/ramrole/*"
]
}
]
}Akses Bucket OSS yang memiliki KMS diaktifkan
Tambahkan kebijakan akses berikut ke peran eksekusi:
{
"Version": "1",
"Statement": [
{
"Effect": "Allow",
"Action": [
"kms:List*",
"kms:DescribeKey",
"kms:GenerateDataKey",
"kms:Decrypt"
],
"Resource": "*"
}
]
}Referensi
Untuk mengakses sumber daya OSS yang dimiliki oleh akun Alibaba Cloud yang berbeda, lihat Bagaimana cara saya mengakses sumber daya OSS lintas akun Alibaba Cloud?.
Untuk contoh umum kebijakan RAM, lihat Contoh umum kebijakan RAM.