Pekerjaan di ruang kerja EMR Serverless Spark menggunakan execution role untuk melakukan autentikasi dan mengakses layanan Alibaba Cloud lainnya, seperti Object Storage Service (OSS) dan Data Lake Formation (DLF). Saat membuat ruang kerja, Anda dapat menggunakan execution role default atau role kustom.
Use cases
Selama eksekusi pekerjaan, execution role memanggil berbagai resource atau layanan serta mengasumsikan identitas tertentu untuk mengautentikasi dan mengaudit aksinya. Use case utamanya adalah sebagai berikut:
-
Akses file OSS
Selama eksekusi pekerjaan, execution role mengakses dan mengoperasikan file yang disimpan di Object Storage Service (OSS).
-
Baca dan tulis metadata DLF
Jika pengelolaan izin diaktifkan untuk Data Lake Formation (DLF), execution role mengasumsikan identitas berbeda berdasarkan jenis pekerjaan:
-
Pengembangan data: Mengasumsikan identitas Akun Alibaba Cloud atau RAM user (sub-account) yang mengirimkan pekerjaan.
-
Livy Gateway: Mengasumsikan identitas pembuat token.
-
-
Baca dan tulis data MaxCompute
Saat membaca dan menulis data MaxCompute, execution role mengasumsikan identitas Akun Alibaba Cloud atau RAM user (sub-account) yang mengirimkan pekerjaan untuk mengautentikasi dan mengaudit aksinya.
Usage notes
Execution role tidak dapat diubah setelah ruang kerja dibuat.
Default execution role
Saat membuat ruang kerja, jika Anda tidak mengubah pengaturan Execution Role, sistem secara otomatis menggunakan execution role default AliyunEMRSparkJobRunDefaultRole.
Execution role default memiliki properti berikut:
-
Nama role: AliyunEMRSparkJobRunDefaultRole.
-
Kebijakan terkait: Role ini mencakup kebijakan akses sistem AliyunEMRSparkJobRunDefaultRolePolicy, yang memberikan akses ke Object Storage Service (OSS), Data Lake Formation (DLF), dan MaxCompute.
-
Pemeliharaan: Alibaba Cloud membuat dan memelihara kebijakan ini, serta memperbaruinya secara otomatis untuk mencerminkan perubahan pada persyaratan layanan.
Jangan mengedit atau menghapus execution role default AliyunEMRSparkJobRunDefaultRole. Tindakan tersebut dapat menyebabkan kegagalan dalam pembuatan resource ruang kerja atau eksekusi pekerjaan.
Custom execution role
Untuk menyesuaikan izin execution role, pilih role kustom pada pengaturan Execution Role saat membuat ruang kerja. Langkah-langkah berikut menunjukkan cara mengonfigurasi role kustom untuk akses tanpa password ke resource lain, seperti OSS dan DLF, dalam satu Akun Alibaba Cloud yang sama.
Kebijakan akses berikut merupakan contoh cara mengonfigurasi izin untuk role kustom. Saat menggunakan custom execution role, perhatikan bahwa kebijakan aksesnya bersifat statis dan tidak diperbarui secara otomatis seiring perubahan persyaratan layanan Alibaba Cloud. Untuk memastikan pekerjaan berjalan dengan benar, kami menyarankan agar Anda secara berkala meninjau dan memperbarui kebijakan akses tersebut. Rujuk kebijakan akses (AliyunEMRSparkJobRunDefaultRolePolicy) dari execution role default AliyunEMRSparkJobRunDefaultRole untuk daftar terbaru izin yang diperlukan.
Procedure
-
Buat kebijakan akses.
-
Buka halaman pembuatan kebijakan.
-
Masuk ke Konsol RAM sebagai administrator RAM.
Di panel navigasi sebelah kiri, pilih .
Di halaman Policies, klik Create Policy.
-
-
Di halaman Create Policy, klik tab Json.
-
Masukkan konten kebijakan, lalu 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 Remarks, lalu klik OK.Kebijakan ini berisi elemen-elemen berikut:
-
Action: Menentukan operasi pada resource tertentu. Contoh ini memberikan izin untuk membaca data dan menjalankan kueri pada direktori di OSS dan DLF. -
Resource: Menentukan objek yang diizinkan. Contoh ini memberikan akses ke semua objek DLF dan seluruh konten di bucket OSS bernamaserverless-spark-test-resources. Anda harus menggantiserverless-spark-test-resourcesdengan nama bucket OSS Anda sendiri.
Untuk informasi lebih lanjut tentang elemen dasar kebijakan akses, lihat Basic elements of an access policy.
-
-
-
Buat role RAM.
-
Di panel navigasi sebelah kiri, pilih .
-
Di halaman Role, klik Create Role.
-
Buat role RAM.
-
Di panel Create Role, konfigurasikan parameter berikut dan klik OK.
Parameter
Description
Select Trusted Entity
Pilih Alibaba Cloud Service.
Trusted Service
spark.emr-serverless.aliyuncs.com
-
Masukkan Role Name, misalnya
test-serverless-spark-jobrun, lalu klik OK.
-
-
-
Berikan izin kepada role RAM.
-
Di halaman Role, klik Add Authorization di kolom Actions untuk role yang telah Anda buat.
-
Di panel Add Authorization, pilih Custom policy dan tambahkan kebijakan akses yang telah Anda buat pada langkah sebelumnya.
-
Klik OK.
-
Klik Close.
-
-
Buat ruang kerja dan akses resource eksternal.
-
Masuk ke Konsol E-MapReduce.
-
Di panel navigasi sebelah kiri, pilih EMR Serverless > Spark.
-
Klik Create Workspace dan konfigurasikan parameter berikut. Untuk informasi lebih lanjut tentang parameter lainnya, lihat Create a workspace.
-
Workspace Directory: Pilih path OSS yang memiliki izin baca dan tulis untuk role RAM yang telah Anda buat.
-
Execution Role: Pilih role RAM yang telah Anda buat, misalnya
test-serverless-spark-jobrun.
-
-
Setelah ruang kerja dibuat, jalankan pekerjaan batch seperti yang dijelaskan dalam Quick start for JAR development untuk memverifikasi izin tersebut.
-
Jika Anda mengunggah file ke bucket OSS yang telah diizinkan, pekerjaan akan berjalan sesuai harapan.
-
Jika Anda mengunggah file ke bucket OSS yang tidak diizinkan, pekerjaan akan gagal dengan error akses ditolak untuk path OSS tersebut.
-
-
Other policy examples
MaxCompute data access
Tambahkan kebijakan akses berikut ke execution role.
{
"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-encrypted OSS access
Tambahkan kebijakan akses berikut ke execution role.
{
"Version": "1",
"Statement": [
{
"Effect": "Allow",
"Action": [
"kms:List*",
"kms:DescribeKey",
"kms:GenerateDataKey",
"kms:Decrypt"
],
"Resource": "*"
}
]
}
Related documentation
-
Untuk mengakses resource OSS yang dimiliki oleh Akun Alibaba Cloud berbeda, lihat How do I access OSS resources across different Alibaba Cloud accounts?.
-
Untuk contoh umum penggunaan kebijakan RAM dalam mengelola izin pengguna, lihat Common examples of RAM policies.