sensitiveなデータベース認証情報変数を定義する
sensitiveフラグ、長さバリデーション、シークレットにデフォルト値なしのTerraformデータベースユーザー名とパスワード変数を作成します。
Common Patterns
詳細な説明
データベース認証情報変数
データベース認証情報はTerraformのsensitive変数の最も一般的な例です。プラン出力、ステートファイル、ログでの漏洩を防ぐために特別な処理が必要です。
変数定義
variable "db_username" {
type = string
description = "Master username for the database"
validation {
condition = length(var.db_username) >= 3 && length(var.db_username) <= 63
error_message = "Database username must be between 3 and 63 characters."
}
}
variable "db_password" {
type = string
description = "Master password for the database"
sensitive = true
validation {
condition = length(var.db_password) >= 8
error_message = "Database password must be at least 8 characters."
}
}
主な設計判断
- パスワードにデフォルトなし: sensitive値にはコード内でデフォルトを設定すべきではない
- ユーザー名にもデフォルトなし: 汎用的なadmin名の偶発的な使用を回避
- パスワードに**
sensitive = true**: CLI出力から値を削除 - 長さバリデーション: AWSが拒否する前に明らかに間違った値を検出
安全な値の提供方法
オプション1: tfvarsファイル(gitignore済み)
# secrets.tfvars(gitにコミットしない)
db_username = "app_admin"
db_password = "SuperSecretP@ssw0rd!"
オプション2: 環境変数
export TF_VAR_db_username="app_admin"
export TF_VAR_db_password="SuperSecretP@ssw0rd!"
ユースケース
認証情報を安全に渡し、ソースにハードコードせず、Terraform CLI出力から削除する必要があるRDS、Aurora、またはデータベースモジュール。