TerraformでSSM Parameter Storeを使った秘匿情報の安全管理方法

Terraform

✅ 概要

TerraformでAWSリソースを構築する際に、コード内に秘匿情報(APIキーやDBパスワードなど)を残さないようにすることは非常に重要です。

AWS環境では、こうした秘匿情報を SSM Parameter Store の SecureStringSecrets Manager に保存することで安全に管理できます。

この記事では、Terraformを使ってSSM Parameter Storeに秘匿情報を保存する方法を解説します。特に、コード上に秘匿情報を含めない設計方法に注目し、SEOを意識したキーワードで分かりやすく紹介します。


✅ SSM Parameter Storeを使った秘匿情報管理のポイント

  • コード上に秘匿情報を記載しない。
  • SSM Parameter Storeに設定後、AWSコンソールやCLIで値を変更する設計。
  • lifecycle ブロックを活用してTerraform管理から除外する。

✅ TerraformでのSSM Parameter Store定義方法

📌 コード例

locals {
  env = "dev"
  # Parameter Storeのデフォルト値
  default_value = "uninitialized"
}

# DatadogのAPI KEY
resource "aws_ssm_parameter" "datadog_api_key" {
  name        = upper("/${local.env}/datadog-api-key")
  description = "Terraform used Datadog API Key"
  type        = "SecureString"
  value       = local.default_value

  lifecycle {
    ignore_changes = [value]
  }
}

🔍 コードの解説

  1. localsブロックでデフォルト値を定義:
  • 秘匿情報をコード内に含めないために、uninitialized というダミー値を設定。
  1. aws_ssm_parameterリソースでSSM Parameter Storeを定義:
  • name は環境変数 (local.env) を使い階層化。
  • typeSecureString で暗号化を指定。
  • valuelocal.default_value を参照。
  1. lifecycle ブロックで value を無視設定:
  • この設定により、Terraform適用 (apply) 後に value を変更してもエラーが発生しない。

※個人的には、`__dummy__value__`みたいに直接valueに指定した方が見やすいケースがあります。


✅ TerraformでApplyを実行

以下のコマンドを実行してSSM Parameter Storeに値を適用します。

terraform apply -auto-approve
  • デフォルト値 (uninitialized) がAWS上に保存される。
  • 暗号化 (SecureString) が適用されていることを確認。

✅ 設定後の確認方法

🔍 マネージドコンソールで確認する場合

  1. AWS Management Console にアクセス。
  2. Systems Manager > Parameter Store を選択。
  3. 対象のパラメータを選択し「編集」から値を変更。

🔍 CLIで値を変更する場合

aws ssm put-parameter --name '/dev/datadog-api-key' \
    --type SecureString \
    --value '新しい値' \
    --overwrite

✅ この方法を使う理由

  • コード内に秘匿情報を保持しない: セキュリティリスクを大幅に軽減できる。
  • Terraformによる管理がシンプル: lifecycle ブロックで管理対象外にすることで、適用後に値を変更してもエラーを回避できる。
  • AWS SSM Parameter Storeの活用: AWS標準の暗号化機能を利用することで、安全に情報を保護できる。

✅ まとめ

TerraformでSSM Parameter Storeを使って秘匿情報を管理する方法について解説しました。この方法を利用することで、コード内にパスワードやAPIキーを直接記載せずに安全に管理することができます。

組織やプロジェクトに合わせてこの方法を取り入れ、安全なインフラ管理を実現しましょう。

タイトルとURLをコピーしました