【问题标题】:Grant one IAM role access to a large number of DynamoDB tables授予一个 IAM 角色访问大量 DynamoDB 表的权限
【发布时间】: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


    【解决方案1】:

    如果您可以以赋予它们相同前缀的方式命名表,则可以在资源中使用通配符。

    arn:aws:dynamodb:<Region>:<Account>:table/MyPrefix-*
    

    这适用于所有以MyPrefix-开头的表

    如果您使用生成的名称,您可能可以使用 AWS::StackName 值代替 MyPrefix,但请注意,使用嵌套堆栈时,该值可能会缩短。

    【讨论】:

      猜你喜欢
      • 2018-06-10
      • 2016-03-23
      • 1970-01-01
      • 1970-01-01
      • 2019-05-16
      • 2020-03-31
      • 2022-06-10
      • 2021-10-16
      • 1970-01-01
      相关资源
      最近更新 更多