아마존 SWF IAM 정책 - Amazon Simple Workflow Service

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

아마존 SWF IAM 정책

IAM정책에는 하나 이상의 Statement 요소가 포함되며 각 요소에는 정책을 정의하는 요소 집합이 포함되어 있습니다. 전체 요소 목록 및 정책 구성 방법에 대한 일반적인 설명은 액세스 정책 언어를 참조하십시오. Amazon SWF 액세스 제어는 다음 요소를 기반으로 합니다.

Effect

(필수)명령문 deny 또는 allow의 효과.

참고

액세스를 명시적으로 허용해야 합니다. 기본적으로 액세스를 IAM 거부합니다.

Resource

(필수) 명령문이 적용되는 리소스, 즉 사용자가 상호 작용할 수 있는 AWS 서비스의 엔티티입니다.

리소스 권한은 도메인에 대해서만 표현할 수 있습니다. 예를 들어, 정책이 계정 내 특정 도메인에 대한 액세스만 허용할 수 있습니다. 도메인에 대한 권한을 Resource 표현하려면 'arn:aws:swf' 형식을 가진 도메인의 Amazon 리소스 이름 (ARN) 으로 설정합니다.Region:AccountID:/도메인/DomainName". Region 지역입니다. AWS AccountID 는 대시가 없는 계정 ID입니다.DomainName 도메인 이름입니다.

작업

(필수) 설명서가 적용되는 작업으로, 다음 형식을 사용하여 이를 참조합니다.serviceId:action. 아마존의 SWF 경우 설정 serviceID swf으로 전송합니다. 예를 들어, 는 StartWorkflowExecution작업을 swf:StartWorkflowExecution 가리키며 워크플로를 시작할 수 있는 사용자를 제어하는 데 사용됩니다.

사용 RespondDecisionTaskCompleted권한을 부여하면 해당 의사에도 권한을 명시하는 Action 데 사용하여 포함된 결정 목록에 대한 액세스를 제어할 수 있습니다. API 는 기본적으로 액세스를 IAM 거부하므로 결정자의 결정은 명시적으로 허용되어야 합니다. 그렇지 않으면 승인되지 않습니다. * 값을 사용해 모든 결정을 허용할 수 있습니다.

Condition

(선택 사항) 하나 이상의 작업 파라미터에 대한 제약을 표현합니다. 이러한 제약은 허용된 값을 제한합니다.

Amazon SWF 작업의 범위는 넓은 경우가 많으며 IAM 조건을 사용하여 범위를 줄일 수 있습니다. 예를 들어 작업이 액세스할 수 있는 작업 목록을 제한하려면 Condition a를 포함하고 swf:taskList.name 키를 사용하여 허용 목록을 지정합니다. PollForActivityTask

다음 엔터티에 대한 제약을 표현할 수 있습니다.

  • 워크플로 유형. 이름 및 버전에는 별도의 키가 있습니다.

  • 활동 유형. 이름 및 버전에는 별도의 키가 있습니다.

  • 작업 목록

  • Tags. 일부 작업의 경우 태그를 여러 개 지정할 수 있습니다. 이러한 경우 각 태그에는 별도의 키가 있습니다.

참고

SWFAmazon의 경우 값이 모두 문자열이므로 매개 변수를 지정된 문자열로 제한하는 등의 StringEquals 문자열 연산자를 사용하여 매개 변수를 제한합니다. 그러나 정규 문자열 비교 연산자(예: StringEquals)에는 모두 파라미터를 포함하라는 요청이 필요합니다. 파라미터를 명시적으로 포함하지 않고 기본값(예: 유형 등록 중 제공한 기본 작업 목록)이 없으면 액세스가 거부됩니다.

조건은 선택 사항으로 취급하는 것이 일반적으로 유용합니다. 그래야 연결된 파라미터를 반드시 포함하지 않고 작업을 호출할 수 있습니다. 예를 들어, 디사이더가 일련의 RespondDecisionTaskCompleted결정을 지정하도록 허용하면서 특정 호출에 대해 결정 중 하나만 지정하도록 허용할 수도 있습니다. 이러한 경우에는 StringEqualsIfExists 연산자를 사용해 적절한 파라미터를 제한합니다. 그러면 파라미터가 조건을 충족하는 경우 액세스를 허용하지만 파라미터가 없는 경우에는 액세스를 거부하지 않습니다.

제한 가능한 파라미터와 연결된 키의 전체 목록은 API요약 단원을 참조하십시오.

다음 섹션에서는 Amazon SWF 정책을 구성하는 방법의 예를 제공합니다. 자세한 내용은 문자열 조건을 참조하십시오.

아마존 SWF 정책 예제

워크플로는 활동, 결정자 등 여러 액터로 구성됩니다. 적절한 IAM 정책을 첨부하여 각 행위자에 대한 액세스를 제어할 수 있습니다. 이 단원에서는 몇 가지 예를 들어보겠습니다. 다음은 가장 간단한 경우를 보여줍니다.

