通过 Terraform 创建的用户的轮换密钥

问题描述 投票:0回答:3

我有一个由 Terraform 创建的 IAM 用户。密钥存储在 Hashicrop Vault 中,应用程序从那里读取它们。

我已经开发了 ansible 代码/bash 脚本来成功地定期轮换密钥。

但问题是 terraform 不喜欢旋转按键。每当我们尝试运行 terraform 时,它都会尝试重新创建密钥

有什么方法可以通过 terraform 管理密钥轮换吗?或者我们可以在地形中忽略这一点吗?任何有关示例的帮助都会非常有帮助。

amazon-web-services terraform amazon-iam terraform-provider-aws
3个回答
12
投票

terraform 中的密钥轮换可以通过使用

terraform apply -replace=<resource address>
来实现,它会立即替换资源,或者使用
terraform taint <resource address>
来替换下一次申请 v0.15.2 以下版本时的资源。请参阅 https://www.terraform.io/docs/cli/commands/taint.html 了解更多信息。

使用这些命令时,将要替换的资源的生命周期设置为

create_before_destroy
以避免停机是有意义的。所以对于 AWS 访问密钥来说,那就是

resource "aws_iam_access_key" "my_user" {
  user = "my_user_name"
  lifecycle {
    create_before_destroy = true
  }
}

鉴于此配置,人们可以简单地运行

terraform apply -replace=aws_iam_access_key.my_user
来旋转密钥。只需确保使用密钥的下游应用程序注意到更改,并在必要时重新启动以使用新密钥。


2
投票

我们通过在创建用户时最初通过 terraform 删除密钥生成来解决该问题。

我们现在使用一些 ansible 和 bash 脚本来生成和轮换密钥,然后使用 Vault API 来更新 Vault 中的机密。


0
投票

请参阅此处使用replace_triggered_by

https://github.com/hashicorp/terraform-provider-aws/issues/23180

© www.soinside.com 2019 - 2024. All rights reserved.