機密情報は必ず暗号化して*.tfvars.jsonに記述する
ルール
*Always encrypt sensitive information when writing to .tfvars.json.enc
(機密情報は必ず暗号化して*.tfvars.json.encに記述する)
解説
APIキーやパスワード、秘密鍵などの機密情報を平文でリポジトリに保存するのはたとえPrivateリポジトリであっても絶対厳禁です。保存自体を避けられるなら避け、避けられないとしても必ず暗号化します。当然ハードコーディングもNGです。
暗号化にはsopsを用います。json形式なら部分的な暗号化も可能なためGitでの管理が容易です。KMSでも暗号化は可能ですが、ファイル全体を暗号化するため差分管理をGithub上で行うことができなくなり不便です。
ただし、ローカルで復号するとうっかりCursorで開くだけで潜在的にアウトです。暗号化するだけでなく、復号用の鍵と復号した後のデータからAIを隔離しなければいけません。
サンプルコード
// terraform.tfvars.json (sopsで暗号化前)
{
"db_password": "ENC[AES256_GCM,data:xxx...]",
"api_key": "ENC[AES256_GCM,data:yyy...]",
"project": "practitioner"
}
# sopsで暗号化
sops -e terraform.tfvars.json > terraform.tfvars.json.enc
# sopsで復号化してterraform実行
sops exec-file terraform.tfvars.json.enc 'terraform apply -var-file={}'
参考リンク
Show Text to Share機密情報は必ず暗号化して*.tfvars.jsonに記述する https://www.tricrow.com/infrastructure/development-guidline/repository_structure.standard.tfvars_secure.html