{ "Version": "2012-10-17", "Statement" : [ { "Effect" : "Allow", "Action" : "swf:*", "Resource" : "arn:aws:swf:*:123456789012:/domain/*" } ] }

액터에 이 정책을 연결하면 액터는 모든 리전에서 전체 계정 액세스 권한을 가집니다. 와일드카드를 사용해 여러 리소스, 작업 또는 리전을 값 하나로 나타낼 수 있습니다.

  • Resource 값에서 첫 번째 와일드카드(*)는 리소스 권한이 모든 리전에 적용됨을 나타냅니다. 권한을 단일 리전으로 제한하려면 와일드카드를 적절한 리전 문자열(예: us-east-1)로 바꿉니다.

  • Resource 값의 두 번째 와일드카드(*)는 액터가 지정된 리전에 있는 계정의 모든 도메인에 액세스하도록 허용합니다.

  • Action값의 와일드카드 (*) 를 사용하면 액터가 모든 Amazon SWF 작업을 호출할 수 있습니다.

와일드카드를 사용하는 방법에 대한 자세한 내용은 요소 설명을 참조하십시오.

다음 단원에서는 보다 세부적으로 권한을 허용하는 정책의 예를 보여줍니다.

도메인 권한

부서의 워크플로를 특정 도메인으로 제한하려면 다음과 같은 코드를 사용할 수 있습니다.

{ "Version": "2012-10-17", "Statement": [ { "Effect" : "Allow", "Action" : "swf:*", "Resource" : "arn:aws:swf:*:123456789012:/domain/department1" } ] }

이 정책을 액터에 연결하면 department1에 대해서만 모든 작업을 호출할 수 있습니다.

액터가 두 개 이상의 도메인에 액세스하도록 하려면 다음과 같이 각 도메인에 대한 권한을 개별적으로 표현할 수 있습니다.

{ "Version": "2012-10-17", "Statement": [ { "Effect" : "Allow", "Action" : "swf:*", "Resource" : "arn:aws:swf:*:123456789012:/domain/department1" }, { "Effect" : "Allow", "Action" : "swf:*", "Resource" : "arn:aws:swf:*:123456789012:/domain/department2" } ] }

이 정책을 행위자에게 연결하면 department1department2 도메인의 모든 Amazon SWF 작업을 사용할 수 있습니다. 또한 경우에 따라 와일드카드를 사용해 여러 도메인을 나타낼 수도 있습니다.

API권한 및 제약 조건

Action 요소로 액터가 사용할 수 있는 작업을 제어합니다. 경우에 따라 Condition 요소를 사용해 작업의 허용 가능한 파라미터 값을 제한할 수 있습니다.

액터를 특정 작업으로만 제한하려면 다음과 같은 코드를 사용할 수 있습니다.

{ "Version": "2012-10-17", "Statement": [ { "Effect" : "Allow", "Action" : "swf:StartWorkflowExecution", "Resource" : "arn:aws:swf:*:123456789012:/domain/department2" } ] }

이 정책을 액터에 연결하면 StartWorkflowExecution을 호출해 department2 도메인에서 워크플로를 시작할 수 있습니다. 기타 모든 작업을 사용하거나 다른 모든 도메인에서는 워크플로를 시작할 수 없습니다.

다음과 같이 StartWorkflowExecution 파라미터 값을 하나 이상 제한해 액터가 시작할 수 있는 워크플로를 추가로 제한할 수 있습니다.

{ "Version": "2012-10-17", "Statement": [ { "Effect" : "Allow", "Action" : "swf:StartWorkflowExecution", "Resource" : "arn:aws:swf:*:123456789012:/domain/department1", "Condition" : { "StringEquals" : { "swf:workflowType.name" : "workflow1", "swf:workflowType.version" : "version2" } } } ] }

이 정책은 StartWorkflowExecution 작업의 nameversion 파라미터를 제한합니다. 이 정책을 액터에 연결하면 액터는 department1 도메인에서 workflow1version2만 실행할 수 있고 두 파라미터가 요청에 포함되어 있어야 합니다.

다음과 같이 StringEqualsIfExists 연산자를 사용해 파라미터를 요청에 포함하지 않고 제한할 수 있습니다.

{ "Version": "2012-10-17", "Statement" : [ { "Effect" : "Allow", "Action" : "swf:StartWorkflowExecution", "Resource" : "arn:aws:swf:*:123456789012:/domain/some_domain", "Condition" : { "StringEqualsIfExists" : { "swf:taskList.name" : "task_list_name" } } } ] }

이 정책은 액터가 워크플로 실행 시작 시 작업 목록을 선택적으로 지정하도록 허용합니다.

일부 작업의 태그 목록을 제한할 수 있습니다. 이때 태그마다 별도의 키가 있어 swf:tagList.member.0을 사용하여 목록의 첫 번째 태그를 제한하고, swf:tagList.member.1로는 목록의 두 번째 태그를 제한하는 식으로 최대 5개까지 제한할 수 있습니다. 그러나 태그 목록을 제한하는 방법에 주의를 기울여야 합니다. 예를 들어, 다음은 권장되지 않는 정책의 예입니다.

