GCP HTTPS Load Balancer
GCP の HTTPS LB は custom request header 機能で
{client_ja4_fingerprint} という template variable をヘッダーの値に埋め込めば、
LB が JA4 を計算してヘッダーに展開します。GCP の custom header 機能はクライアントの送信値を
必ず上書きするので、偽装の心配はありません。
手順 1: backend service を編集 (Console)
Google Cloud Console から:
- 左メニュー → Network Services → Load balancing
- 該当の LB をクリック → Edit
- Backend configuration → 該当の backend service → ✏️ 鉛筆アイコンで編集
- Advanced configurations 展開 → Custom request headers に
+ ADD HEADER
- Header に
X-Client-JA4:{client_ja4_fingerprint} を入力
- Save → Update で完了
[ Screenshot: GCP Console > Load balancing > Edit backend > Custom request headers ]
手順 2: gcloud CLI で同じことをする
# existing backend service の custom header を 1 行追加 (既存 header は維持されない上書きなので注意).
gcloud compute backend-services update YOUR_BACKEND_SERVICE \
--global \
--custom-request-header="X-Client-JA4:{client_ja4_fingerprint}"
※ --custom-request-header を複数回指定すると最後の 1 つだけが残る (既存とまとめたい
場合は全ヘッダーを一度に指定する)。確認は gcloud compute backend-services describe YOUR_BACKEND_SERVICE --global。
手順 3: 動作確認
nginx + unmask が動いているホストで:
curl -sI https://your-domain/unmask/healthz \
| grep -i x-client-ja4 # LB が転送する header. backend で見える
# または unmask admin の stats tab → JA4 verdict 分布が non-empty に
偽装防止: GCP の --custom-request-header はクライアントの送信値を無条件で上書きします。クライアントが X-Client-JA4 を直接 nginx に投げても、LB を経由した時点で消されます。さらに、nginx を LB 経由 (35.191.0.0/16, 130.211.0.0/22, 35.227.0.0/16 等) のみ受け入れるファイアウォール (GCP VPC firewall rule) で多重に防御することを推奨します。