概要
Google Cloud で reCAPTCHA Enterprise を気軽に実装出来る記事を読んだので試してみました ( 2022/1 時点では pre-GA ( Preview ) の機能です )
- 元記事 ( 日本語翻訳 Ver )
- 実際にやってみた Gif
注意点
この記事の内容は 2022/1 時点での情報になります ( 読んでいる時点では最新の情報では無い可能性があり、記事の内容と実際の仕様が変更している可能性があります )
また Cloud Armor を使った実装なので、 PATH 単位で reCAPTCHA をつけることになります ( よくある 特定の場所をクリックしたら reCAPTCHA が起動する
では無いです )
この reCAPTCHA Enterprise は Google Cloud 以外にデプロイしているアプリケーションでも使用出来るようです
詳細: reCAPTCHA Enterprise のセットアップ方法の選択
準備
GCLB を使った Web アプリを用意しておきます
以下のハンズオンを利用して以下のような Web アプリを事前に用意しておきました
Hands On Serverless Network Endpoint Group
公式ドキュメント
この記事の操作などは以下の公式ドキュメントを参考にして実行しています
環境変数を用意しておく
- Web アプリを作成時に使用した環境変数を設定しておきます
export _gcp_pj_id='Your GCP Project ID' export _common='check-serverless-neg' export _region='asia-northeast1'
API の有効化
gcloud beta services enable recaptchaenterprise.googleapis.com --project ${_gcp_pj_id}
- 有効化出来ているかの確認します
gcloud services list --enabled --project ${_gcp_pj_id} | grep recaptchaenterprise
Cloud Armor とそのルールを作成
- Cloud Armor を作成します
gcloud beta compute security-policies create ${_common} --project ${_gcp_pj_id}
- Cloud Armor 内のルールを作成します
gcloud beta compute security-policies rules create 1000 \ --security-policy ${_common} \ --expression "request.path.matches('/app')" \ --action redirect \ --redirect-type google-recaptcha \ --project ${_gcp_pj_id}
- ルールの確認します
- ローカルに吐き出します
gcloud beta compute security-policies export ${_common} --file-name=${_common}.json --file-format=json --project ${_gcp_pj_id} cat ${_common}.json
Cloud Armror をアタッチ
- App Engine 用の Backend Service
check-serverless-neg-backend-service-app
に Cloud Armor を設定します
gcloud compute backend-services update check-serverless-neg-backend-service-app \ --security-policy ${_common} \ --global \ --project ${_gcp_pj_id}
---> 設定はこれで完了です :)
Web ブラウザで確認する
ブラウザにて
- TOP ページ (
/
) を確認 - Functions の URL (
/func
) を確認 - Cloud Run の URL (
/run
) を確認 - App Engine の URL (
/app
) を確認 ---> reCAPTCHA Enterprise にリダイレクトしてリクエストを評価する - Cloud Run の URL (
/run
) を確認 - App Engine の URL (
/app
) を確認 ---> 先程 reCAPTCHA でリクエストを評価しているので次は直ぐに表示される
---> 意図した通りに実装することが出来ました :)
まとめ
Cloud Armor のルール 1つ追加するだけで、自分のサイトに reCAPTCHA を実装することが出来ました :)
他にも reCAPTCHA Enterprise を実装する方法があるので、自分のサイトに reCAPTCHA を設定したいと考えた場合は是非検討してみてください ;)
Have fan !! :)