

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# 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、サービス間のなりすましにより、混乱した代理問題が発生する可能性があります。サービス間でのなりすましは、1 つのサービス (*呼び出し元サービス*) が、別のサービス (*呼び出し対象サービス*) を呼び出すときに発生する場合もあります。この種のなりすましは、クロスアカウントおよびクロスサービスで発生するおそれがあります。呼び出し元サービスが操作され、それ自身のアクセス許可が利用されて、本来アクセス許可が付与されない形で、別のユーザーのリソースに働きかけることがあります。

混乱した代理を防ぐために、 は、アカウント内のリソースへのアクセス権が付与されたサービスプリンシパルを持つすべてのサービスのデータを保護するのに役立つツール AWS を提供します。このセクションでは、 固有のサービス間の混乱した代理の防止に焦点を当てています AWS Step Functionsが、このトピックの詳細については、*IAM ユーザーガイド*の[混乱した代理の問題](https://docs.aws.amazon.com/IAM/latest/UserGuide/confused-deputy.html)セクションを参照してください。

リソースポリシーで [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) のグローバル条件コンテキストキーを使用して、Step Functions が他のサービスに付与する、そのリソースに対するアクセス許可を制限することをお勧めします。クロスサービスアクセスにリソースを 1 つだけ関連付けたい場合は、`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>

`Task` 状態の他のサービスを Step Functions で直接制御できます。制御する必要があるサービスの API アクションに Step Functions がアクセスできるように、インラインポリシーをアタッチします。

1. [IAM コンソール](https://console.aws.amazon.com/iam/home) を開いて **[ロール]** を選択し、Step Functions ロールを検索したら、そのロールを選択します。

1. **[インラインポリシーの追加]** を選択します。

1. ロールのポリシーを作成するには、**[ビジュアルエディタ]** か **[JSON]** タブを使用します。

 AWS Step Functions が他の AWS サービスをコントロールする方法の詳細については、「」を参照してください[サービスと Step Functions の統合](integrate-services.md)。

**注記**  
Step Functions コンソールで作成した IAM ポリシーの例については、[Step Functions が統合サービスの IAM ポリシーを生成する方法](service-integration-iam-templates.md) を参照してください。