在 DynamoDB 中使用基于资源的策略进行跨账户访问 - Amazon DynamoDB
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

在 DynamoDB 中使用基于资源的策略进行跨账户访问

使用基于资源的策略,您可以提供跨账户访问不同 Amazon Web Services 账户中可用资源的权限。如果您在与资源相同的 Amazon Web Services 区域中有分析器,则将通过 IAM Access Analyzer 外部访问调查发现报告基于资源的策略允许的所有跨账户访问权限。IAM Access Analyzer 将根据 IAM 策略语法最佳实践运行策略检查,以验证您的策略。这些检查项生成结果并提供可操作的建议,可帮助您编写可操作且符合安全最佳实践的策略。您可以在 DynamoDB 控制台权限选项卡中查看 IAM Access Analyzer 的活动调查发现。

要了解通过使用 IAM Access Analyzer 验证策略的信息,请参阅 《IAM 用户指南》中的 IAM Access Analyzer 策略验证。要查看 IAM Access Analyzer 返回的警告、错误和建议的列表,请参阅 IAM Access Analyzer 策略检查引用

要向账户 A 中的用户 A 授予访问账户 B 中表 B 的 GetItem 权限,请执行以下步骤:

  1. 将基于资源的策略附加到表 B,该策略向用户 A 授予执行 GetItem 操作的权限。

  2. 向用户 A 附加基于身份的策略,授予其对表 B 执行 GetItem 操作的权限。

使用 DynamoDB 控制台中提供的预览外部访问选项,您可以预览新策略对资源的公有访问和跨账户访问的影响。在保存策略之前,您可以检查策略是引入了新的 IAM Access Analyzer 发现结果还是解析了现有的发现结果。如果您没有看到活动的分析器,请在 IAM Access Analyzer 中选择转至 Access Analyzer创建账户分析器。有关更多信息,请参阅预览访问

DynamoDB 数据面板和控制面板 API 中的表名参数接受表的完整 Amazon 资源名称(ARN),以支持跨账户操作。如果您只提供表名参数而不是完整的 ARN,则将对请求者所属账户中的表执行 API 操作。有关使用跨账户访问的策略的示例,请参阅用于跨账户访问的基于资源的策略

即使其它账户的主体正在所有者账户的 DynamoDB 表中执行读取或写入,也会向该资源所有者的账户收费。如果该表具有预调配吞吐量,则来自所有者账户和其它账户中的请求者的所有请求的总和,将决定请求是受限制(如果自动扩缩已禁用),还是纵向/横向扩展(如果已启用自动扩缩)。

这些请求将记录在所有者和请求者账户的 CloudTrail 日志中,这样两个账户中的每一个账户都可以跟踪哪个账户访问了哪些数据。

与跨账户 Amazon Lambda 函数共享访问权限

账户 A 中的 Lambda 函数

  1. 转至 IAM 控制台以创建一个 IAM 角色,该角色将用作账户 A 中 Amazon Lambda 函数的 Lambda 执行角色。添加具有所需 DynamoDB Streams 和 Lambda 调用权限的托管式 IAM 策略 AWSLambdaDynamoDBExecutionRole。此策略还将授予对您在账户 A 中可能有权访问的所有潜在 DynamoDB Streams 资源的访问权限。

  2. Lambda 控制台中,创建一个 Amazon Lambda 函数以处理 DynamoDB 流中的记录,并在设置执行角色的过程中,选择您在上一步中创建的角色。

  3. 向 DynamoDB Streams 的账户 B 的所有者提供 Lambda 函数执行角色,以配置基于资源的策略来实现跨账户读取访问。

  4. 完成 Lambda 函数设置。

账户 B 中的 DynamoDB 流

  1. 从账户 A 中获取将调用 Lambda 函数的跨账户 Lambda 执行角色。

  2. 在账户 B 中的 Amazon DynamoDB 控制台上,选择 Lambda 跨账户触发器的表。在导出和流选项卡下,找到 DynamoDB 流 ARN。确保 DynamoDB 流状态为“开启”,并记下完整的流 ARN,因为您将需要它来设置资源策略。

  3. 权限选项卡下,单击创建流策略按钮以启动可视化策略编辑器。单击添加新语句按钮或编辑策略(如果策略已存在)。

  4. 创建一个策略,该策略将账户 A 中的 Lambda 执行角色指定为主体,并授予所需的 DynamoDB 流操作。确保包括操作 dynamodb:DescribeStreamdynamodb:GetRecordsdynamodb:GetShardIteratordynamodb:ListShards。有关 DynamoDB Streams 的资源策略示例的更多信息,请参阅 DynamoDB 基于资源的策略示例

注意

控制面板 API 的跨账户访问的每秒事务数(TPS)限制较低,为 500 个请求。