reCAPTCHA ClassicをGCPに移行してみた(請求先アカウント設定なしで)

テクノロジー

けさ、Google Cloud Platformから、
[推奨処理] 2025 年末までに reCAPTCHA キーを Google Cloud プロジェクトに移行してください
というメールが来た。

実は1/29に、英語で同文面のメールが来ていた。
本文はほぼほぼ英語だったけど、一番最初に日本語で

お客様のアカウントで指定されている言語への翻訳が完了次第、このメールの翻訳版をお送りいたします。1~2 週間お時間をいただきますが、今しばらくお待ちくださいますようお願い申し上げます。

と書いてあったので、それの翻訳版がやってきたということで。

つまりどうなるの?(まとめ)

メールの内容を要約するとこうなる。

  • 現行のGoogle reCAPTCHA (reCAPTCHA Classicと呼ぶ)は、2025年末で無くなる
  • 代わりにGoogle Cloud (=GoogleCloudPlatform、GCP)でreCAPTCHAを提供しはじめた
  • なので引っ越してね
  • reCAPTCHAのサイトキーやシークレットキーとかは変わらないよ
  • 今年中にGoogleが勝手に引っ越すけど、望むなら先に手動で引っ越してもいいよ

で、引っ越すメリットが、

  • 自動引っ越しだとGoogle Cloud側の「プロジェクト」を自動で作っちゃうよ
  • 手動引っ越しだと「プロジェクト」の指定も自由だよ

GCPは「プロジェクト」単位に分割してサービスを管理できる(MAX10個)ので、
望む名前をつけるとか、既に使っているプロジェクトがあるなら、
手動で紐づけるのが無難っぽそう。

ところでメールや移行ガイドを読むと、課金が云々書いてあるように見える。
無料でいいんだけどなー。

ということで、この手順ではクレカ登録なしで突破する手順を紹介します。

途中まで、クレカ登録あり版もなし版も同じです。

引っ越してみた

なお、公式手順はこちらです。

reCAPTCHA Classic から移行する  |  reCAPTCHA Enterprise  |  Google Cloud

ここからは公式手順を参考に、実際に進めたスクリーンショットつきでどうぞ。

GCPの準備

まず、Google Cloud コンソールにログインします。

Google Cloud Platform
Google Cloud Platform lets you build, deploy, and scale applications, websites, and services on the same infrastructure ...

プロジェクトを作成または選択 をクリックして、プロジェクトを作成または選択します。

今回は既にあるプロジェクトとは別に、プロジェクトを作りました。

reCAPTCHA Enterpriseを使う設定

「reCAPTCHA Enterprise API」のページを開いて有効にします。

これは有効にした後。

IAM設定

APIへのアクセスを有効化にするページを開いて、

有効にする。

GCPのIAMページを開いて、

プリンシパルを編集するエンピツアイコンを押して、

+別のロールを追加 を押して、

roles/editor (編集者) と、

roles/recaptchaenterprise.admin (reCAPTCHA Enterprise 管理者) を追加する。

ここまでできたら、「保存」を押す。

ロールが増えていればOK。

引っ越し作業(Google Cloudコンソール編?)

この記事を一通り書き終えてから、ふと気づきました。

コマンドを使わなくても、コンソール(サイト上)から実行できるじゃん!!!

Google CloudのreCAPTCHAのページを開きます。

選んでいるプロジェクトが正しいこと(上の方の赤い四角)を確認してから、

たぶん一番下(下の方の矢印の先)に「クラシック キー」的な節があるので、
そこにある「アップグレード」ボタンを押す。

…と、どうなるかは残念ながらもはや確認できず。

請求先アカウントが既に紐づけられているなら、おそらくそれだけで作業完了です。

請求先アカウントを紐づけなくても登録できるかは不明です。ゴメンナサイ!

もしダメだったら、次に進んでください。

gcloud CLIの設定

ここから、もともと書いていた手順。

コマンドで実行する場合、gcloud CLIをインストールします。

gcloud CLI をインストールする  |  Google Cloud CLI Documentation

特にデフォルトから何も変えずにインストールしてみた。

gcloud init は必須らしいので、チェックを付けてFinishする。
(たぶんチェックを入れ忘れたら、PowerShellとかで打てばいいんだとと思う)

サインインしろと言われたのでYを入力して、

いつものウィンドウで認証する。

プロジェクトが複数ある場合、どれにする?と聞いてくるので、
今回使うものを選ぶ。(今回は2を選択)

なんか色々言われたが、たぶん大丈夫なので無視しておく。

引っ越し作業(コマンドライン編)

現行のreCAPTCHA Classicの管理画面を開く。

引っ越すキーを選択した状態で、歯車ボタンを押す。

「reCAPTCHAのキー」を押して、

「サイトキーをコピーする」を押さえておく。

あと、Google Cloudコンソールのトップ画面で、

プロジェクト番号を控えておく。

そして、Windowsなので、PowerShellで以下コマンドを叩く。
※PROJECT_ID を、上の「プロジェクト番号」に置き換える。
※SITE_KEY を、上の「サイトキーをコピーする」のサイトキーに置き換える。

請求先アカウント設定なし版なので、公式の案内と比べて-Bodyの設定を付け加えています
請求先アカウント未設定状態でBodyがないとエラーになります。
curlの場合、おそらく-d "skip_billing_check=true" を設定すればOKだと思います。

$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }

Invoke-WebRequest `
    -Method POST `
    -Headers $headers `
    -Body @{skip_billing_check="true"} `
    -Uri "https://recaptchaenterprise.googleapis.com/v1/projects/PROJECT_ID/keys/SITE_KEY:migrate" | Select-Object -Expand Content

エラーが出なければ、これで完了。

reCAPTCHA Classicの管理画面で、

ここにGoogleCloudのアイコンが出ていれば移植完了です。

なぜこれで請求先アカウントなしで突破できるのか?

請求先に紐づけがない状態で公式手順を進めていると、↓のエラーが出ている。
(PowerShellでは400エラーが出たことは分かるが、具体的に何のエラーかが分からない…)

No billing account is linked to your GCP project. A billing is not mandatory for migrating. But any request above the free quota will return an error (see https://cloud.google.com/recaptcha-enterprise/quotas). If you still want to proceed, confirm by setting the skip_billing_check field to true.

請求アカウントがないぞと。
移行に課金は必須ではないけれど、無料枠を超えるとエラーを返すぞ、と。
それでもいいなら、skip_billing_checkフィールドをtrueにしてやりなおせ、と。

そのように書いてあるから、その通りにやったら通りました。
やったぜ。

私の使い方だと無料枠内に余裕で収まるので、クレカ登録したくなかったんですよね。
迂回できてよかったです。

あとがき

ちなみに念のためクレカを登録する場合(請求先を紐づける場合)は、
プロジェクトの課金管理画面を開いて設定します。

もしもアカウント(プロジェクトを作った自分自身のアカウント)に請求先アカウントが登録されていなければ、
誘導に従って請求先アカウントを作りましょう。

Googleアカウントに紐づけている支払い手段をGCPに紐づける手続きに進みます。
紐づけると、(AWSでもあるけど)登録後一定日数は無料で使えますというのがアンロックされてしまうので、
自分は今は設定せずに使おうと思います。


3つほど移行をしたのですが、
…コンソールで操作できるって知ってたら、1つぐらいはコンソールから試したのにー。

悔しいですが、「請求先アカウント設定なしで」「コンソールから」アップグレードできるのかは、
ご自身の目でたしかみてみろください。

コメント

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