【问题标题】:Create parameterized resource policy on terraform在 Terraform 上创建参数化资源策略
【发布时间】:2023-01-12 18:10:31
【问题描述】:

我想为 Secrets Manager 密钥创建资源策略。

我正在关注 docs 上的官方示例

resource "aws_secretsmanager_secret_policy" "this" {
  count      = var.create_resource_policy ? 1 : 0
  secret_arn = aws_secretsmanager_secret.mysecret.arn

  policy = <<POLICY
{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "EnableAnotherAWSAccountToReadTheSecret",
      "Effect": "Allow",
      "Principal": {
        "AWS": "arn:aws:iam::123456789012:root"
      },
      "Action": "secretsmanager:GetSecretValue",
      "Resource": "*"
    }
  ]
}
POLICY
}

有没有一种方法可以将以下内容作为策略文档中的变量传递给主体,操作资源等?

我希望能够将这些东西作为 terraform 变量传递。

【问题讨论】:

    标签: amazon-web-services terraform terraform-provider-aws


    【解决方案1】:

    是的,您可以使用 terraform 中的内置函数来实现插值语法。例如,如果您有一个数据源来获取帐户 ID,您可以执行以下操作:

    data "aws_caller_identity" "current" {}
    
    resource "aws_secretsmanager_secret_policy" "this" {
      count      = var.create_resource_policy ? 1 : 0
      secret_arn = aws_secretsmanager_secret.mysecret.arn
    
      policy = <<POLICY
    {
      "Version": "2012-10-17",
      "Statement": [
        {
          "Sid": "EnableAnotherAWSAccountToReadTheSecret",
          "Effect": "Allow",
          "Principal": {
            "AWS": "arn:aws:iam::${data.aws_caller_identity.current.id}:root"
          },
          "Action": "secretsmanager:GetSecretValue",
          "Resource": "*"
        }
      ]
    }
    POLICY
    }
    

    然后,您可以为您想要/需要的任何其他财产做同样的事情。

    【讨论】:

      猜你喜欢
      • 2021-12-31
      • 1970-01-01
      • 2021-08-28
      • 2022-09-22
      • 2021-05-28
      • 2019-08-31
      • 1970-01-01
      • 1970-01-01
      • 2020-11-07
      相关资源
      最近更新 更多