Terraform AWS Newrelic 与 IAM 角色的集成
Terraform AWS Newrelic Integration with IAM Role
我的要求是将我们的 AWS 帐户与带有 Terraform 的 NewRelic 集成,我能够 link 使用控制台访问将 AWS 帐户与 NewRelic 集成,作为先决条件,我需要创建包含受信任的 IAM 角色具有 New-Relic 帐户的实体,按照下面列出的步骤
转到 infrastructure.newrelic.com > AWS。单击可用服务磁贴之一开始。
在 IAM 控制台中,点击创建角色,然后点击另一个 AWS 账户。
对于帐户 ID,请使用 7XXXXXXXXXX。
选中需要外部 ID 框。
对于外部 ID,输入您的 New Relic 帐户 ID。
不要启用需要 MFA(多重身份验证)的设置。
附加策略:搜索 ReadOnlyAccess,select 名为 ReadOnlyAccess 的策略的复选框,然后单击下一步:查看。或者,您可以创建自己的托管策略并根据您要监控的 AWS 服务限制您授予 New Relic 的权限。
对于角色名称,输入 NewRelicInfrastructure-Integrations,然后单击创建角色。
我的要求是对 Terraform Script 做同样的事情,我探索了
https://www.terraform.io/docs/providers/aws/r/iam_role.html,但无法找到一些可以与上面列出的步骤(如包含另一个 AWS 帐户)相同的相关选项。
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
给承担的角色。
一个使用模块的例子iam-assumable-role
module "newrelic" {
source = "terraform-aws-modules/iam/aws//modules/iam-assumable-role"
trusted_role_arns = [
"arn:aws:iam::XXXXXXXXXXXX:root"
]
create_role = true
role_name = "newrelic"
role_sts_externalid = XXXXXXX
role_requires_mfa = false
custom_role_policy_arns = [
"arn:aws:iam::aws:policy/ReadOnlyAccess"
]
}
我的要求是将我们的 AWS 帐户与带有 Terraform 的 NewRelic 集成,我能够 link 使用控制台访问将 AWS 帐户与 NewRelic 集成,作为先决条件,我需要创建包含受信任的 IAM 角色具有 New-Relic 帐户的实体,按照下面列出的步骤
转到 infrastructure.newrelic.com > AWS。单击可用服务磁贴之一开始。
在 IAM 控制台中,点击创建角色,然后点击另一个 AWS 账户。
对于帐户 ID,请使用 7XXXXXXXXXX。 选中需要外部 ID 框。 对于外部 ID,输入您的 New Relic 帐户 ID。
不要启用需要 MFA(多重身份验证)的设置。 附加策略:搜索 ReadOnlyAccess,select 名为 ReadOnlyAccess 的策略的复选框,然后单击下一步:查看。或者,您可以创建自己的托管策略并根据您要监控的 AWS 服务限制您授予 New Relic 的权限。 对于角色名称,输入 NewRelicInfrastructure-Integrations,然后单击创建角色。
我的要求是对 Terraform Script 做同样的事情,我探索了 https://www.terraform.io/docs/providers/aws/r/iam_role.html,但无法找到一些可以与上面列出的步骤(如包含另一个 AWS 帐户)相同的相关选项。
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
给承担的角色。
一个使用模块的例子iam-assumable-role
module "newrelic" {
source = "terraform-aws-modules/iam/aws//modules/iam-assumable-role"
trusted_role_arns = [
"arn:aws:iam::XXXXXXXXXXXX:root"
]
create_role = true
role_name = "newrelic"
role_sts_externalid = XXXXXXX
role_requires_mfa = false
custom_role_policy_arns = [
"arn:aws:iam::aws:policy/ReadOnlyAccess"
]
}