【问题标题】:Terraform AWS Newrelic Integration with IAM RoleTerraform AWS Newrelic 与 IAM 角色的集成
【发布时间】:2020-10-31 01:52:03
【问题描述】:

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

  1. 转到 Infrastructure.newrelic.com > AWS。单击一个可用的服务磁贴开始。

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

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

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

我的要求是对 Terraform 脚本做同样的事情,我探索了 https://www.terraform.io/docs/providers/aws/r/iam_role.html,但找不到与上述步骤相同的相关选项(例如包含另一个 AWS 帐户)。

【问题讨论】:

  • 你们公司不允许在这里粘贴一些sn-ps吗?代码 sn-ps 有助于在此基础上进行修复。

标签: amazon-web-services terraform amazon-iam newrelic


【解决方案1】:

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
}

本质上,它创建了一个名为 NewRelicInfrastructure-Integrations 的角色,其中包含两个与之关联的 IAM 策略。

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

第二个策略将ReadOnlyAccess 授予代入角色。

【讨论】:

    猜你喜欢
    • 2018-11-10
    • 2016-08-27
    • 2018-12-24
    • 2021-05-17
    • 1970-01-01
    • 2019-03-14
    • 2021-02-03
    • 1970-01-01
    • 2018-01-15
    相关资源
    最近更新 更多