기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
IAM 클러스터 및 EMR 노트북에 대한 태그 기반 액세스 정책
자격 증명 기반 정책의 조건을 사용하여 태그를 기반으로 클러스터 및 EMR 노트북에 대한 액세스를 제어할 수 있습니다.
클러스터에 태그를 추가하는 방법에 대한 자세한 내용은 EMR 클러스터 태그 지정을 참조하세요.
다음 예제에서는 Amazon 조건 키와 함께 EMR 조건 연산자를 사용하는 다양한 시나리오와 방법을 보여줍니다. 이러한 IAM 정책 설명은 데모용일 뿐이며 프로덕션 환경에서 사용해서는 안 됩니다. 다양한 방법으로 정책 명령문을 결합하여 요구 사항에 따라 권한을 부여하거나 거부할 수 있습니다. 계획 및 테스트 IAM 정책에 대한 자세한 내용은 IAM 사용 설명서를 참조하세요.
중요
태깅 작업에 대한 권한을 명시적으로 거부하는 것은 중요한 고려 사항입니다. 이렇게 하면 사용자가 리소스에 태그를 지정하지 못하므로, 부여할 의도가 없는 권한이 부여되지 않도록 방지할 수 있습니다. 리소스에 대한 태그 지정 작업을 거부하지 않는 경우 사용자는 태그를 수정하여 태그 기반 정책의 의도를 우회할 수 있습니다.
클러스터에 대한 자격 증명 기반 정책 명령문 예제
다음 예제에서는 EMR 클러스터에 허용되는 작업을 제어하는 데 사용되는 자격 증명 기반 권한 정책을 보여줍니다.
중요
Amazon의 ModifyInstanceGroup
작업에서는 클러스터 ID를 지정할 필요가 EMR 없습니다. 따라서 클러스터 태그를 기반으로 이 작업을 거부하려면 추가 고려 사항이 필요합니다. 자세한 내용은 Amazon에서 ModifyInstanceGroup 작업 거부 EMR 단원을 참조하십시오.
특정 태그 값이 있는 클러스터에서만 작업 허용
다음 예제에서는 사용자가
값이 있는 클러스터 태그 dev
를 기반으로 작업을 수행할 수 있도록 허용하고 사용자가 동일한 해당 태그를 사용하여 클러스터에 태그를 지정할 수 있도록 허용하는 정책을 보여줍니다. 최종 정책 예제에서는 클러스터에 동일한 태그를 제외한 모든 태그를 지정할 수 EMR 있는 권한을 거부하는 방법을 보여줍니다.department
다음 정책 예제에서 StringEquals
조건 연산자는
를 dev
태그의 값과 일치시키려고 시도합니다. department
태그가 클러스터에 추가되지 않았거나 이 태그에 department
값이 포함되지 않은 경우 정책이 적용되지 않으며 이 정책에 따라 작업이 허용되지 않습니다. 작업을 허용하는 다른 정책 명령문이 없는 경우 사용자는 이 값과 함께 이 태그가 있는 클러스터만 작업할 수 있습니다.dev
{ "Version": "2012-10-17", "Statement": [ { "Sid": "Stmt12345678901234", "Effect": "Allow", "Action": [ "elasticmapreduce:DescribeCluster", "elasticmapreduce:ListSteps", "elasticmapreduce:TerminateJobFlows", "elasticmapreduce:SetTerminationProtection", "elasticmapreduce:ListInstances", "elasticmapreduce:ListInstanceGroups", "elasticmapreduce:ListBootstrapActions", "elasticmapreduce:DescribeStep" ], "Resource": [ "*" ], "Condition": { "StringEquals": { "elasticmapreduce:ResourceTag/department": "dev" } } } ] }
또한 조건 연산자를 사용하여 여러 태그 값을 지정할 수 있습니다. 예를 들어,
태그에 department
또는 dev
값이 포함된 클러스터에서 모든 작업을 허용하려면 이전 예제의 조건 블록을 다음으로 대체할 수 있습니다.test
"Condition": { "StringEquals": { "elasticmapreduce:ResourceTag/department":["dev", "test"] } }
클러스터 생성 시 클러스터 태그 지정 필요
이전 예제와 마찬가지로, 다음 정책 예제에서는 일치하는 동일한 태그, 즉
태그의 dev
값을 찾습니다. 하지만 이 예제에서 department
RequestTag
조건 키는 태그 생성 중에 정책이 적용되도록 지정합니다. 따라서 지정된 값과 일치하는 태그를 사용하여 클러스터를 생성해야 합니다.
태그가 있는 클러스터를 생성하려면 elasticmapredue:AddTags
작업에 대한 권한도 있어야 합니다. 이 명령문의 경우 elasticmapreduce:ResourceTag
조건 키는 IAM가 태그에 값이 있는
태그 리소스department
에만 액세스 권한을 부여하도록 합니다. dev
Resource
요소는 이 권한을 클러스터 리소스로 제한하는 데 사용됩니다.
PassRole
리소스의 경우 AWS 계정 ID 또는 별칭, PassRoleForEMR
문에 서비스 역할 이름, PassRoleForEC2
문에 인스턴스 프로필 이름을 제공해야 합니다. IAM ARN 형식에 대한 자세한 내용은 IAM 사용 설명서IAMARNs의 섹션을 참조하세요.
태그 키 값 일치에 대한 자세한 내용은 IAM 사용 설명서aws:RequestTag/tag-key
의 섹션을 참조하세요.
{ "Version": "2012-10-17", "Statement": [ { "Sid": "RunJobFlowExplicitlyWithTag", "Effect": "Allow", "Action": [ "elasticmapreduce:RunJobFlow" ], "Resource": "*", "Condition": { "StringEquals": { "aws:RequestTag/department": "dev" } } }, { "Sid": "AddTagsForDevClusters", "Effect": "Allow", "Action": "elasticmapreduce:AddTags", "Resource": "arn:aws:elasticmapreduce:*:*:cluster/*", "Condition": { "StringEquals": { "elasticmapreduce:ResourceTag/department": "dev" } } }, { "Sid": "PassRoleForEMR", "Effect": "Allow", "Action": "iam:PassRole", "Resource": "arn:aws:iam::
AccountId
:role/Role-Name-With-Path
", "Condition": { "StringLike": { "iam:PassedToService": "elasticmapreduce.amazonaws.com*" } } }, { "Sid": "PassRoleForEC2", "Effect": "Allow", "Action": "iam:PassRole", "Resource": "arn:aws:iam::AccountId
:role/Role-Name-With-Path
", "Condition": { "StringLike": { "iam:PassedToService": "ec2.amazonaws.com*" } } } ] }
태그 값과 상관없이 특정 태그가 있는 클러스터에서 작업 허용
태그 값과 상관없이 특정 태그가 있는 클러스터에서만 작업을 허용할 수도 있습니다. 이렇게 하려면 Null
연산자를 사용할 수 있습니다. 자세한 내용은 IAM 사용 설명서의 조건 연산자를 참조하여 조건 키의 존재 여부를 확인하세요. 예를 들어
태그가 포함된 EMR 클러스터에서만 작업을 허용하려면 이전 예제의 조건 블록을 다음 블록으로 바꿀 수 있습니다. department
Null
연산자는
EMR 클러스터에 태그가 있는지 확인합니다. 태그가 존재하면 이 정책 설명에 지정된 조건에 따라 department
Null
문은 false로 평가되고 적절한 작업이 허용됩니다.
"Condition": { "Null": { "elasticmapreduce:ResourceTag/department":"false" } }
다음 정책 문은 EMR 클러스터에 값을 포함할 수 있는
태그가 있는 경우에만 사용자가 클러스터를 생성할 수 있도록 허용합니다. department
PassRole
리소스의 경우 AWS 계정 ID 또는 별칭과 서비스 역할 이름을 제공해야 합니다. IAM ARN 형식에 대한 자세한 내용은 IAM 사용 설명서IAMARNs의 섹션을 참조하세요.
null('false') 조건 연산자를 지정하는 자세한 내용은 IAM 사용 설명서의 조건 연산자를 참조하여 조건 키의 존재 여부를 확인합니다.
{ "Version": "2012-10-17", "Statement": [ { "Sid": "CreateClusterTagNullCondition", "Effect": "Allow", "Action": [ "elasticmapreduce:RunJobFlow" ], "Resource": [ "*" ], "Condition": { "Null": { "aws:RequestTag/department": "false" } } }, { "Sid": "AddTagsNullCondition", "Effect": "Allow", "Action": "elasticmapreduce:AddTags", "Resource": "arn:aws:elasticmapreduce:*:*:cluster/*", "Condition": { "Null": { "elasticmapreduce:ResourceTag/department": "false" } } }, { "Sid": "PassRoleForElasticMapReduce", "Effect": "Allow", "Action": "iam:PassRole", "Resource": "arn:aws:iam::
AccountId
:role/Role-Name-With-Path
", "Condition": { "StringLike": { "iam:PassedToService": "elasticmapreduce.amazonaws.com*" } } }, { "Sid": "PassRoleForEC2", "Effect": "Allow", "Action": "iam:PassRole", "Resource": "arn:aws:iam::AccountId
:role/Role-Name-With-Path
", "Condition": { "StringLike": { "iam:PassedToService": "ec2.amazonaws.com*" } } } ] }
EMR 노트북에 대한 자격 증명 기반 정책 설명 예제
이 섹션의 IAM 정책 설명 예제는 키를 사용하여 EMR 노트북을 사용하여 허용되는 작업을 제한하는 일반적인 시나리오를 보여줍니다. 보안 주체(사용자)에 연결된 다른 정책이 작업을 허용하는 한 조건 컨텍스트 키는 지정된 대로 허용된 작업을 제한합니다.
예 - 태그 지정을 기반으로 사용자가 생성한 EMR 노트북에만 액세스 허용
다음의 정책 명령문 예제는 역할이나 사용자에게 연결된 경우 사용자가 생성한 노트북에서만 작업하도록 허용합니다. 이 정책 설명에서는 노트북이 생성될 때 적용된 기본 태그를 사용합니다.
예제에서 StringEquals
조건 연산자가 현재 사용자의 사용자 ID({aws:userId}
)를 나타내는 변수를 creatorUserID
태그의 값과 일치시키려고 시도합니다. creatorUserID
태그가 노트북에 추가되지 않았거나 현재 사용자의 ID 값을 포함하지 않은 경우 정책이 적용되지 않으며 이 정책에서 작업을 허용하지 않습니다. 작업을 허용하는 다른 정책 설명이 없는 경우 사용자는 이 값과 함께 이 태그가 있는 노트북만 사용하여 작업할 수 있습니다.
{ "Version": "2012-10-17", "Statement": [ { "Action": [ "elasticmapreduce:DescribeEditor", "elasticmapreduce:StartEditor", "elasticmapreduce:StopEditor", "elasticmapreduce:DeleteEditor", "elasticmapreduce:OpenEditorInConsole" ], "Effect": "Allow", "Resource": "*", "Condition": { "StringEquals": { "elasticmapreduce:ResourceTag/creatorUserId": "${aws:userId}" } } } ] }
예 - 노트북이 생성될 때 노트북 태그 지정 요구
이 예제에서는 RequestTag
컨텍스트 키가 사용됩니다. 사용자가 기본적으로 추가되는 creatorUserID
태그를 변경하거나 삭제하지 않은 경우에만 CreateEditor
작업이 허용됩니다. ${aws:userId} 변수는 현재 활성 사용자의 사용자 ID를 지정합니다.이 사용자 ID는 태그의 기본값입니다.
사용자가 createUserId
태그를 제거하거나 그 값을 변경하지 않도록 정책 설명을 사용할 수 있습니다.
{ "Version": "2012-10-17", "Statement": [ { "Action": [ "elasticmapreduce:CreateEditor" ], "Effect": "Allow", "Resource": "*", "Condition": { "StringEquals": { "elasticmapreduce:RequestTag/creatorUserId": "${aws:userid}" } } } ] }
이 예제에서는 사용자가 키 문자열 dept
및 datascience
, analytics
, operations
중 하나로 설정된 값을 가진 태그를 사용하여 클러스터를 생성하도록 요구합니다.
{ "Version": "2012-10-17", "Statement": [ { "Action": [ "elasticmapreduce:CreateEditor" ], "Effect": "Allow", "Resource": "*", "Condition": { "StringEquals": { "elasticmapreduce:RequestTag/dept": [ "datascience", "analytics", "operations" ] } } } ] }
예 - 태그가 지정된 클러스터로 노트북 생성을 제한하고 노트북 태그 요구
이 예제에서는 키 문자열 owner
가 지정된 값 중 하나로 설정된 태그를 사용하여 노트북이 생성될 경우에만 노트북 생성을 허용합니다. 또한 키 문자열 department
가 지정된 값 중 하나로 설정된 태그가 클러스터에 있을 경우에만 노트북을 생성할 수 있습니다.
{ "Version": "2012-10-17", "Statement": [ { "Action": [ "elasticmapreduce:CreateEditor" ], "Effect": "Allow", "Resource": "*", "Condition": { "StringEquals": { "elasticmapreduce:RequestTag/owner": [ "owner1", "owner2", "owner3" ], "elasticmapreduce:ResourceTag/department": [ "dep1", "dep3" ] } } } ] }
예 - 태그를 기반으로 노트북을 시작할 수 있는 기능 제한
이 예제는 키 문자열 owner
가 지정된 값 중 하나로 설정된 태그가 있는 노트북만 시작할 수 있도록 제한합니다. editor
만 지정하는 데 Resource
요소가 사용되므로 조건이 클러스터에 적용되지 않으며 조건에 태그를 지정할 필요가 없습니다.
{ "Version": "2012-10-17", "Statement": [ { "Action": [ "elasticmapreduce:StartEditor" ], "Effect": "Allow", "Resource": "arn:aws:elasticmapreduce:*:123456789012:editor/*", "Condition": { "StringEquals": { "elasticmapreduce:ResourceTag/owner": [ "owner1", "owner2" ] } } } ] }
이 예제는 위의 예제와 비슷하지만 태그가 지정된 클러스터에만 제한이 적용되며 노트북에는 적용되지 않습니다.
{ "Version": "2012-10-17", "Statement": [ { "Action": [ "elasticmapreduce:StartEditor" ], "Effect": "Allow", "Resource": "arn:aws:elasticmapreduce:*:123456789012:cluster/*", "Condition": { "StringEquals": { "elasticmapreduce:ResourceTag/department": [ "dep1", "dep3" ] } } } ] }
이 예제는 다른 노트북 및 클러스터 태그 세트를 사용하며, 다음 경우에만 노트북을 시작하도록 허용합니다.
-
노트북에 키 문자열
owner
가 지정된 값으로 설정된 태그가 있습니다.및
-
클러스터에 키 문자열
department
가 지정된 값으로 설정된 태그가 있습니다.
{ "Version": "2012-10-17", "Statement": [ { "Action": [ "elasticmapreduce:StartEditor" ], "Effect": "Allow", "Resource": "arn:aws:elasticmapreduce:*:123456789012:editor/*", "Condition": { "StringEquals": { "elasticmapreduce:ResourceTag/owner": [ "user1", "user2" ] } } }, { "Action": [ "elasticmapreduce:StartEditor" ], "Effect": "Allow", "Resource": "arn:aws:elasticmapreduce:*:123456789012:cluster/*", "Condition": { "StringEquals": { "elasticmapreduce:ResourceTag/department": [ "datascience", "analytics" ] } } } ] }
예 - 태그를 기반으로 노트북 편집기를 열 수 있는 기능 제한
이 예제에서는 다음 경우에만 노트북 편집기가 열리도록 허용합니다.
-
노트북에 키 문자열
owner
가 지정된 값으로 설정된 태그가 있습니다.및
-
클러스터에 키 문자열
department
가 지정된 값으로 설정된 태그가 있습니다.
{ "Version": "2012-10-17", "Statement": [ { "Action": [ "elasticmapreduce:OpenEditorInConsole" ], "Effect": "Allow", "Resource": "arn:aws:elasticmapreduce:*:123456789012:editor/*", "Condition": { "StringEquals": { "elasticmapreduce:ResourceTag/owner": [ "user1", "user2" ] } } }, { "Action": [ "elasticmapreduce:OpenEditorInConsole" ], "Effect": "Allow", "Resource": "arn:aws:elasticmapreduce:*:123456789012:cluster/*", "Condition": { "StringEquals": { "elasticmapreduce:ResourceTag/department": [ "datascience", "analytics" ] } } } ] }