실행 IAM 정책 - Amazon EMR

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

실행 IAM 정책

EMR Serverless에서 작업 실행을 제출할 때 실행 역할 외에도 실행 IAM 정책을 지정할 수 있습니다. 작업 실행에서 수임하는 결과 권한은 실행 역할과 지정된 실행 IAM 정책의 권한 교차입니다.

시작하기

실행 IAM 정책을 사용하는 단계:

emr-serverless 애플리케이션을 생성하거나 기존 애플리케이션을 사용한 다음 다음 aws cli를 실행하여 인라인 IAM 정책으로 작업 실행을 시작합니다.

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

CLI 명령 예제

머신의 policy.json 파일에 다음 정책이 저장되어 있는 경우:

JSON
{ "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/*" ], "Sid": "AllowS3Getobject" } ] }

그런 다음 다음 AWS CLI 명령을 사용하여이 정책으로 작업을 시작할 수 있습니다.

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": '$(jq -c '. | @json' policy.json)' }'

AWS 또한 및 고객 관리형 정책을 모두 사용하여 ARNs.

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

동일한 요청에서 인라인 IAM 정책과 관리형 정책 ARNs을 모두 지정할 수도 있습니다.

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": '$(jq -c '. | @json' policy.json)', "policyArns": [ "arn:aws:iam::aws:policy/AmazonS3FullAccess", "arn:aws:iam::aws:policy/CloudWatchLogsFullAccess" ] }'

중요 정보

  • execution-role-policypolicy 필드는 최대 길이가 2048자일 수 있습니다.

  • execution-iam-policypolicy 필드에 지정된 인라인 IAM 정책 문자열은 위 예제와 같이 이스케이프된 줄 바꿈 및 따옴표 없이 json 문자열 표준을 준수해야 합니다.

  • 최대 10개의 관리형 정책 ARNs 목록을의 policyArns 필드에 값으로 지정할 수 execution-iam-policy있습니다.

  • 관리ARNs은 유효한 AWS 또는 고객 관리형 정책 ARN 목록이어야 합니다. 고객 관리형 정책 ARN을 지정하면 정책은 EMR-S JobRun의 동일한 AWS 계정에 속해야 합니다.

  • 인라인 IAM 정책과 관리형 정책을 모두 사용하는 경우 인라인 정책과 관리형 정책을 합친 일반 텍스트는 2,048자를 초과할 수 없습니다.

  • JobRun에서 수임한 결과 권한은 실행 역할과 지정된 실행 IAM 정책의 권한 교차입니다.

정책 교차

작업 실행에서 수임하는 결과 권한은 실행 역할과 지정된 실행 IAM 정책의 권한 교차입니다. 즉, JobRun이 작동하려면 두 위치 모두에서 필요한 권한을 지정해야 합니다. 그러나 업데이트하거나 덮어쓰려는 의도가 없는 모든 권한에 대해 인라인 정책에 추가 블랭킷 허용 문을 지정할 수 있습니다.

예시

다음과 같은 실행 IAM 역할 정책이 주어짐:

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

그리고 다음 인라인 IAM 정책:

JSON
{ "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/*" ], "Sid": "AllowS3Getobject" }, { "Effect": "Allow", "Action": [ "logs:*", "dynamodb:*" ], "Resource": [ "*" ], "Sid": "AllowLOGS" } ] }

JobRun에서 수임하는 결과 권한은 다음과 같습니다.

JSON
{ "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/*" ], "Sid": "AllowS3Getobject" }, { "Effect": "Allow", "Action": [ "logs:DescribeLogGroups" ], "Resource": [ "arn:aws:logs:us-west-2:123456789012:log-group::log-stream" ], "Sid": "AllowLOGSDescribeloggroups" }, { "Effect": "Allow", "Action": [ "dynamodb:DescribeTable" ], "Resource": [ "arn:aws:dynamodb:*:*:table/MyCompany1table" ], "Sid": "AllowDYNAMODBDescribetable" } ] }