【问题标题】:Terraform Override AWS managed policyTerraform 覆盖 AWS 托管策略
【发布时间】:2021-09-14 07:31:36
【问题描述】:

我的请求看起来很简单,但我无法使用 Terraform 实现它。 我想创建一个基于SecurityAudit 托管策略的新AWS 策略,我想向其中添加条件

"Condition": {
   "StringNotEquals": {
      "aws:TagKeys/MyTag": "disabled"
   }
}

我尝试使用aws_iam_policy_document 功能,然后将我的策略附加到我的角色

data "aws_iam_policy_document" "security-audit-policy-override" {
  statement {
    principals {
      type        = "Federated"
      identifiers = ["arn:aws:iam::aws:policy/SecurityAudit"]
    }

    condition {
      test     = "StringNotEquals"
      values   = ["aws:TagKeys/MyTag"]
      variable = "disabled"
    }
  }
}

resource "aws_iam_role_policy" "security-audit-override" {
  policy     = data.aws_iam_policy_document.security-audit-policy-override.json
  role       = aws_iam_role.my_role.name
}

但是当我执行terraform apply 命令时出现以下错误:

Error: Error putting IAM role policy terraform-XXXXXXXXX: MalformedPolicyDocument: Policy document should not specify a principal.

那么,您知道如何覆盖现有的托管 AWS IAM 策略吗?

【问题讨论】:

  • 进展如何?是否仍然不清楚为什么您不能这样做?

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


【解决方案1】:

理论上,您可以这样做,但不能使用 SecurityAudit。这是因为此政策有超过 12000 个字符。但是用户管理的策略是limited to 6,144。

因此,您必须自己将SecurityAudit 拆分为两个或三个用户管理的策略。最好的方法是手动构建这些策略,或者大幅削减 SecurityAudit

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-04-29
    • 2017-12-13
    • 2019-02-06
    • 2022-01-19
    • 2011-05-11
    • 2011-06-19
    • 1970-01-01
    • 2020-09-17
    相关资源
    最近更新 更多