大和総研DX推進部の城石賢蔵です。
先行ブログ「Microsoft Azureのセキュリティ対策のポイント」において「DIR ChatGPT(当社独自の社員向けChatGPT環境)」を紹介しました。このブログではAzure OpenAI ServiceによるChatGPTサービスの社内展開を短期間(約2カ月間)で実現したことを紹介しましたが、セキュリティ面で課題が残されていました。
ブログ公開後の2024年3月には、課題を克服した新しい環境を構築し、機密性の高い情報をインプットとする文章生成の検証に着手しました。また、文章生成に関わる対話の全文をログとして保管する仕組みを構築しました。本ブログでは、Azure OpenAI Serviceのエンタープライズ利用(企業内利用)セキュリティ面の課題を克服した取り組みを紹介します。
Azure OpenAI Serviceの社内導入を検討されているみなさん、Azure OpenAI Serviceをよりセキュアに利用したいとお考えのみなさんにとって、参考となれば幸いです。
なお大和総研ではMicrosoft 365、Azureをはじめ、AWS、Google Cloud、Oracle Cloud Infrastructureなどのパブリッククラウドの導入に関するご相談を承っております。ぜひご用命ください。
- はじめに – セキュリティ対策後のDIR ChatGPTの全体像
- 各サービスのセキュリティ対策のポイント
- Azure OpenAI Serviceの対話ログ保管運用の実例
- おわりに
- 関連するソリューション
はじめに – セキュリティ対策後のDIR ChatGPTの全体像
先行ブログ「Microsoft Azureのセキュリティ対策のポイント」において、DIR ChatGPTのセキュリティ面での課題を次のように分析し、対策を検討していることを紹介しました。
課題 |
背景 |
---|---|
プライベートネットワーク化が完了していない (Azure OpenAI Serviceに対して送受信するデータがMicrosoftパブリックネットワーク上に残留するリスクがある) |
サービス開始時点では「一般情報からの文章生成」機能のみを利用し、質問・応答メッセージの本文をログ記録しない方針としていた。そのため、大和総研固有の情報がAzureに残留することはないものと判断した |
Azureサービスの一部が東日本リージョン以外に配置されており、リージョンをまたぐ通信が発生している (Azure OpenAI Serviceに対して送受信するデータが東日本リージョン以外のMicrosoftパブリックネットワーク上に残留するリスクがある) |
初期構築時点ではAzure OpenAI Serviceが東日本・西日本リージョンに提供されておらず、関連するAzureサービスを米国東部リージョン上で運用せざるを得なかった |
出所:大和総研作成
対策 |
目的 |
---|---|
プライベートネットワーク化 | Azure OpenAI Serviceをプライベートネットワークに組み込み、独自データ参照機能(on your data)やファインチューニング機能等に使用する大和総研固有のデータをセキュアに伝送し保管できるようにする |
東日本リージョンへのAzureサービス再配置 | Azureサービスを東日本リージョンに集約することで、複数リージョンにまたがる運用に起因するリスクを排除する (Azure OpenAI Serviceの東日本リージョンへの提供が2023年7月に開始されている) |
出所:大和総研作成
対策後の全体像は次の図の通りです。対策の結果、Azure OpenAI Serviceに関わる通信がプライベートネットワーク(図中の緑色の範囲)の内部で完結するようになりました。
出所:大和総研作成
利用サービスの構成は変更していません(Static Web Apps、Azure API Management、Azure OpenAI Serviceの3サービスを中核としています)。ただし、それぞれの運用方針を見直したうえで、最適なセキュリティ対策を施しています。また、全サービスを東日本リージョンに再配置しています。
各サービスに施したセキュリティ対策のポイントを次の章で紹介します。
各サービスのセキュリティ対策のポイント
今回のセキュリティ対策では、DIR ChatGPTの中核となる3サービスをAzure Virtual Network上に再配置しています。再配置後のAzure Virtual Networkと各サービスの関係性をより詳しく表現したものが図2です。
出所:大和総研作成
この図をもとに、各サービスのセキュリティ対策の内容を詳しく紹介します。
① Static Web Apps:メリットを活かすために運用方針を変更して利用を継続
DIR ChatGPTではユーザーインターフェースのためにWebサイトを設置しています。同サイトのプラットフォームにはStatic Web Appsを採用しています。
当サービスには静的Webサイトを低コストで構築し運用するためのさまざまな機能が組み込まれています。
Azure API Managementとの接続(バックエンドリンク登録)やリポジトリ(Azure Repos)との接続をシンプルな設定手順で実現できることは、Webサイトを短期間で構築するうえで大きなメリットとなりました。
しかし、当サービスには「Azure Virtual Networkへの統合(VNet統合)」の機能がありません。つまり、Azure API Managementに対してAzure Virtual Networkを通じてプライベートに通信できません。これはWebサイトをセキュアに運用するうえで大きなデメリットであると言えます。
そのため、Azure API Managementなどのバックエンドサービスにプライベートに接続することを目的として、WebサイトのプラットフォームをStatic Web AppsからAzure App Serviceに変更するケースがよく見られます。
- Azure Static Web Apps – App Service | Microsoft Azure
- アプリを Azure 仮想ネットワークと統合する - Azure App Service | Microsoft Learn
ただしAzure App Serviceを利用してWebアプリケーションを開発し運用するには、相応の準備期間が必要です。
そこでDIR ChatGPTではStatic Web Appsのメリットを引き続き活かすため、運用方針を見直して継続利用することを選択しました。
具体的には、当サービスの利用方法と利用範囲を次のように整理しました。
- Static Web AppsからAzure API Managementへの通信設定(バックエンドリンク登録)を解除する
- Static Web Appsは「Webサイトリソース(HTML、CSS、Javascriptなど)」を社内PC端末に供給するために利用する(図2のユースケース①)
- Azure OpenAI Serviceに宛てたAPIリクエストメッセージは、PC端末からAzure API Managementへ直接送信する(図2のユースケース②)
当サービスはPrivate Linkによる通信のプライベート化に対応しています。そのため、Azure Virtual Network上にPrivate Endpointを配置することで、Webサイトリソースをセキュアに送受信できるようになりました(Private LinkとPrivate Endpointの詳細は先行ブログ「Microsoft Azureのセキュリティ対策のポイント」をご覧ください)。
なお、DIR ChatGPTでは本構成(Static Web AppsをWebサイトのプラットフォームとする構成)は「あくまで一時の対策に過ぎない」ととらえています。今後Webサイト(Webアプリケーション)の機能拡張を行うときは、Azure App Serviceへ移行することも選択肢としています。
また、Azure OpenAI Serviceの利用レベルや利用範囲に応じて複数のフロントエンド(Webサイト)を配置することも構想しています。APIメッセージの送受信経路が複数生じることになりますが、この「交通整理」を後述するAzure API Managementにより行います。
② Azure API Management:Azure Virtual Networkに統合しプライベート化
DIR ChatGPTではAzure OpenAI Service宛てのAPIリクエスト・レスポンスメッセージのコントロールや、API通信経路の将来的な拡張のため、Azure OpenAI ServiceのフロントとしてAzure API Managementを配置しています。
当サービスは「Azure Virtual Networkへの統合(VNet統合)」の機能を有しており、IaaS(Azure VMなど)のようにAzure Virtual Network上に配置することができます。
- Azure API Management を内部 VNet にデプロイする | Microsoft Learn
- Azure API Management を外部 VNet にデプロイする | Microsoft Learn
当サービスのAzure Virtual Networkへの統合には「内部モード」と「外部モード」の2種類があります。
DIR ChatGPTでは「内部モード」を選択し、当サービスを公衆インターネットやMicrosoftのパブリックネットワークから隔離しました。結果、当サービスは「大和総研が所有するAzure Virtual Networkと大和総研の社内ネットワークからのみ」利用できるセキュアなものとなりました。
なお、Azure API ManagementをAzure Virtual Networkへ統合するときは注意したいポイントがあります。以下に紹介します。
- Azure Virtual Networkへの統合をサポートする価格レベルは限定されている
- Azure Virtual Networkへ統合した後も、Azure API ManagementはAzureプラットフォーム(Microsoftパブリックネットワーク上で稼働)と恒常的に通信する。そのため、Azure Virtual Networkやその他のネットワークサービス(Azure Firewallなど)において通信許可設定が必要となる
- Azure Virtual Networkの内部で他のリソース(Private Endpointなど)と通信をするためには接続先リソースの名前解決が必要であり、そのためにDNSの構成が必要となる
- 本例のようにStatic Web Appsとの接続(バックエンドリンク登録)を解除し外部ドメイン(大和総研社内ネットワーク)からのAPIリクエストを受け入れる構成に変更する場合、CORS(オリジン間リソース共有、 Cross-Origin Resource Sharing)ポリシにも考慮が必要となる
③ Azure OpenAI Service:Private Endpointを配置してプライベート化
Azure OpenAI ServiceはDIR ChatGPTの根幹をなすサービスです。
当サービスはPrivate Linkに対応しているため、Azure Virtual NetworkにPrivate Endpointを配置しました。結果、次の2種類の通信経路がプライベート化されました。
- Azure API Managementからのアクセス(APIリクエストメッセージ・レスポンスメッセージの送受信)
- 社内PC端末からのアクセス(Azure OpenAI Serviceインスタンスのメンテナンスなど)
なお、当サービスに対して送受信するデータが複数リージョンに拡散することを避けるために当サービスを(関連するサービスも含めて)東日本リージョンに再配置しましたが、利用者のニーズによっては別の選択肢も考えられます。
当サービスの新機能や新AIモデルは全リージョンに対して一律にリリースされるわけではなく、リージョンごとに時期の差異があります。東日本リージョンは、米国リージョンや欧州リージョンに比べて後れをとる傾向にあります。常に最新の機能や最新のAIモデルを利用したいというニーズがある場合は、米国や欧州のリージョンの選択を検討する必要があるかもしれません。
Azure OpenAI Serviceの対話ログ保管運用の実例
Azure OpenAI Serviceに関する通信経路をプライベート化したことを受けて、Azure OpenAI Serviceとの対話(質問文・回答文)の全文をログとして保管する仕組みを構築しました。保管したログデータの実例を添えて本章で紹介します。
対話ログデータはAzure API Managementの「ApiManagementGatewayLogs」というログテーブルに格納されます。
このデータはAzure Monitorによって収集されLog Analytics Workspaceに蓄積されます(データの連携経路は図1をご覧ください)。
- Azure Monitor - Modern Observability Tools | Microsoft Azure
- Log Analytics workspace overview - Azure Monitor | Microsoft Learn
対話ログ(質問文・回答文)の本文は表3に示す列(カラム)にJSON形式で格納されています。
ログテーブル名 |
列(カラム)名 |
格納データ |
---|---|---|
ApiManagementGatewayLogs | RequestBody | クライアント要求本文 (社内PC⇒API Management) |
ResponseBody | ゲートウェイ応答本文 (API Management⇒社内PC) |
|
BackendRequestBody | バックエンド要求本文 (API Management⇒Azure OpenAI) |
|
BackendResponseBody | バックエンド応答本文 (Azure OpenAI⇒API Management) |
出所:上に引用したMicrosoft Learnページの内容を基に大和総研作成
列「RequestBody」と「ResponseBody」の実データをサンプルとして、本文データの構造を紹介します。図3および図4をご覧ください。
出所:大和総研作成
出所:大和総研作成
この対話ログには「システムプロンプト(ChatGPTへの指示内容)」「質問文」「回答文」の3要素が記録されています。また、DIR ChatGPTでは「利用者の識別情報(Entra IDユーザープリンシパル。Webユーザーインターフェースの利用認証時に取得)」をAPIリクエストメッセージに格納する仕様としており、この情報も記録されています(なお、利用者の識別情報をAPIリクエストメッセージに格納することはAzure OpenAI Serviceの文章生成機能において必須の要件ではありません)。
このような構造を持つ対話ログを保管することで、次の効果が期待できます。
- 「システムプロンプト」「質問文」「回答文」の3要素が記録されているため、文章生成AIモデルのカスタマイズや新規開発において精度向上のための学習データ(トレーニングデータ)として活用できる
- 対話ログと利用者の識別情報がセットで記録されているため、Azure OpenAI Serviceの利用状況の事後監査に利用できる
なお、この対話ログには注意したいポイントがあります。以下に紹介します。
- Azure OpenAI ServiceのAPIリクエストメッセージ・レスポンスメッセージの構造はAIモデルの種類やバージョンによって変化する(上で紹介した構造はあくまで一例です)
- Azure API Managementが出力できる対話ログデータのサイズには上限がある。長文のメッセージを送受信した場合全文がログとして保管されない恐れがある
おわりに
DIR ChatGPTではAzure OpenAI Serviceのプライベートネットワーク化が完了し、「機密性の高い情報(大和総研固有の情報)」を文章生成のために利用できるようになりました。今後、DIR ChatGPTの活用範囲をさらに拡大します。現在ターゲットとしているのは「Azure OpenAI on your data による独自データに基づく文章生成」と「カスタムAIモデル(ファインチューニングモデル)の開発」です。
- Azure OpenAI Service で独自のデータを使用する - Azure OpenAI | Microsoft Learn
- Azure OpenAI Service を使用してモデルをカスタマイズする - Azure OpenAI | Microsoft Learn
成果は順次ブログにて発信します。これからもどうぞご期待ください。
(本ブログの内容は2024年4月時点のものです)
関連するソリューション
大和総研では、Azure等のパブリッククラウドを活用したChatGPT構築支援サービスを行っています。ITソリューションサービスサイトからお問い合わせください。
ChatGPT利用環境構築サービス|大和総研 (dir.co.jp)
※Microsoft 365、Power Platform、Azureは、米国 Microsoft Corporationの米国およびその他の国における登録商標または商標です。