Terraform AWS Newrelic 与 IAM 角色集成

Zes*_*r07 2 amazon-web-services newrelic amazon-iam terraform

我的要求是将我们的 AWS 帐户与 NewRelic 与 Terraform 集成,我能够使用控制台访问将 AWS 帐户与 NewRelic 链接,作为先决条件,我需要创建 IAM 角色,并在 New-Relic 帐户中包含可信实体,请执行以下步骤下面列出

  1. 转至基础设施.newrelic.com > AWS。单击可用的服务图块之一即可开始。

  2. 在 IAM 控制台中,单击创建角色,然后单击另一个 AWS 账户。

  3. 对于帐户 ID,请使用 7XXXXXXXXXX。选中需要外部 ID 框。对于外部 ID,输入您的 New Relic 帐户 ID。

  4. 请勿启用“需要 MFA”(多重身份验证)的设置。附加策略:搜索 ReadOnlyAccess,选中名为 ReadOnlyAccess 的策略的复选框,然后单击下一步:查看。或者,您可以创建自己的托管策略,并根据您要监控的 AWS 服务限制授予 New Relic 的权限。对于角色名称,输入 NewRelicInfrastruct-Integrations,然后单击创建角色。

我的要求是对 Terraform 脚本执行相同的操作,我探索了 https://www.terraform.io/docs/providers/aws/r/iam_role.html,但无法找到一些与上面列出的步骤相同的相关选项(例如包含另一个 AWS 帐户)。

jas*_*lsh 6

Terraform 提供了一个aws_iam_policy_document可能有用的数据源。我相信以下配置可以帮助您:

data "aws_iam_policy_document" "assume_role" {
  statement {
    actions = [
      "sts:AssumeRole"
    ]

    condition {
      test = "StringEquals"

      values = [
        "New Relic Account ID"
      ]

      variable = "sts:ExternalId"
    }

    effect = "Allow"

    principals {
      identifiers = [
        "7XXXXXXXXXX"
      ]

      type = "AWS"
    }
  }
}

resource "aws_iam_role" "new_relic" {
  assume_role_policy = data.aws_iam_policy_document.assume_role.json
  name               = "NewRelicInfrastructure-Integrations"
}

resource "aws_iam_role_policy_attachment" "read_only_access" {
  policy_arn = "arn:aws:iam::aws:policy/ReadOnlyAccess"
  role       = aws_iam_role.new_relic.name
}
Run Code Online (Sandbox Code Playgroud)

NewRelicInfrastructure-Integrations本质上,它创建一个以两个与其关联的 IAM 策略命名的角色。

第一个策略允许调用该sts:AssumeRole操作并验证该操作是否ExternalId与 New Relic 帐户 ID 匹配。

第二个策略授予ReadOnlyAccess所承担的角色。