{ "Version": "2012-10-17", "Statement" : [ { "Effect" : "Allow", "Action" : "swf:StartWorkflowExecution", "Resource" : "arn:aws:swf:*:123456789012:/domain/some_domain", "Condition" : { "StringEqualsIfExists" : { "swf:tagList.member.0" : "some_ok_tag", "another_ok_tag" } } } ] }

이 정책은 경우에 따라 some_ok_tag 또는 another_ok_tag를 지정하도록 허용합니다. 그러나 이 정책은 태그 목록의 첫 번째 요소만 제한합니다. 이 정책은 swf:tagList.member.1, swf:tagList.member.2 등에 어떠한 조건도 적용하지 않기 때문에 태그 목록에는 모두 허용되는 임의 값을 가진 추가 요소가 있을 수 있습니다.

이 문제를 해결하는 한 가지 방법은 태그 목록을 사용할 수 없게 하는 것입니다. 다음 정책은 목록에 요소가 하나만 있도록 해 some_ok_tag 또는 another_ok_tag만 허용하도록 합니다.

{ "Version": "2012-10-17", "Statement" : [ { "Effect" : "Allow", "Action" : "swf:StartWorkflowExecution", "Resource" : "arn:aws:swf:*:123456789012:/domain/some_domain", "Condition" : { "StringEqualsIfExists" : { "swf:tagList.member.0" : "some_ok_tag", "another_ok_tag" }, "Null" : { "swf:tagList.member.1" : "true" } } } ] }

가상 권한 및 제약 API

RespondDecisionTaskCompleted에 대해 사용 가능한 결정을 제한하려는 경우 먼저 RespondDecisionTaskCompleted를 호출하도록 액터를 허용해야 합니다. 그런 다음 다음과 같이 일반 구성원과 동일한 구문을 사용하여 적절한 의사 API 구성원에 대한 권한을 표현할 수 있습니다. API

{ "Version": "2012-10-17", "Statement" : [ { "Resource" : "arn:aws:swf:*:123456789012:/domain/*", "Action" : "swf:RespondDecisionTaskCompleted", "Effect" : "Allow" }, { "Resource" : "*", "Action" : "swf:ScheduleActivityTask", "Effect" : "Allow", "Condition" : { "StringEquals" : { "swf:activityType.name" : "SomeActivityType" } } } ] }

이 정책을 액터에 연결하는 경우 첫 번째 Statement 요소는 액터가 RespondDecisionTaskCompleted를 호출하도록 허용합니다. 두 번째 요소는 행위자가 ScheduleActivityTask 결정을 통해 Amazon에 활동 작업 일정을 SWF 잡도록 지시할 수 있도록 합니다. 모든 결정을 허용하려면 “swf:”를 “swf: ScheduleActivityTask *”로 바꾸십시오.

조건 연산자를 사용하여 일반 연산자와 마찬가지로 매개변수를 제한할 수 있습니다. API 이 ConditionStringEquals 연산자는 SomeActivityType 활동에 대한 활동 작업을 예약하도록 RespondDecisionTaskCompleted를 허용하므로 이 활동이 해당 작업을 예약해야 합니다. 파라미터 값을 사용하도록 RespondDecisionTaskCompleted를 허용하지만 반드시 사용할 필요는 없도록 하려면 대신 StringEqualsIfExists 연산자를 사용할 수 있습니다.

AWS 관리형 정책: SimpleWorkflowFullAccess

SimpleWorkflowFullAccess정책을 IAM ID에 연결할 수 있습니다.

이 정책은 Amazon SWF 구성 서비스에 대한 전체 액세스를 제공합니다.

권한 세부 정보

이 정책에는 다음 권한이 포함되어 있습니다.

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

IAM 정책에 대한 서비스 모델 제한 사항

IAM정책을 생성할 때는 서비스 모델 제약을 고려해야 합니다. 유효하지 않은 Amazon SWF 요청을 나타내는 구문상 유효한 IAM 정책을 생성할 수 있습니다. 액세스 제어 측면에서 허용된 요청은 유효하지 않은 요청이므로 여전히 실패할 수 있습니다.

예를 들어, ListOpenWorkflowExecutions에 대한 다음 정책은 권장되지 않습니다.

{ "Version": "2012-10-17", "Statement" : [ { "Effect" : "Allow", "Action" : "swf:ListOpenWorkflowExecutions", "Resource" : "arn:aws:swf:*:123456789012:/domain/domain_name", "Condition" : { "StringEquals" : { "swf:typeFilter.name" : "workflow_name", "swf:typeFilter.version" : "workflow_version", "swf:tagFilter.tag" : "some_tag" } } } ] }

Amazon SWF 서비스 모델에서는 typeFiltertagFilter 매개변수를 동일한 ListOpenWorkflowExecutions 요청에 사용할 수 없습니다. 따라서 이 정책은 ValidationException를 잘못된 요청으로 반환하여 서비스가 거부하는 직접 호출을 허용합니다.