如何授予通过 terraform 写入全局二级索引的权限?

jez*_*nag 2 amazon-web-services terraform

我的同事已经设置了 terraform 来构建一个 dynamo DB 表 + 全局二级索引。

  global_secondary_index {
    name            = "${lookup(var.archive_metadata, "gsi_name")}"
    hash_key        = "${lookup(var.archive_metadata, "gsi_hash_key")}"
    read_capacity   = "${lookup(var.archive_metadata, "read_capacity")}"
    write_capacity  = "${lookup(var.archive_metadata, "write_capacity")}"
    projection_type = "ALL"
  }
Run Code Online (Sandbox Code Playgroud)

我们试图弄清楚如何授予对 lambda 函数的写访问权限。我们试过这个

data aws_iam_policy_document "archive_metadata_write" {
  statement {
    actions = [
      "dynamodb:BatchGetItem",
      "dynamodb:Describe*",
      "dynamodb:Get*",
      "dynamodb:List*",
      "dynamodb:Query",
      "dynamodb:Scan",
      "dynamodb:PutItem",
      "dynamodb:UpdateItem",
    ]

    resources = [
      "${aws_dynamodb_table.archive_metadata.arn}",
      "${aws_dynamodb_table.archive_metadata.global_secondary_index}"
    ]
  }
}
Run Code Online (Sandbox Code Playgroud)

没运气。

也试过

"${aws_dynamodb_table.archive_metadata.global_secondary_index.gsi_name}"
Run Code Online (Sandbox Code Playgroud)

 "${aws_dynamodb_table.archive_metadata.global_secondary_index.arn}"
Run Code Online (Sandbox Code Playgroud)

jez*_*nag 9

最终工作的是

  "${aws_dynamodb_table.archive_metadata.arn}/index/*"
Run Code Online (Sandbox Code Playgroud)

感觉有点鸡肋。如果其他人有更好的主意,我很乐意听到。

  • 根据文档 - https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/using-identity-based-policies.html#access-policy-examples-for-sdk-cli.example4 - 这是正确的这样做的方式。所以这不是黑客攻击。 (3认同)