Terraform覆盖AWS管理的策略



我的请求看起来很简单,但我无法用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政策吗?

理论上,您可以做到这一点,但SecurityAudit不能做到。这是因为此策略有超过12000个字符。但用户管理的策略仅限于6144。

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

相关内容

  • 没有找到相关文章

最新更新