为状态机创建 IAM 角色 - AWS 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 控制台,然后选择 RolesCreate role

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

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

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

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

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

防止跨服务混淆代理问题

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

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

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

防范混淆代理问题最有效的方法是使用 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 选项卡为您的角色创建策略。

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

注意

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