本日は、OpenResty Edge でアプリケーションに hCaptcha サービスを設定する方法をご紹介いたします。hCaptcha は、ウェブサイトをマルウェア、自動化スクリプト、スパム攻撃から保護するためのサードパーティサービスです。

Embeded image

OpenResty Edge で hCaptcha を設定する

いつものように、OpenResty Edge の Admin Web コンソールにアクセスしましょう。これは私たちのコンソールのサンプルデプロイメントです。各ユーザーは独自のローカルデプロイメントを持っています。

スクリーンショット

アプリケーションで hCaptcha を有効にする前に、hCaptcha の Sitekey と Secret key を設定する必要があります。

スクリーンショット

グローバル設定ページに移動します。

スクリーンショット

CAPTCHA 設定ページに進みます。

スクリーンショット

hCaptcha の Sitekey と Secret key は、hCaptcha の公式ウェブサイトから取得する必要があります。

Screenshot

hCaptcha の公式ウェブサイトにアクセスしてログインまたは登録します。

埋め込み画像

次に、ウェブサイトページに進み、Sitekey リストを確認します。Sitekey 設定ページに移動します。

埋め込み画像

ここで Sitekey の詳細情報を取得できます。

埋め込み画像

次に、設定ページに移動して Secret key を確認します。

埋め込み画像

ここで Secret key を取得できます。

Embeded image

hCaptcha ウェブサイトから取得した Sitekey と Secret key を入力します。

スクリーンショット

保存をクリックします。

スクリーンショット

これで hCaptcha の Sitekey と Secret key が設定されました。

スクリーンショット

次に、アプリケーションに hCaptcha を設定しましょう。

Screenshot

引き続き test-edge.com ドメインを使用して、hCaptcha の設定方法をデモンストレーションします。

スクリーンショット

このアプリケーションに進みます。

スクリーンショット

前回のチュートリアルで、すでにアップストリームを定義しています。

スクリーンショット

この my_backend アップストリームは、バックエンドサーバーを定義しています。

スクリーンショット

また、ページルールも定義済みです。

Screenshot

前回のチュートリアルでは、このページルールで先ほど確認したアップストリームへのリバースプロキシを設定しました。

スクリーンショット

では、hCaptcha アクションを有効にする新しいページルールを追加しましょう。

スクリーンショット

このルールには条件を設定していないことに注意してください。これは、このルールが無条件にトリガーされることを意味します。

スクリーンショット

新しいアクションを追加します。

スクリーンショット

「Enable hCaptcha」アクションを検索します。

スクリーンショット

「Enable hCaptcha」オプションを選択します。

Screenshot

クライアントが CAPTCHA 検証を通過した後、OpenResty Edge は指定された期間内に同じクライアントからのすべてのリクエストを許可します。この期間は clearance time と呼ばれます。hCaptcha は cookie を使用して検証情報を記録します。

Screenshot

この時間を 10 秒に設定します。

スクリーンショット

このルールを最上位に移動して、優先的に実行されるようにします。これはデモンストレーションを容易にするための設定です。実際には任意の順序に設定できます。

スクリーンショット

このルールを保存します。

スクリーンショット

いつものように、編集したページルールをプッシュするために新しい設定をリリースする必要があります。

スクリーンショット

このボタンをクリックします。

Screenshot

リリースします。

Screenshot

完全に同期されました。

スクリーンショット

これで、新しいページルールがすべてのゲートウェイクラスターとサーバーにプッシュされました。

Embeded video

Embeded video

Embeded video

設定の変更にはサーバーのリロード、再起動、バイナリのアップグレードは必要ありません。そのため、非常に効率的でスケーラブルです。

Embeded image

テスト

では、test-edge.com にアクセスしてみましょう。オリジンサイトのコンテンツではなく、hCaptcha の検証ページが表示されることがわかります。

埋め込み画像

検証をクリックします。指示に従って正しい画像を選択してください。

