Menggunakan peran eksekusi tugas dengan Amazon EMR di EKS - Amazon EMR

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

Menggunakan peran eksekusi tugas dengan Amazon EMR di EKS

Untuk menggunakan perintah StartJobRun untuk mengirimkan tugas berjalan di klaster EKS, Anda harus terlebih dahulu mengorientasi peran eksekusi tugas yang akan digunakan dengan klaster virtual. Untuk informasi selengkapnya, lihat Untuk membuat peran eksekusi tugas di Menyiapkan Amazon EMR di EKS. Anda juga dapat mengikuti petunjuk di bagian Buat Peran IAM untuk pelaksanaan pekerjaan di Amazon EMR di EKS Workshop.

Izin berikut harus disertakan dalam kebijakan kepercayaan untuk peran eksekusi tugas.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Federated": "arn:aws:iam::AWS_ACCOUNT_ID:oidc-provider/OIDC_PROVIDER" }, "Action": "sts:AssumeRoleWithWebIdentity", "Condition": { "StringLike": { "OIDC_PROVIDER:sub": "system:serviceaccount:NAMESPACE:emr-containers-sa-*-*-AWS_ACCOUNT_ID-BASE36_ENCODED_ROLE_NAME" } } } ] }

Kebijakan kepercayaan pada contoh sebelumnya hanya memberikan izin ke akun layanan Kubernetes yang dikelola EMR Amazon EMR dengan nama yang cocok dengan polanya. emr-containers-sa-*-*-AWS_ACCOUNT_ID-BASE36_ENCODED_ROLE_NAME Akun layanan dengan pola ini akan dibuat secara otomatis pada pengiriman pekerjaan, dan dicakup ke namespace tempat Anda mengirimkan pekerjaan. Kebijakan kepercayaan ini memungkinkan akun layanan ini untuk mengasumsikan peran eksekusi dan mendapatkan kredensial sementara peran eksekusi. Akun layanan dari kluster Amazon EKS yang berbeda atau dari namespace yang berbeda dalam kluster EKS yang sama dibatasi untuk mengasumsikan peran eksekusi.

Anda dapat menjalankan perintah berikut untuk memperbarui kebijakan kepercayaan secara otomatis dalam format yang diberikan di atas.

aws emr-containers update-role-trust-policy \ --cluster-name cluster \ --namespace namespace \ --role-name iam_role_name_for_job_execution

Mengontrol akses ke peran eksekusi

Administrator untuk klaster Amazon EKS Anda dapat membuat EMR Amazon multi-tenant di kluster virtual EKS tempat administrator IAM dapat menambahkan beberapa peran eksekusi. Karena penyewa yang tidak tepercaya dapat menggunakan peran eksekusi ini untuk mengirimkan pekerjaan yang menjalankan kode arbitrer, Anda mungkin ingin membatasi penyewa tersebut sehingga mereka tidak dapat menjalankan kode yang mendapatkan izin yang ditetapkan ke satu atau beberapa peran eksekusi ini. Untuk membatasi kebijakan IAM yang dilampirkan pada identitas IAM, administrator IAM dapat menggunakan kunci kondisi Amazon Resource Name (ARN) opsional. emr-containers:ExecutionRoleArn Kondisi ini menerima daftar ARN peran eksekusi yang memiliki izin ke klaster virtual, seperti yang ditunjukkan oleh kebijakan izin berikut.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "emr-containers:StartJobRun", "Resource": "arn:aws:emr-containers:REGION:AWS_ACCOUNT_ID:/virtualclusters/VIRTUAL_CLUSTER_ID", "Condition": { "ArnEquals": { "emr-containers:ExecutionRoleArn": [ "execution_role_arn_1", "execution_role_arn_2", ... ] } } } ] }

Jika Anda ingin mengizinkan semua peran eksekusi yang dimulai dengan awalan tertentu, sepertiMyRole, Anda dapat mengganti operator kondisi ArnEquals dengan ArnLike operator, dan Anda dapat mengganti execution_role_arn nilai dalam kondisi dengan karakter wildcard*. Sebagai contoh, arn:aws:iam::AWS_ACCOUNT_ID:role/MyRole*. Semua kunci kondisi ARN lainnya juga didukung.

catatan

Dengan Amazon EMR di EKS, Anda tidak dapat memberikan izin untuk peran eksekusi berdasarkan tag atau atribut. EMR Amazon di EKS tidak mendukung kontrol akses berbasis tag (TBAC) atau kontrol akses berbasis atribut (ABAC) untuk peran eksekusi.