0

您好,我正在尝试在 Terraform 中添加 AWS Config。我已经像这样设置了以下策略附件:

resource aws_iam_policy policy {
    name = "test-policy"
    policy = <<POLICY
{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Action": [
        "config:PutEvaluations",
        "config:PutConfigRule",
        "config:DeleteConfigRule",
        "config:GetComplianceDetailsByConfigRule",
        "config:DescribeConfigRuleEvaluationStatus"
      ],
      "Effect": "Allow",
      "Resource": [
        "arn:aws:config:*:*:config-rule/aws-service-rule/*securityhub*"
      ]
    }
  ]
}
POLICY
}

我已验证 AWS 中的策略与上述策略附件相匹配。但是,当我在控制台中访问 AWS Config 服务时,我的每个配置规则都会出现以下错误:

Unable to perform config:PutEvaluations due to the lack of permissions on the role.

我在这个问题上没有找到任何好的资源。我一直在四处搜寻,但什么都没有出现。我只看到这篇文章:https ://aws.amazon.com/premiumsupport/knowledge-center/config-error-security-hub/ 。对此问题的任何帮助将不胜感激。作为参考,我将策略附加到 IAM 角色,如下所示:

resource aws_iam_role_policy_attachment "test-attach" {
    role = aws_iam_role.config.name
    policy_arn = aws_iam_policy.policy.arn
}

resource aws_iam_role config {
  name = "myconfig"

  assume_role_policy = <<POLICY
{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Action": "sts:AssumeRole",
      "Principal": {
        "Service": "config.amazonaws.com"
      },
      "Effect": "Allow",
      "Sid": ""
    }
  ]
}
POLICY
}
4

2 回答 2

1

config:PutEvaluations不幸的是,不能被资源限制。有关更多信息,请参阅有关 IAM 权限的 AWS 用户指南。该指南提到以下内容:

资源类型列指示每个操作是否支持资源级权限。如果此列没有值,则必须在Resource策略声明的元素中指定所有资源(“*”)。如果该列包含资源类型,则您可以在具有该操作的语句中指定该类型的 ARN。所需资源在表中标有星号 (*)。如果您在使用此操作的语句中指定资源级权限 ARN,则它必须属于此类型。一些操作支持多种资源类型。如果资源类型是可选的(未指明为必需),那么您可以选择使用其中一种而不使用另一种。

但是在PutEvaluations撰写本文时,该操作在该列中没有条目Resource types

正如上面引用中提到的,您需要将您的语句一分为二,其中一个不受资源限制的语句至少具有该操作,然后在一个可以适当限制的语句中的其他操作。

以下应该有效:

resource "aws_iam_policy" "policy" {
    name = "test-policy"
    policy = <<POLICY
{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Action": [
        "config:PutEvaluations"
      ],
      "Effect": "Allow",
      "Resource": [
        "*"
      ]
    },
    {
      "Action": [
        "config:PutConfigRule",
        "config:DeleteConfigRule",
        "config:GetComplianceDetailsByConfigRule",
        "config:DescribeConfigRuleEvaluationStatus"
      ],
      "Effect": "Allow",
      "Resource": [
        "arn:aws:config:*:*:config-rule/aws-service-rule/*securityhub*"
      ]
    }
  ]
}
POLICY
}
于 2020-11-23T16:42:03.240 回答
0

我能够解决我自己的问题

resource aws_iam_role_policy_attachment "test-attach" {
    role = aws_iam_role.config.name
    policy_arn = "arn:aws:iam::aws:policy/service-role/AWSConfigRole"
}

我使用 IAM 角色策略中列出的策略来获取本文档中的配置详细信息https://docs.aws.amazon.com/config/latest/developerguide/iamrole-permissions.html

于 2020-11-23T16:49:30.370 回答