gpt4 book ai didi

amazon-web-services - Terraform 和 AWS : modify an existing policy

转载 作者:行者123 更新时间:2023-12-03 21:54:11 25 4
gpt4 key购买 nike

我有一个附加到角色的现有 IAM 策略。每次在 Secrets Manager 中创建新 key 时,我都需要将新 ARN 附加到策略中。这可以用 Terraform 完成吗?我已设法将策略导入 terraform.state 文件,但我不知道如何:
1) 在“资源”列表中添加一个新的 ARN
2) 将更改推送到 AWS

这是该政策现在的样子:

{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": "secretsmanager:GetSecretValue",
"Resource": [
"SECRET_ARN_1",
"SECRET_ARN_2",
"SECRET_ARN_3"
]
},
{
"Effect": "Allow",
"Action": "kms:Decrypt",
"Resource": "KMS_ARN"
}
]

}

这就是我需要它的样子:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": "secretsmanager:GetSecretValue",
"Resource": [
"SECRET_ARN_1",
"SECRET_ARN_2",
"SECRET_ARN_3",
"MY_BRAND_NEW_SECRET_ARN"
]
},
{
"Effect": "Allow",
"Action": "kms:Decrypt",
"Resource": "KMS_ARN"
}
]

}

以下导入通过将现有策略导入对象 aws_iam_policy.mysimplepolicy 来工作,但我不知道如何从这里开始。
terraform import aws_iam_policy.mysimplepolicy <MY_POLICY_ARN>

最佳答案

听起来您已经知道如何将政策导入您的州。现在您需要在 Terraform 代码中定义资源,使其与策略匹配。

首先,为 ARN 定义变量:

variable "secret_arns" {
description = "A list of secret manager ARNs that the IAM policy should permit access to."
type = list(string)
}

variable "kms_key_arns" {
description = "A list of KMS Key ARNs that the IAM policy should permit access to."
type = list(string)
}

接下来,使用以下变量将策略文档定义为数据源:
data "aws_iam_policy_document" "secret_access" {
statement {
sid = "SecretsAccess"
actions = ["secretsmanager:GetSecretValue"]
resources = var.secret_arns
effect = "Allow"
}
statement {
sid = "KMSAccess"
actions = "kms:Decrypt"
resources = var.kms_key_arns
effect = "Allow"
}
}

现在使用数据源创建一个策略:
resource "aws_iam_policy" "mysimplepolicy" {
name = "MySimplePolicy" # Make sure this has the name you want
policy = data.aws_iam_policy_document.secret_access.json
}

最后,当您调用代码时,使用您喜欢的任何方法在变量中传递 ARN。它可能来自 terraform.tfvars文件或在命令行上使用 -var语法或作为另一个创建 secret 的 Terraform 模块的输出。例如:
terraform apply -var='secret_arns=["arn1", "arn2", <etc>]' -var='kms_key_arns=["key-arn1", "key-arn2"]'

每次将新项目附加到变量之一并运行 terraform apply 时, Terraform 将相应地更新策略。

关于amazon-web-services - Terraform 和 AWS : modify an existing policy,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62087332/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com