本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
Amazon Step Functions 如何与 IAM 协同工作
Amazon Step Functions 可以执行代码和访问 Amazon 资源(如调用 Amazon Lambda 函数)。为了保持安全性,您必须使用 IAM 角色为 Step Functions 授予对这些资源的访问权限。
本指南Step Function中的内容可以利用自动生成的 IAM 角色,这些角色对您创建状态机的Amazon区域有效。但是,您可以为状态机创建自己的 IAM 角色。
在创建供状态机使用的 IAM policy 时,该策略应包括您希望状态机承担的权限。您可以使用现有Amazon托管策略作为示例,或者您可以从头开始创建满足特定需求的自定义策略。有关更多信息,请参阅 IAM 用户指南中的创建 IAM 策略
要为状态机创建您自己的 IAM 角色,请按照本节中的步骤操作。
在此示例中,您创建了一个有权调用 Lambda 函数的 IAM 角色。
为 SteeStep Functions ons 创建角色
-
登录 IA M 控制台
,然后选择角色、创建角色。 -
在 “选择可信实体类型” 页面的Amazon服务下,从列表中选择 Step Functions,然后选择 “下一步:权限”。
-
在 Attached permissions policy 页面上,选择 Next: Review。
-
在 “查看” 页面上,输入
StepFunctionsLambdaRole
“角色名称”,然后选择 “创建角色”。IAM 角色显示在角色列表中。
有关 IAM 权限和策略的更多信息,请参阅 IAM 用户指南中的访问管理。
防范跨服务混淆代理问题
困惑不解的副手是被其他实体强迫采取行动的实体(服务或账户)。中Amazon,一个服务(呼叫服务)调用另一项服务(所谓的服务)时,可能会发生跨服务模拟。可以操纵调用服务以使用其权限对另一个客户的资源进行操作,否则该服务不应有访问权限。这种类型的模拟可以跨账户和跨服务发生。
为防止代表混淆,Amazon提供可帮助您保护所有服务的工具,而这些服务委托人有权限访问您账户中的资源。本节重点介绍专门针对的跨服务混乱副手预防措施Amazon Step Functions;但是,您可以在 IAM 用户指南的混乱副手问题部分了解有关此主题的更多信息。
要限制 IAM 授予 Step Functions 访问您的资源的权限,我们建议在您的资源策略中使用aws:SourceArn
和aws:SourceAccount
全局条件上下文密钥。请注意,如果使用这两个全局条件上下文键,并且aws:SourceArn
值包含Amazon账户 ID,则aws:SourceAccount
值和值中的Amazon账户在aws:SourceArn
同一策略语句中使用时,必须使用相同的Amazon账户 ID。
防范混淆代理问题最有效的方法是使用 aws:SourceArn
全局条件上下文键和资源的完整 ARN。如果您不知道完整 ARN,或者您正在指定多个资源,请针对 ARN 未知部分使用带有通配符 (*
) 的aws:SourceArn
全局上下文条件键。例如,arn:aws:states:*:111122223333:*
。
以下是可信策略的示例,该示例显示了如何使用aws:SourceArn
和aws: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 操作。
-
打开 IAM 控制台
,选择角色,搜索您的 Step Functions 角色,然后选择该角色。 -
选择添加内联策略。
-
使用可视化编辑器或 JSON 选项卡为您的角色创建策略。
有关 Amazon Step Functions 如何控制其他 Amazon 服务的更多信息,请参阅将 Amazon Step Functions 与其他服务一起使用。
有关由 Step Functions 控制台创建的 IAM 策略的示例,请参阅集成服务的 IAM 政策。