翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
AWS Step Functions はコードを実行し、 AWS リソース ( 関数の呼び出しなど) AWS Lambda にアクセスできます。セキュリティを維持するために、IAM ロールを使用してこれらのリソースへの Step Functions アクセスを許可する必要があります。
Step Functions を学習するためのチュートリアル このガイドの を使用すると、ステートマシンを作成する AWS リージョンで有効な、自動的に生成された IAM ロールを利用できます。ただし、ステートマシンの IAM ロールを独自に作成することもできます。
ステートマシンの IAM ポリシーを作成する場合、そのポリシーにはステートマシンに付与する許可を含める必要があります。既存の AWS 管理ポリシーを例として使用することも、特定のニーズを満たすカスタムポリシーを最初から作成することもできます。詳細については、「IAM ユーザーガイド」 の「IAM ポリシーの作成」を参照してください。
ステートマシンの IAM ロールを独自に作成するには、このセクションの手順に従います。
この例では、Lambda 関数を呼び出す許可を持つIAM ロールを作成します。
Step Functions のロールの作成
-
IAM コンソール
にサインインし、[ロール]、[ロールの作成] の順に選択します。 -
[信頼できるエンティティ] ページの [AWS サービス] で、リストから [Step Functions] を選択し、[次へ:許可] を選択します。
-
[アタッチされた許可ポリシー] ページで、[次へ:確認] を選択します。
-
[確認] ページで、
StepFunctionsLambdaRole
を [ロール名] に入力し、[ロールの作成] を選択します。ロールのリストで、IAM ロールが表示されます。
IAM 許可とポリシーの詳細については、「IAM ユーザーガイド」の「アクセス管理」を参照してください。
サービス間の混乱した代理の防止
混乱した代理問題は、アクションを実行する許可を持たないエンティティが、より権限のあるエンティティにアクションの実行を強制できるセキュリティ上の問題です。では AWS、サービス間のなりすましにより、混乱した代理問題が発生する可能性があります。サービス間でのなりすましは、1 つのサービス (呼び出し元サービス) が、別のサービス (呼び出し対象サービス) を呼び出すときに発生する場合もあります。この種のなりすましは、クロスアカウントおよびクロスサービスで発生するおそれがあります。呼び出し元サービスが操作され、それ自身のアクセス許可が利用されて、本来アクセス許可が付与されない形で、別のユーザーのリソースに働きかけることがあります。
混乱した代理を防ぐために、 は、アカウント内のリソースへのアクセス権が付与されたサービスプリンシパルを使用して、すべてのサービスのデータを保護するのに役立つツール AWS を提供します。このセクションでは、 固有のサービス間の混乱した代理の防止に焦点を当てています AWS Step Functionsが、このトピックの詳細については、IAM ユーザーガイドの混乱した代理の問題セクションを参照してください。
リソースポリシーの aws:SourceArn
および aws: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"
}
}
}
]
}
インラインポリシーをアタッチする
Task
状態の他のサービスを Step Functions で直接制御できます。制御する必要があるサービスの API アクションに Step Functions がアクセスできるように、インラインポリシーをアタッチします。
-
IAM コンソール
を開いて [ロール] を選択し、Step Functions ロールを検索したら、そのロールを選択します。 -
[インラインポリシーの追加] を選択します。
-
ロールのポリシーを作成するには、[ビジュアルエディタ] か [JSON] タブを使用します。
AWS Step Functions が他の AWS サービスをコントロールする方法の詳細については、「」を参照してくださいサービスと Step Functions の統合。
注記
Step Functions コンソールで作成した IAM ポリシーの例については、Step Functions が統合サービスの IAM ポリシーを生成する方法 を参照してください。