リバースプロキシサーバーを用意してGPTsによるAPIキーの漏洩を防ぐ
導入部
この記事では、Google Apps Script(GAS)を使用してリバースプロキシサーバーを構築し、APIキーの漏洩を防ぐ方法について説明します。
前提として、以下の記事で扱った、Google Places APIなどは、秘匿にしておくべきAPIキーがURL内に含まれてしまうため、APIキーが漏洩してしまうという問題がありました。今回の記事はそれを解消するためのものです。
APIキーの漏洩は、不正アクセスやサービスの乱用につながります。
そもそも、「プロキシサーバー」とはなんでしょうか?
プロキシサーバーとは何か
まず、基本的な「プロキシサーバー」について理解しましょう。
プロキシサーバーは、インターネット上の他のサーバーとの通信を代行するサーバーです。
簡単に言えば、インターネット上の「仲介者」のような役割を果たします。
リバースプロキシとフォワードプロキシの違い
プロキシサーバーには大きく分けて、「フォワードプロキシ」と「リバースプロキシ」の二種類があります。
フォワードプロキシ: ユーザーの側に立って、ユーザーのリクエストをインターネットのサーバーに代わって送る役割を果たします。例えば、学校や企業がインターネットの使用を管理するために使います。
リバースプロキシ: サーバーの側に立って、インターネットからのリクエストを受け取り、適切なサーバーに転送します。この方式は、ウェブサイトのパフォーマンスを向上させたり、セキュリティを強化したりするために使われます。
リバースプロキシの機能
リバースプロキシサーバーは、以下のような多くの機能を持たせることができます。
負荷分散: 複数のサーバーにリクエストを分散させることで、一つのサーバーにかかる負荷を減らします。
キャッシング: よくアクセスされるページを一時的に保存し、次回同じページにアクセスする際に速く表示できるようにします。
セキュリティ強化: 不正なアクセスや攻撃を防ぐための壁として機能します。
SSL暗号化の管理: セキュアな通信を提供するために、SSL証明書を管理し、暗号化された通信を処理します。
リバースプロキシの実際の利用例
例えば、大きなウェブサイトでは、リバースプロキシを使って、アクセスが集中するときにサーバーがダウンしないようにしたり、セキュアな情報交換を実現したりしています。
このように、リバースプロキシサーバーはインターネット上で重要な役割を果たしており、ウェブのパフォーマンスやセキュリティを大きく向上させることができるのです。
今回の例では、Google Apps Script(GAS)にリバースプロキシサーバーとしての機能を持たせることで、APIリクエストを中継し、APIキーをサーバーサイドに隠蔽することが可能です。
GASを選ぶ理由
GASは、Googleのクラウド上で動作するスクリプトプラットフォームで、比較的簡単に誰でもWebアプリケーションを構築できます。
また、重要な点として無料で扱うことができます。
しかし、1日の利用制限があるため、リクエスト数が多くなってくると捌くのが難しくなってきます。
それではみていきましょう!
この記事に取り掛かる前提として、以下の記事を読んでおくことをお勧めします: