정책 예제 - AWS Batch

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

정책 예제

다음 예제는 사용자가 갖는 AWS Batch 권한을 제어하는 데 사용할 수 있는 정책 명령문을 보여줍니다.

읽기 전용 액세스

다음 정책은 이름이 DescribeList로 시작하는 모든 AWS Batch API 작업을 사용할 권한을 사용자에게 부여합니다.

다른 명령문으로 해당 권한을 부여하지 않으면 사용자는 리소스에 대한 작업 수행 권한을 가지지 않습니다. 기본적으로 사용자의 API 작업 사용 권한은 거부됩니다.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "batch:Describe*", "batch:List*" ], "Resource": "*" } ] }

POSIX 사용자 요청, Docker 이미지, 권한 수준 및 작업 제출 역할

다음 정책은 POSIX 사용자가 고유의 작업 제한 정의 세트를 관리할 수 있도록 허용합니다.

첫 번째 및 두 번째 등록 설명문을 사용하여 이름에 JobDefA_라는 접두사가 있는 모든 작업 정의를 등록 취소합니다.

또한 첫 번째 설명문은 조건 컨텍스트 키를 사용하여 작업 정의의 containerProperties 내에 있는 POSIX 사용자, 권한 상태, 컨테이너 이미지 값을 제한합니다. 자세한 내용은 AWS Batch API 참조RegisterJobDefinition을 참조하십시오. 이 예시에서는 POSIX 사용자가 nobody로 설정된 경우에만 작업 정의를 등록할 수 있습니다. 권한이 있는 플래그는 false로 설정됩니다. 마지막으로, 이 이미지는 Amazon ECR 리포지토리에서 myImage로 설정되어 있습니다.

중요

도커는 user 파라미터를 컨테이너 이미지 내에 있는 해당 사용자 uid로 확인합니다. 대부분의 경우 이러한 사례는 컨테이너 이미지 내의 /etc/passwd 파일에서 찾을 수 있습니다. 이러한 이름 확인은 작업 정의 및 관련 IAM 정책에 직접 uid 값을 사용하면 생기지 않습니다. AWS Batch API 작업 및 batch:User IAM 조건 키는 숫자 값을 지원합니다.

세 번째 설명문을 사용하여 작업 정의에서 특정 역할만 하도록 제한합니다.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "batch:RegisterJobDefinition" ], "Resource": [ "arn:aws:batch:<aws_region>:<aws_account_id>:job-definition/JobDefA_*" ], "Condition": { "StringEquals": { "batch:User": [ "nobody" ], "batch:Image": [ "<aws_account_id>.dkr.ecr.<aws_region>.amazonaws.com/myImage" ] }, "Bool": { "batch:Privileged": "false" } } }, { "Effect": "Allow", "Action": [ "batch:DeregisterJobDefinition" ], "Resource": [ "arn:aws:batch:<aws_region>:<aws_account_id>:job-definition/JobDefA_*" ] }, { "Effect": "Allow", "Action": [ "iam:PassRole" ], "Resource": [ "arn:aws:iam::<aws_account_id>:role/MyBatchJobRole" ] } ] }

작업 제출에 대한 작업 정의 접두사 제한

다음 정책을 사용하여 JobDefA로 시작하는 작업 정의 이름이 있는 작업 만 모든 작업 대기열에 제출하도록 합니다.

중요

작업 제출을 위한 리소스 수준 액세스의 범위를 지정할 때 작업 대기열 및 작업 정의 리소스 유형을 모두 제공해야 합니다.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "batch:SubmitJob" ], "Resource": [ "arn:aws:batch:<aws_region>:<aws_account_id>:job-definition/JobDefA_*", "arn:aws:batch:<aws_region>:<aws_account_id>:job-queue/*" ] } ] }

작업 대기열에 대한 제한

다음 정책을 사용하여 queue1이라는 이름의 특정 작업 대기열에 모든 작업 정의 작업을 제출하게 합니다.

중요

작업 제출을 위한 리소스 수준 액세스의 범위를 지정할 때 작업 대기열 및 작업 정의 리소스 유형을 모두 제공해야 합니다.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "batch:SubmitJob" ], "Resource": [ "arn:aws:batch:<aws_region>:<aws_account_id>:job-definition/*", "arn:aws:batch:<aws_region>:<aws_account_id>:job-queue/queue1" ] } ] }

