Política de execução do IAM - Amazon EMR

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Política de execução do IAM

Você pode especificar uma política de execução do IAM, além de uma função de execução, ao enviar execuções de trabalhos no EMR Serverless. As permissões resultantes assumidas pela execução do trabalho são a interseção das permissões na função de execução e na política de execução IAM especificada.

Conceitos básicos

Etapas para usar a política do Execution IAM:

Crie um emr-serverless aplicativo ou use um existente e, em seguida, execute o seguinte aws cli para iniciar a execução de um trabalho com uma política de IAM embutida:

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"}'

Exemplos de comandos CLI

Se tivermos a seguinte política armazenada no policy.json arquivo na máquina:

{ "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/*" ] } ] }

Em seguida, podemos iniciar um trabalho com essa política usando o seguinte AWS CLI comando:

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:]')"'" }'

Você também pode usar ambas as políticas AWS e as gerenciadas pelo cliente, especificando-as ARNs por meio de:

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" ] }'

Também é possível especificar uma política de IAM em linha e uma política gerenciada ARNs na mesma solicitação:

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" ] }'

Observações importantes

  • O execution-role-policy policy campo s pode ter um comprimento máximo de 2048 caracteres.

  • A string de política do IAM embutida especificada no policy campo execution-iam-policy s deve estar em conformidade com o padrão de string json, sem que novas linhas e aspas escapem, como no exemplo acima.

  • Uma lista de até 10 políticas gerenciadas ARNs pode ser especificada como um valor para execution-iam-policy o policyArns campo s.

  • A política gerenciada ARNs deve ser uma lista de ARN válidos AWS ou gerenciados pelo cliente. Quando um ARN de política gerenciada pelo cliente é especificado, a política deve pertencer à mesma AWS conta do EMR-S. JobRun

  • Quando a política de IAM embutida e as políticas gerenciadas são usadas, o texto simples que você usa para as políticas embutidas e gerenciadas combinadas não pode exceder 2.048 caracteres.

  • As permissões resultantes assumidas pelo JobRun são a interseção das permissões na função de execução e na política de execução IAM especificada.

Interseção de políticas

As permissões resultantes assumidas pela execução do trabalho são a interseção das permissões na função de execução e na política de execução IAM especificada. O que significa que qualquer permissão necessária deverá ser especificada em ambos os lugares JobRun para funcionar. No entanto, é possível especificar uma declaração de permissão geral adicional na política embutida para quaisquer permissões que você não pretenda atualizar ou substituir.

Exemplo

Dada a seguinte política de função do IAM de execução:

{ "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" ] } ] }

E a seguinte política de IAM em linha:

{ "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":[ "*" ] } ] }

As permissões resultantes assumidas pelo JobRun são::

{ "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" ] } ] }