【发布时间】:2020-05-28 11:09:21
【问题描述】:
我有一个使用主 CloudFormation 堆栈和十多个嵌套堆栈定义的 AppSync 应用程序。每个嵌套堆栈定义一个 DynamoDB 表、该表的 AppSync 数据源以及该数据源的 IAM 角色以访问该表。 DataSource 依赖于角色,而角色依赖于表。
出于三个原因,我想合并这些 IAM 角色:
- 角色定义非常重复并且是样板式的。
- 这个应用程序有很多副本,并且它加起来了很多 IAM 角色 - 足以让我们接近软限制。
- 一些解析程序使用 DynamoDB 批处理操作来访问多个表,因此至少某些 IAM 角色必须授予对多个表的访问权限。
我不想授予角色对帐户中所有 DynamoDB 表的全面访问权限。
授予一个角色访问每个所需表的最简单方法是在策略文档中手动列出它们。这有一个明显的缺点,即在添加新表时需要手动保持策略同步。但是,也存在依赖问题:嵌套栈中的DataSource依赖于主栈中的一个角色,主栈依赖于嵌套栈中的表。
我本来希望使用标签:授予所有具有特定标签的 DynamoDB 表,然后为每个表设置该标签。这样,添加新表时就不需要编辑 IAM 角色。但显然DynamoDB does not support tag-based conditions。
是否有一种简单的方法可以授予单个 IAM 角色访问多个 DynamoDB 表的权限,而无需授予对所有 DynamoDB 的访问权限,也无需单独列出角色中的表?
【问题讨论】:
标签: amazon-dynamodb amazon-cloudformation amazon-iam