Step Functions 跨账户访问 DynamoDB

use*_*027 7 amazon-web-services amazon-dynamodb aws-step-functions

只是想知道是否有人遇到过以下用例:

  • 账户 A 有一个步骤函数状态机
  • 账户 B 有一个 DynamoDB 表
  • 允许状态机从账户 A 到 PutItem 进入账户 B 中的 DynamoDB 表

我知道如果我们将 Lambda 与 step 函数一起使用,它允许基于资源的策略,我们可以允许 Lambda 中的“主体”作为来自另一个帐户的状态机,并从帐户 A 中的状态机执行帐户 B 中的 lambda 函数。

但是 DynamoDB 不支持基于资源的策略,有没有办法部署 CloudFormation 模板,在其中我们创建一个 DynamoDB 表,该表具有允许来自另一个 Account PutItem 的状态机的策略/权限?

lyn*_*fox 1

你已经掌握了它的要点,但缺少一个使它成为可能的小元素。

Account A - contains:
    Lambda that is part of a State Machine
    Role A

Account B - Contains:
    DynamoDb
    Role B
Run Code Online (Sandbox Code Playgroud)

您使用角色 A 设置 lambda。您为角色 A 提供策略来承担角色 B - 您没有向角色 A 授予任何 dynamo 权限,也没有在 Dyanmo 上设置任何基于资源的权限

您将角色 B 设置为能够角色 A 代入,并具有 DynamoDB 访问权限。

现在,您可以使用您选择的 SDK (sts) 担任角色 B,并解析安全凭证、存储它们,并将它们用于账户 A 的 lambda 内的 DynamoDB sdk 调用。

这是完全可能的,但主要缺点之一是您必须非常明确地使用跨账户角色 arns - 如果一方更改了他们的 arns,系统就会崩溃。为 Dynamo 设置一个具有一些基本 CRUD 操作的 API,并让其他帐户调用它会更安全(在某些方面也更好)——除非您试图缩短毫秒时间,这通常就足够了。