모든 조건 키가 문자열과 일치하는 경우 작업 거부

다음 정책은 batch:Image (컨테이너 이미지 ID) 조건 키가 "string1"이고 batch:LogDriver (컨테이너 로그 드라이버) 조건 키가 "string2"인 경우 RegisterJobDefinition API 작업에 대한 액세스를 거부합니다. AWS Batch 각 컨테이너의 조건 키를 평가합니다. 다중 노드 병렬 작업과 같이 작업이 여러 컨테이너에 걸쳐 있는 경우 컨테이너의 구성이 다를 수 있습니다. 한 명령문에서 여러 조건 키를 평가하는 경우 AND 로직을 사용하여 병합됩니다. 따라서 여러 조건 키 중 하나라도 컨테이너와 일치하지 않는 경우 해당 컨테이너에는 Deny 효과가 적용되지 않습니다. 오히려 같은 작업에 있는 다른 컨테이너가 거부될 수 있습니다.

AWS Batch에 대한 조건 키 목록을 보려면 서비스 권한 참조AWS Batch에 대한 조건 키를 참조하세요. batch:ShareIdentifier을 제외한 모든 batch 조건 키는 이 방법으로 사용될 수 있습니다. batch:ShareIdentifier 조건 키는 작업 정의가 아니라 작업에 대해 정의됩니다.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "batch:RegisterJobDefinition" ], "Resource": [ "*" ] }, { "Effect": "Deny", "Action": "batch:RegisterJobDefinition", "Resource": "*", "Condition": { "StringEquals": { "batch:Image": "string1", "batch:LogDriver": "string2" } } } ] }

문자열과 일치하는 조건 키가 있는 경우 작업 거부

다음 정책은 RegisterJobDefinition (컨테이너 이미지 ID) 조건 키가 "string1" 또는 batch:LogDriver (컨테이너 로그 드라이버) 조건 키가 "string2"인 경우 API 작업에 대한 액세스를 거부합니다. 다중 노드 병렬 작업과 같이 작업이 여러 컨테이너에 걸쳐 있는 경우 컨테이너의 구성이 다를 수 있습니다. 한 명령문에서 여러 조건 키를 평가하는 경우 AND 로직을 사용하여 병합됩니다. 따라서 여러 조건 키 중 하나라도 컨테이너와 일치하지 않는 경우 해당 컨테이너에는 Deny 효과가 적용되지 않습니다. 오히려 같은 작업에 있는 다른 컨테이너가 거부될 수 있습니다.

AWS Batch에 대한 조건 키 목록을 보려면 서비스 권한 참조AWS Batch에 대한 조건 키를 참조하세요. batch:ShareIdentifier을 제외한 모든 batch 조건 키를 이런 방식으로 사용할 수 있습니다. (batch:ShareIdentifier 조건 키는 작업 정의가 아니라 작업에 대해 정의됩니다.)

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "batch:RegisterJobDefinition" ], "Resource": [ "*" ] }, { "Effect": "Deny", "Action": [ "batch:RegisterJobDefinition" ], "Resource": [ "*" ], "Condition": { "StringEquals": { "batch:Image": [ "string1" ] } } }, { "Effect": "Deny", "Action": [ "batch:RegisterJobDefinition" ], "Resource": [ "*" ], "Condition": { "StringEquals": { "batch:LogDriver": [ "string2" ] } } } ] }

batch:ShareIdentifier 조건 키를 사용

다음 정책을 사용하여 jobDefA 작업 정의를 사용하는 작업을 lowCpu 공유 식별자와 함께 jobqueue1 작업 대기열에 제출하십시오.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "batch:SubmitJob" ], "Resource": [ "arn:aws::batch:<aws_region>:<aws_account_id>:job-definition/JobDefA", "arn:aws::batch:<aws_region>:<aws_account_id>:job-queue/jobqueue1" ], "Condition": { "StringEquals": { "batch:ShareIdentifier": [ "lowCpu" ] } } } ] }