Apigee で DialogFlow CX の chatbot のセキュリティを強化する
Pallavi Vageria
Senior Strategic Cloud Engineer, Google Cloud
※この投稿は米国時間 2024 年 6 月 19 日に、Google Cloud blog に投稿されたものの抄訳です。
chatbot を作成したいと考える組織の多くが、Google Cloud のサービスである Dialogflow を利用します。Dialogflow は、自然言語を理解して応答できる会話型エージェントを作成するためのサービスです。2 つのエディションが用意されていますが、多くの組織は高度な chatbot 機能を利用するために Dialogflow CX を選択します。ただし、ミドルウェア ソリューションがない状態で chatbot をウェブサイトに統合してしまうと、サービス アカウント キーのような機密性の高い認証情報をフロントエンドに直接挿入したり、認証されていない URL を使用したりする恐れがあります。本番環境グレードのシステムにとって、これはおすすめの方法ではありません。エージェントと Google プロジェクト ID が公開され、脆弱な状態になる可能性があります。
このリスクは、フロントエンドと DialogFlow CX API の間に Apigee レイヤを導入することで軽減できます。Apigee は Google Cloud が提供するフル ライフサイクルの API 管理プラットフォームで、企業が API を設計、保護、公開、分析、モニタリング、収益化できるようにします。また、バックエンド サービスとそれにアクセスするクライアントとの間の堅牢なレイヤとして機能し、多数の機能や利点を提供します。この際、Apigee は以下を可能にします。
-
認証と認可の一元化: Apigee は安全なゲートウェイとして機能し、すべての認証プロセスと認可プロセスを処理します。これにより、フロントエンドで認証情報を公開する必要がなくなります。
-
アクセス制御: Apigee では、アクセス ポリシーを詳細に定義し、特定の DialogFlow CX API とやり取りできるフロントエンド コンポーネントを判断できます。
-
API キーの管理: Apigee は API キーの管理を支援し、侵害が生じた場合のローテーション プロセスや取り消しプロセスを簡素化します。
-
脅威からの保護: Apigee は、レート制限、割り当て管理、Spike Arrest などの組み込み機能を提供し、不正行為や潜在的な攻撃から API を保護します。
Apigee を仲介役として使用することにより、chatbot 統合のセキュリティを強化できるだけでなく、API を管理、モニタリングするための強力なツールも獲得できます。この投稿では、会話型エージェントのセキュリティを高める Apigee の構成方法をご紹介します。
![https://storage.googleapis.com/gweb-cloudblog-publish/images/1-ApigeeArchitecture.max-700x700.png](https://storage.googleapis.com/gweb-cloudblog-publish/images/1-ApigeeArchitecture.max-700x700.png)
![https://storage.googleapis.com/gweb-cloudblog-publish/images/1-ApigeeArchitecture.max-700x700.png](https://storage.googleapis.com/gweb-cloudblog-publish/images/1-ApigeeArchitecture.max-700x700.png)
会話型エージェント用 Apigee プロキシの作成と構成
![https://storage.googleapis.com/gweb-cloudblog-publish/images/2-AgentLink.max-1600x1600.png](https://storage.googleapis.com/gweb-cloudblog-publish/images/2-AgentLink.max-1600x1600.png)
![https://storage.googleapis.com/gweb-cloudblog-publish/images/2-AgentLink.max-1600x1600.png](https://storage.googleapis.com/gweb-cloudblog-publish/images/2-AgentLink.max-1600x1600.png)
4. サービス アカウントを作成し、「DialogFlow API Client」ロールを付与します。
![https://storage.googleapis.com/gweb-cloudblog-publish/images/3-SA.max-1100x1100.png](https://storage.googleapis.com/gweb-cloudblog-publish/images/3-SA.max-1100x1100.png)
![https://storage.googleapis.com/gweb-cloudblog-publish/images/3-SA.max-1100x1100.png](https://storage.googleapis.com/gweb-cloudblog-publish/images/3-SA.max-1100x1100.png)
5. apigee.google.cloud にアクセスし、[Reverse Proxy](リバース プロキシ)タイプの [Create a Proxy](プロキシを作成)をクリックして、「myproxy」などと名前を付けます。
![https://storage.googleapis.com/gweb-cloudblog-publish/images/4-createproxy.max-1700x1700.png](https://storage.googleapis.com/gweb-cloudblog-publish/images/4-createproxy.max-1700x1700.png)
![https://storage.googleapis.com/gweb-cloudblog-publish/images/4-createproxy.max-1700x1700.png](https://storage.googleapis.com/gweb-cloudblog-publish/images/4-createproxy.max-1700x1700.png)
6. ターゲット エンドポイントを DialogFlow CX Detect Intent API として構成し、プロジェクト ID、エージェント ID、ロケーションを適切に置き換えます。
![https://storage.googleapis.com/gweb-cloudblog-publish/images/4-1-Create_Proxy.max-1400x1400.png](https://storage.googleapis.com/gweb-cloudblog-publish/images/4-1-Create_Proxy.max-1400x1400.png)
![https://storage.googleapis.com/gweb-cloudblog-publish/images/4-1-Create_Proxy.max-1400x1400.png](https://storage.googleapis.com/gweb-cloudblog-publish/images/4-1-Create_Proxy.max-1400x1400.png)
7. [Proxy Develop](プロキシ開発)タブで、以下のように <GoogleAccessToken> と <Scopes> を HTTP ターゲット接続に追加します。
![https://storage.googleapis.com/gweb-cloudblog-publish/images/5-ProxySetup.max-800x800.png](https://storage.googleapis.com/gweb-cloudblog-publish/images/5-ProxySetup.max-800x800.png)
![https://storage.googleapis.com/gweb-cloudblog-publish/images/5-ProxySetup.max-800x800.png](https://storage.googleapis.com/gweb-cloudblog-publish/images/5-ProxySetup.max-800x800.png)
8. 利用可能な環境にプロキシをデプロイします。このステップでは、先ほど作成したサービス アカウントを使用することが重要です。このサービス アカウントは、DialogFlow CX API へのリクエストを認証するために使用されます。
![https://storage.googleapis.com/gweb-cloudblog-publish/images/6-deploy.max-900x900.png](https://storage.googleapis.com/gweb-cloudblog-publish/images/6-deploy.max-900x900.png)
![https://storage.googleapis.com/gweb-cloudblog-publish/images/6-deploy.max-900x900.png](https://storage.googleapis.com/gweb-cloudblog-publish/images/6-deploy.max-900x900.png)
![https://storage.googleapis.com/gweb-cloudblog-publish/images/7-proxySA.max-1000x1000.png](https://storage.googleapis.com/gweb-cloudblog-publish/images/7-proxySA.max-1000x1000.png)
![https://storage.googleapis.com/gweb-cloudblog-publish/images/7-proxySA.max-1000x1000.png](https://storage.googleapis.com/gweb-cloudblog-publish/images/7-proxySA.max-1000x1000.png)
9. 任意の API クライアントを使ってプロキシをテストします。DialogFlow CX Intent API からの応答が表示されます。
![https://storage.googleapis.com/gweb-cloudblog-publish/images/8-Test.max-2000x2000.png](https://storage.googleapis.com/gweb-cloudblog-publish/images/8-Test.max-2000x2000.png)
![https://storage.googleapis.com/gweb-cloudblog-publish/images/8-Test.max-2000x2000.png](https://storage.googleapis.com/gweb-cloudblog-publish/images/8-Test.max-2000x2000.png)
すばらしいですね。プロキシが動作し、DialogFlow CX とやり取りをしています。
Apigee のデバッグ コンソールで、リクエストのすべての経路をトレースできます。
次のステップ
初めてのプロキシが機能したので、次のステップに進む準備ができました。次のことが可能です。
-
Apigee Oauth ポリシーを構成して、フロントエンドからプロキシを呼び出すユーザーの認証処理を追加する
-
要件に応じて Spike Arrest ポリシーと割り当てポリシーを追加する
この Apigee プロキシ URL は、ウェブサイトや chatbot のフロントエンドに埋め込んで使用できます。Apigee プロキシを使用することにより、効率的な API 管理、ユーザー アクセス制御、割り当て管理、そして API のモニタリングや収益化が可能になります。
ー Google Cloud、戦略的クラウド シニア エンジニア Pallavi Vageria