Eksekusi kebijakan IAM - Amazon EMR

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

Eksekusi kebijakan IAM

Anda dapat menentukan Kebijakan IAM Eksekusi, selain Peran Eksekusi, saat mengirimkan pekerjaan berjalan di EMR Tanpa Server. Izin yang dihasilkan yang diasumsikan oleh job run adalah persimpangan izin dalam Peran Eksekusi dan Kebijakan IAM Eksekusi yang ditentukan.

Memulai

Langkah-langkah untuk menggunakan kebijakan Eksekusi IAM::

Buat emr-serverless aplikasi atau gunakan yang sudah ada dan kemudian jalankan aws cli berikut untuk memulai pekerjaan dengan kebijakan IAM sebaris:

aws emr-serverless start-job-run --region us-west-2 \ --application-id application-id \ --execution-role-arn execution-role-arn \ --job-driver job-driver-options \ --execution-iam-policy '{"policy": "inline-policy"}'

Contoh perintah CLI

Jika kami memiliki kebijakan berikut yang disimpan dalam policy.json file di mesin:

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:GetObject", "s3:ListBucket" ], "Resource": [ "arn:aws:s3:::my-test-bucket", "arn:aws:s3:::my-test-bucket/*" ] } ] }

Kemudian kita dapat memulai pekerjaan dengan kebijakan ini menggunakan AWS CLI perintah berikut:

aws emr-serverless start-job-run --region us-west-2 \ --application-id application-id \ --execution-role-arn execution-role-arn \ --job-driver job-driver-options --execution-iam-policy '{ "policy": "'"$(sed 's/"/\"/g' policy.json | tr -d '[:space:]')"'" }'

Anda juga dapat menggunakan keduanya AWS dan kebijakan yang dikelola Pelanggan, menentukannya ARNs melalui:

aws emr-serverless start-job-run --region us-west-2 \ --application-id application-id \ --execution-role-arn execution-role-arn \ --job-driver job-driver-options --execution-iam-policy '{ "policyArns": [ "arn:aws:iam::aws:policy/AmazonS3FullAccess", "arn:aws:iam::aws:policy/CloudWatchLogsFullAccess" ] }'

Dimungkinkan untuk menentukan kebijakan IAM sebaris dan kebijakan terkelola ARNs dalam permintaan yang sama juga:

aws emr-serverless start-job-run --region us-west-2 \ --application-id application-id \ --execution-role-arn execution-role-arn \ --job-driver job-driver-options --execution-iam-policy '{ "policy": "'"$(sed 's/"/\"/g' policy.json | tr -d '[:space:]')"'", "policyArns": [ "arn:aws:iam::aws:policy/AmazonS3FullAccess", "arn:aws:iam::aws:policy/CloudWatchLogsFullAccess" ] }'

Catatan Penting

  • execution-role-policypolicyBidang ini dapat memiliki panjang maksimum 2048 karakter.

  • String kebijakan IAM sebaris yang ditentukan dalam policy bidang execution-iam-policy ini harus sesuai dengan standar string json, tanpa baris baru dan tanda kutip yang lolos seperti pada contoh di atas.

  • Daftar hingga 10 kebijakan terkelola ARNs dapat ditentukan sebagai nilai pada execution-iam-policy policyArns bidang.

  • Kebijakan terkelola ARNs harus berupa daftar ARN yang valid AWS atau yang dikelola Nasabah kebijakan ARN, ketika kebijakan yang dikelola Nasabah ARN ditentukan, kebijakan tersebut harus dimiliki oleh AWS akun EMR-S yang sama. JobRun

  • Jika kebijakan IAM sebaris dan kebijakan terkelola digunakan, teks biasa yang Anda gunakan untuk gabungan kebijakan sebaris dan terkelola tidak dapat melebihi 2.048 karakter.

  • Izin yang dihasilkan diasumsikan oleh JobRun adalah persimpangan izin dalam Peran Eksekusi dan Kebijakan IAM Eksekusi yang ditentukan.

Persimpangan Kebijakan

Izin yang dihasilkan yang diasumsikan oleh job run adalah persimpangan izin dalam Peran Eksekusi dan Kebijakan IAM Eksekusi yang ditentukan. Yang berarti setiap izin yang diperlukan harus ditentukan di kedua tempat JobRun agar dapat berfungsi. Namun, Anda dapat menentukan pernyataan izin selimut tambahan dalam kebijakan sebaris untuk izin apa pun yang tidak ingin Anda perbarui atau timpa.

Contoh

Mengingat kebijakan peran IAM eksekusi berikut:

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:*" ], "Resource": [ "*" ] }, { "Effect": "Allow", "Action":[ "logs:DescribeLogGroups" ], "Resource":[ "arn:aws:logs:us-west-2:12345678910:log-group::log-stream" ] }, { "Effect": "Allow", "Action": [ "dynamodb:DescribeTable" ], "Resource": [ "arn:aws:dynamodb:*:*:table/MyCompany1table" ] } ] }

Dan kebijakan IAM inline berikut:

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:GetObject", "s3:ListBucket" ], "Resource": [ "arn:aws:s3:::my-test-bucket/tenant1", "arn:aws:s3:::my-test-bucket/tenant1/*" ] }, { "Effect": "Allow", "Action":[ "logs:*", "dynamodb:*", ], "Resource":[ "*" ] } ] }

Izin yang dihasilkan diasumsikan oleh JobRun adalah::

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:GetObject", "s3:ListBucket" ], "Resource": [ "arn:aws:s3:::my-test-bucket/tenant1", "arn:aws:s3:::my-test-bucket/tenant1/*" ] }, { "Effect": "Allow", "Action":[ "logs:DescribeLogGroups" ], "Resource":[ "arn:aws:logs:us-west-2:12345678910:log-group::log-stream" ] }, { "Effect": "Allow", "Action": [ "dynamodb:DescribeTable" ], "Resource": [ "arn:aws:dynamodb:*:*:table/MyCompany1table" ] } ] }