

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

# Step Functions에서 상태 시스템을 위한 IAM 역할 만들기
<a name="procedure-create-iam-role"></a>

AWS Step Functions 는 코드를 실행하고 AWS 리소스(예: 함수 호출)에 AWS Lambda 액세스할 수 있습니다. 보안 유지를 위해 사용자는 IAM 역할을 사용하여 이러한 리소스에 대한 Step Functions 액세스 권한을 부여해야 합니다.

이 가이드[Step Functions 학습을 위한 자습서](learning-resources.md#tutorials)의를 사용하면 상태 시스템을 생성하는 AWS 리전에 유효한 자동으로 생성된 IAM 역할을 활용할 수 있습니다. 하지만 상태 머신에 대한 자체 IAM 역할을 만들 수 있습니다.

사용할 상태 머신에 대한 IAM 정책을 만들 때 정책에 상태 머신에게 위임할 권한이 포함되어야 합니다. 기존 AWS 관리형 정책을 예로 사용하거나 특정 요구 사항을 충족하는 사용자 지정 정책을 처음부터 생성할 수 있습니다. 자세한 내용은 *IAM 사용 설명서*의 [IAM 정책 생성](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_create.html)을 참조하세요.

상태 머신에 대한 자체 IAM 역할을 만들려면 이 섹션의 단계를 수행합니다.

이 예제에서는 Lambda 함수를 간접적으로 호출할 수 있는 권한을 사용하여 IAM 역할을 만듭니다.

## Step Functions의 역할 만들기
<a name="create-role-for-step-functions"></a>

1. [IAM 콘솔](https://console.aws.amazon.com/iam/home)에 로그인한 다음 **역할**, **역할 생성**을 선택합니다.

1. **AWS 서비스**의 **신뢰할 수 있는 엔터티 선택** 페이지에 있는 목록에서 **Step Functions**를 선택한 다음, **다음: 권한**을 선택합니다.

1. **연결된 권한 정책** 페이지에서 **다음: 검토**를 선택합니다.

1. **검토** 페이지에서 **역할 이름**에 `StepFunctionsLambdaRole`을 입력한 다음 **역할 생성**을 선택합니다.

   역할 목록에 IAM 역할이 표시됩니다.

IAM 권한과 정책에 대한 자세한 내용은 *IAM 사용 설명서*의 [액세스 관리](https://docs.aws.amazon.com/IAM/latest/UserGuide/access.html)를 참조하세요.

## 교차 서비스 혼동된 대리자 문제 예방
<a name="prevent-cross-service-confused-deputy"></a>

혼동된 대리자 문제는 작업을 수행할 권한이 없는 엔터티가 권한이 더 많은 엔터티에게 작업을 수행하도록 강요할 수 있는 보안 문제입니다. 에서 AWS교차 서비스 가장은 혼동된 대리자 문제를 초래할 수 있습니다. 교차 서비스 가장은 한 서비스(*직접 호출하는 서비스*)가 다른 서비스(*직접 호출되는 서비스*)를 직접 호출할 때 발생할 수 있습니다. 이러한 유형의 가장은 크로스 계정과 교차 서비스에서 발생할 수 있습니다. 직접 호출하는 서비스는 다른 고객의 리소스에 대해 액세스 권한이 없는 방식으로 작동하게 권한을 사용하도록 조작될 수 있습니다.

혼동된 대리자를 방지하기 위해는 계정의 리소스에 대한 액세스 권한이 부여된 서비스 보안 주체를 통해 모든 서비스에 대한 데이터를 보호하는 데 도움이 되는 도구를 AWS 제공합니다. 이 섹션에서는와 관련된 서비스 간 혼동된 대리자 예방에 중점을 둡니다 AWS Step Functions. 그러나 *IAM 사용 설명서*의 [혼동된 대리자 문제](https://docs.aws.amazon.com/IAM/latest/UserGuide/confused-deputy.html) 섹션에서이 주제에 대해 자세히 알아볼 수 있습니다.

Step Functions에서 리소스에 대한 액세스 권한을 다른 서비스에 제공하는 권한을 제한하려면 리소스 정책에서 [https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourcearn](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourcearn) 및 [https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourceaccount](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourceaccount) 글로벌 조건 컨텍스트 키를 사용하는 것이 좋습니다. 하나의 리소스만 교차 서비스 액세스와 연결되도록 허용하려는 경우 `aws:SourceArn`을 사용하세요. 해당 계정의 모든 리소스가 교차 서비스 사용과 연결되도록 허용하려는 경우 `aws:SourceAccount`을(를) 사용합니다.

혼동된 대리자 문제로부터 보호하는 가장 효과적인 방법은 리소스의 전체 ARN이 포함된 `aws:SourceArn` 전역 조건 컨텍스트 키를 사용하는 것입니다. 리소스의 전체 ARN을 모르거나 여러 리소스를 지정하는 경우 ARN의 알 수 없는 부분에 와일드카드 문자(`*`)를 사용한 `aws:SourceArn` 글로벌 조건 컨텍스트 키를 사용합니다. 예를 들어 `arn:aws:states:*:111122223333:*`입니다.

다음은 혼동된 대리자 문제를 예방하기 위해 Step Functions에서 `aws:SourceArn` 또는 `aws:SourceAccount`를 사용하는 방법을 보여주는 *신뢰할 수 있는 정책*의 예제입니다.

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement":[
     {
        "Effect":"Allow",
        "Principal":{
           "Service":[
              "states.amazonaws.com"
           ]
        },
        "Action":"sts:AssumeRole",
        "Condition":{
           "ArnLike":{
              "aws:SourceArn":"arn:aws:states:us-east-1:111122223333:stateMachine:*"
           },
           "StringEquals":{
              "aws:SourceAccount":"111122223333"
           }
        }
     }
  ]
}
```

## 인라인 정책 연결
<a name="attach-inline-policy"></a>

Step Functions는 `Task` 상태에서 직접 다른 서비스를 제어할 수 있습니다. 인라인 정책을 연결하면 Step Functions가 제어해야 하는 서비스의 API 작업에 액세스할 수 있습니다.

1. [IAM 콘솔](https://console.aws.amazon.com/iam/home)을 열고 **역할(Roles)**을 선택한 다음 Step Functions 역할을 검색하고 해당 역할을 선택합니다.

1. **인라인 정책 추가**를 선택합니다.

1. **시각적 편집기** 또는 **JSON** 탭을 사용하여 역할에 대한 정책을 생성합니다.

가 다른 AWS 서비스를 제어하는 방법에 대한 자세한 내용은 섹션을 참조 AWS Step Functions 하세요[Step Functions에서 서비스 통합](integrate-services.md).

**참고**  
Step Functions 콘솔에서 만든 IAM 정책의 예제는 [Step Functions가 통합 서비스용 IAM 정책을 생성하는 방법](service-integration-iam-templates.md) 섹션을 참조하세요.