繁体   English   中英

Terraform 和 AWS 机密

[英]Terraform and AWS secrets

我一定遗漏了一些关于如何通过 Terraform 访问 AWS 机密的信息。这是我正在努力解决的场景:

  • 我创建了一个名为“infra_user”的 IAM 用户,为该用户创建 ID 和秘密访问密钥,以纯文本格式下载这些值。

  • “infra_user”将用于通过 terraform 进行身份验证以配置资源,比方说 S3 和 EC2 实例。

  • 为了保护“infra_user”的 ID 和密钥,我将它们存储在 AWS secrets manager 中。

  • 为了在我的 terraform 脚本中使用“infra_user”进行身份验证,我需要通过以下块检索机密:

     data "aws_secretsmanager_secret" "arn" { arn = "arn:aws:secretsmanager:us-east-1:123456789012:secret:example-123456" }

但是,即使在我的脚本中使用数据块并检索机密,在我声明任何资源之前,我不需要在我的提供程序块中以其他方式向 AWS 进行身份验证吗? 如果我创建另一个用户,比如“tf_user”,只是为了检索秘密,我应该将“tf_user”的访问密钥存储在哪里? 如何避免这种循环身份验证循环?

Terraform AWS 提供商文档有一个关于身份验证和配置的部分,并列出了提供商如何发现要使用的凭证的优先顺序。 您可以选择最适合您的用例的方法。

例如,一种(不安全的)方法是直接在提供程序中设置凭据:

provider "aws" {
  region     = "us-west-2"
  access_key = "my-access-key"
  secret_key = "my-secret-key"
}

或者,您可以在 shell 中设置环境变量:

export AWS_ACCESS_KEY_ID="my-access-key"
export AWS_SECRET_ACCESS_KEY="my-secret-key"
export AWS_DEFAULT_REGION="us-west-2"

现在您的提供程序块简化为:

provider "aws" {}

当您运行terraform命令时,它将自动使用您环境中的凭据。

或者作为另一种选择,您可以将凭证存储在配置文件配置文件中,并通过设置AWS_PROFILE环境变量来选择要使用的配置文件。

身份验证比乍看起来更复杂和可配置,所以我鼓励您阅读文档。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM