機密情報は必ず暗号化して*.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
この記事を書いた人
T.Nakamura
T.Nakamura
AIが大好きなクラウドエンジニア。IT業界歴10年以上。標準化と効率化を追求している。技術ネタを発信中。フォローお気軽にどうぞ!フォローはこちら

カテゴリ

タグ