Amazon Step Functions 如何与 IAM 协同工作 - Amazon Step Functions
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 Amazon Web Services 服务入门

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

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 创建角色

  1. 登录 IA M 控制台,然后选择角色创建角色

  2. “选择可信实体类型” 页面的Amazon服务下,从列表中选择 Step Functions,然后选择 “下一步:权限”。

  3. Attached permissions policy 页面上,选择 Next: Review

  4. 在 “查看” 页面上,输入StepFunctionsLambdaRole角色名称”,然后选择 “创建角色”。

    IAM 角色显示在角色列表中。

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

防范跨服务混淆代理问题

困惑不解的副手是被其他实体强迫采取行动的实体(服务或账户)。中Amazon,一个服务(呼叫服务)调用另一项服务(所谓的服务)时,可能会发生跨服务模拟。可以操纵调用服务以使用其权限对另一个客户的资源进行操作,否则该服务不应有访问权限。这种类型的模拟可以跨账户和跨服务发生。

为防止代表混淆,Amazon提供可帮助您保护所有服务的工具,而这些服务委托人有权限访问您账户中的资源。本节重点介绍专门针对的跨服务混乱副手预防措施Amazon Step Functions;但是,您可以在 IAM 用户指南混乱副手问题部分了解有关此主题的更多信息。

要限制 IAM 授予 Step Functions 访问您的资源的权限,我们建议在您的资源策略中使用aws:SourceArnaws:SourceAccount全局条件上下文密钥。请注意,如果使用这两个全局条件上下文键,并且aws:SourceArn值包含Amazon账户 ID,则aws:SourceAccount值和值中的Amazon账户在aws:SourceArn同一策略语句中使用时,必须使用相同的Amazon账户 ID。

注意

防范混淆代理问题最有效的方法是使用 aws:SourceArn 全局条件上下文键和资源的完整 ARN。如果您不知道完整 ARN,或者您正在指定多个资源,请针对 ARN 未知部分使用带有通配符 (*) 的aws:SourceArn全局上下文条件键。例如,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 选项卡为您的角色创建策略。

有关 Amazon Step Functions 如何控制其他 Amazon 服务的更多信息,请参阅将 Amazon Step Functions 与其他服务一起使用

注意

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