説明
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")
}