You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用Terraform在AWS EC2中隐藏数据库用户名与密码?

隐藏Terraform dev.tfvars中敏感信息的方法

1. 使用环境变量传递敏感值

直接通过环境变量传递敏感数据,避免写入tfvars文件。Terraform会自动识别TF_VAR_前缀的环境变量并映射到对应变量:

  • 在Linux/macOS终端设置环境变量:
    export TF_VAR_db_password="admin123"
    export TF_VAR_db_username="admin"
    
  • 修改dev.tfvars引用变量(需提前在variables.tf中定义这些变量):
    ssm_values = {
      db_password = var.db_password
      db_name     = "tfdb"
      db_username = var.db_username
    }
    
  • 在variables.tf中标记变量为敏感,防止Terraform输出明文:
    variable "db_password" {
      type      = string
      sensitive = true
    }
    
    variable "db_username" {
      type      = string
      sensitive = true
    }
    

2. 借助AWS Secrets Manager存储敏感值

利用AWS Secrets Manager存储数据库凭证,Terraform通过数据源直接读取,无需本地保存明文:

  • 先在AWS Secrets Manager中创建包含db_password、db_username的密钥
  • 在Terraform配置中添加数据源:
    data "aws_secretsmanager_secret_version" "db_creds" {
      secret_id = "你的密钥名称"
    }
    
    locals {
      db_creds = jsondecode(data.aws_secretsmanager_secret_version.db_creds.secret_string)
    }
    
  • 修改dev.tfvars引用本地变量:
    ssm_values = {
      db_password = local.db_creds.db_password
      db_name     = "tfdb"
      db_username = local.db_creds.db_username
    }
    

3. 加密敏感的tfvars文件

方法1:Terraform内置加密

执行命令加密dev.tfvars:

terraform encrypt dev.tfvars

加密后生成dev.tfvars.encrypted文件,后续使用时指定该文件即可:

terraform apply -var-file=dev.tfvars.encrypted

方法2:git-crypt加密(适用于Git仓库)

如果需要将文件提交到Git仓库,用git-crypt对敏感文件加密:

  • 在.gitattributes中添加加密规则:
    dev.tfvars filter=git-crypt diff=git-crypt
    
  • 初始化加密:
    git-crypt init
    
  • 只有持有密钥的用户能解密文件,防止仓库泄露敏感信息。

4. 标记变量为敏感并命令行传值

在变量定义中设置sensitive = true,Terraform不会在日志、输出或状态文件中显示明文:

  • 在variables.tf中定义:
    variable "ssm_values" {
      type = object({
        db_password = string
        db_name     = string
        db_username = string
      })
      sensitive = true
    }
    
  • 执行terraform apply时通过命令行传入敏感值:
    terraform apply -var-file=dev.tfvars -var 'ssm_values.db_password=admin123'
    
    这种方式避免在tfvars中写入明文密码。

内容的提问来源于stack exchange,提问作者Uschcode

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.03 18:05:48