Tencent Cloud CVMのユーザーデータに含まれるAPIシークレット

インスタンスのユーザーデータに長期APIキーを含めないでください。

説明

user_dataやuser_data_rawにAPIシークレットを含めると、初期化データ、Terraformの状態、ログから漏えいする可能性があります。Base64エンコードはシークレットを暗号化しません。

想定される影響

キーを取得した人が、その認証情報で許可されたTencent Cloudリソースにアクセスするおそれがあります。

対処方法

長期キーを削除し、cam_role_nameで必要最小限の権限を持つロールを関連付けてください。アプリケーションはロールの一時認証情報を使うように構成し、漏えい済みのキーは失効させてください。

例

例のキーは説明用の値であり、実際の認証情報ではありません。変更後は作成済みのロールを関連付け、初期化スクリプトからキーを削除します。他のインスタンス設定は省略しています。

変更前

hcl
resource "tencentcloud_instance" "example" {
  instance_name = "cvm-postpaid"

  user_data = base64encode("#!/bin/sh\nexport TENCENTCLOUD_SECRET_ID=example-id; export TENCENTCLOUD_SECRET_KEY=example-key")
}

変更後

hcl
resource "tencentcloud_instance" "example" {
  instance_name = "cvm-postpaid"
  cam_role_name = "cvm-access-role"

  user_data = base64encode("#!/bin/sh\necho instance bootstrap")
}

参考資料