在 Step Functions 中为状态机创建IAM角色 - AWS Step Functions

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

在 Step Functions 中为状态机创建IAM角色

AWS Step Functions 可以执行代码并访问 AWS 资源(例如调用 AWS Lambda 函数)。为了维护安全,您必须使用IAM角色授予 Step Functions 对这些资源的访问权限。

本指南学习 Step Functions 的教程中的使您可以利用自动生成的IAM角色,这些角色对以下角色有效 AWS 您在其中创建状态机的区域。但是,您可以为状态机创建自己的IAM角色。

在创建供状态机使用的IAM策略时,该策略应包括您希望状态机承担的权限。你可以使用现有的 AWS 以托管策略为例,或者您可以从头开始创建满足您特定需求的自定义策略。有关更多信息,请参阅《IAM用户指南》中的创建IAM策略

要为状态机创建自己的IAM角色,请按照本节中的步骤操作。

在此示例中,您创建了一个有权调用 Lambda 函数的IAM角色。

为 Step Functions 创建角色

  1. 登录IAM控制台,然后选择 “角色”、“创建角色”。

  2. “选择可信实体” 页面上,在 AWS 服务,从列表中选择 Step Functions,然后选择下一步:权限

  3. 已附加权限政策页面上,选择下一步:审核

  4. 审核页面上,对于角色名称,输入 StepFunctionsLambdaRole,然后选择创建角色

    该IAM角色出现在角色列表中。

有关IAM权限和策略的更多信息,请参阅《IAM用户指南》中的访问管理

防止跨服务混淆代理问题

混淆代理问题是一个安全性问题,即不具有操作执行权限的实体可能会迫使具有更高权限的实体执行该操作。In AWS,跨服务模仿可能会导致混乱的副手问题。一个服务(呼叫服务)调用另一项服务(所谓的服务)时,可能会发生跨服务模拟。这种类型的模拟可能跨账户和跨服务发生。可以操纵调用服务以使用其权限对另一个客户的资源进行操作,否则该服务不应有访问权限。

为了防止议员们感到困惑, AWS 提供的工具可帮助您保护所有服务的数据,这些服务委托人已被授予对您账户中资源的访问权限。本节重点介绍跨服务混乱的副手预防 AWS Step Functions;但是,您可以在《IAM用户指南》的 “混淆副手问题” 部分中了解有关此主题的更多信息。

我们建议在资源策略中使用aws:SourceArnaws:SourceAccount全局条件上下文密钥来限制以下权限 Step Functions 提供另一项服务来访问您的资源。如果您只希望将一个资源与跨服务访问相关联,请使用 aws:SourceArn。如果您想允许该账户中的任何资源与跨服务使用操作相关联,请使用 aws:SourceAccount

防止混乱的副手问题的最有效方法是使用具有全部资源的全aws:SourceArnARN局条件上下文密钥。如果您不知道资源的全部ARN内容,或者要指定多个资源,请使用带有通配符 (*) 的aws:SourceArn全局上下文条件键来表示未知部分。ARN例如,arn:aws:states:*:111122223333:*

以下是新人策略的示例,它展示了如何将 aws:SourceArnaws:SourceAccount 与 Step Functions 搭配使用来防止出现混乱的副手问题。

{ "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" } } } ] }

附加内联策略

Step Functions 可以直接在 Task 状态中控制其他服务。附加内联策略以允许 Step Functions 访问您需要控制的服务的API操作。

  1. 打开IAM控制台,选择 “角色”,搜索您的 Step Functions 角色,然后选择该角色。

  2. 选择添加内联策略

  3. 使用可视化编辑器JSON选项卡为您的角色创建策略。

有关如何做的更多信息 AWS Step Functions 可以控制其他 AWS 服务,请参阅将服务与 Step Functions 集成

注意

有关由 Step Functions 控制台创建的IAM策略的示例,请参阅Step Functions 如何为集成服务生成IAM策略