我的要求是将我们的AWS帐户与NewRelic与Terraform集成在一起,我能够使用控制台访问将AWS帐户与NewRelic链接,作为前提条件,我需要创建IAM角色,并在其中包含带有New-Relic帐户的受信任实体,请按照下面列出的步骤
转至Infrastructure.newrelic.com> AWS。单击可用的服务图块之一开始。
在IAM控制台中,单击“创建角色”,然后单击“另一个AWS帐户”。
对于帐户ID,请使用7XXXXXXXXXX。 选中需要外部ID框。 对于“外部ID”,请输入您的“新遗物”帐户ID。
请勿启用要求MFA(多因素身份验证)的设置。 附加策略:搜索ReadOnlyAccess,选中名为ReadOnlyAccess的策略复选框,然后单击“下一步:查看”。或者,您可以创建自己的托管策略,并根据要监视的AWS服务来限制授予New Relic的权限。 对于角色名称,输入NewRelicInfrastructure-Integrations,然后单击创建角色。
我的要求是对Terraform Script进行同样的操作 https://www.terraform.io/docs/providers/aws/r/iam_role.html,但找不到一些与上述步骤相同的相关选项(例如,包含另一个AWS帐户)。
答案 0 :(得分:2)
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
与新的旧帐户ID相匹配。
第二个策略将ReadOnlyAccess
授予假定的角色。