Embeded image

正しくない画像を選択した場合、別の画像セットが表示され、選択を続けることができます。

Embeded image

検証が完了すると、この URI で期待されるコンテンツが表示されます。先ほど clearance time を 10 秒に設定したことに注意してください。これは、10 秒間 CAPTCHA なしでこのドメインにアクセスできることを意味します。

Embeded image

10 秒経過後は、再度検証が必要になります。

Embeded image

アクションで CAPTCHA を設定するだけでなく、WAF ルールでも CAPTCHA を設定できます。WAF ルールの具体的な機能については、別の動画でデモンストレーションいたします。

スクリーンショット

まずは、WAF ルールで hCaptcha を設定する方法を簡単に見てみましょう。

Screenshot

WAF を有効にします。

スクリーンショット

ここでブロックアクションを hCaptcha に設定できます。

Screenshot

「OpenResty Edge gateway server captcha challenge - hCaptcha」オプションを選択します。

スクリーンショット

スクリーンショット

先ほどアクションを設定したときと同様に、ここでも clearance time を設定する必要があります。ここでは詳細なデモンストレーションは省略します。詳細については、WAF ルールに関連する動画をご覧ください。

スクリーンショット

ちなみに、OpenResty Edge の組み込み CAPTCHA サービスもサポートしています。OpenResty Edge の組み込み CAPTCHA のチュートリアル動画で、この機能の詳細をご覧いただけます。

OpenResty Edge について

OpenResty Edge は、マイクロサービスと分散トラフィックアーキテクチャ向けに設計された多機能ゲートウェイソフトウェアで、当社が独自に開発しました。トラフィック管理、プライベート CDN 構築、API ゲートウェイ、セキュリティ保護などの機能を統合し、現代のアプリケーションの構築、管理、保護を容易にします。OpenResty Edge は業界をリードする性能と拡張性を持ち、高並発・高負荷シナリオの厳しい要求を満たすことができます。K8s などのコンテナアプリケーショントラフィックのスケジューリングをサポートし、大量のドメイン名を管理できるため、大規模ウェブサイトや複雑なアプリケーションのニーズを容易に満たすことができます。

著者について

章亦春(Zhang Yichun)は、オープンソースの OpenResty® プロジェクトの創始者であり、OpenResty Inc. の CEO および創業者です。

章亦春(GitHub ID: agentzh)は中国江蘇省生まれで、現在は米国ベイエリアに在住しております。彼は中国における初期のオープンソース技術と文化の提唱者およびリーダーの一人であり、Cloudflare、Yahoo!、Alibaba など、国際的に有名なハイテク企業に勤務した経験があります。「エッジコンピューティング」、「動的トレーシング」、「機械プログラミング」 の先駆者であり、22 年以上のプログラミング経験と 16 年以上のオープンソース経験を持っております。世界中で 4000 万以上のドメイン名を持つユーザーを抱えるオープンソースプロジェクトのリーダーとして、彼は OpenResty® オープンソースプロジェクトをベースに、米国シリコンバレーの中心部にハイテク企業 OpenResty Inc. を設立いたしました。同社の主力製品である OpenResty XRay動的トレーシング技術を利用した非侵襲的な障害分析および排除ツール)と OpenResty Edge(マイクロサービスおよび分散トラフィックに最適化された多機能ゲートウェイソフトウェア)は、世界中の多くの上場企業および大企業から高い評価を得ております。OpenResty 以外にも、章亦春は Linux カーネル、Nginx、LuaJITGDBSystemTapLLVM、Perl など、複数のオープンソースプロジェクトに累計 100 万行以上のコードを寄与し、60 以上のオープンソースソフトウェアライブラリを執筆しております。

翻訳

英文版の原文と日本語訳版(本文)をご用意しております。読者の皆様による他の言語への翻訳版も歓迎いたします。全文翻訳で省略がなければ、採用を検討させていただきます。心より感謝申し上げます!