マルチテナントLLM分析と行レベルセキュリティ: AWS上での安全なエージェントの構築方法
サマリー
PARテクノロジー社は、行レベルのセキュリティを強制するマルチテナントLLM分析システムをAWS上で構築しました。システムは、数千のユーザーに対して正確なデータを提供するために、三層のセキュリティアーキテクチャを採用しています。これにより、データアクセスの正確性とセキュリティを確保しています。
本文
PARテクノロジー社は、レストラン業界向けの技術を構築し、独立したオペレーターから大規模なフランチャイズグループまで、300以上のレストランビジネスをサポートしています。この多様な顧客基盤において、私たちはデータの価値を引き出すことで、組織がより良い意思決定を行えるよう支援しています。
私たちが自己サービス分析のための自然言語テキストからSQLへのエージェントを構築する際の目標は明確でした。技術的なバックグラウンドに関係なく、ビジネスユーザーが平易な英語でビジネスの質問をし、数秒で信頼性のあるデータに基づいた回答を得られるようにすることです。しかし、その約束を実現するためには、より複雑な課題を解決する必要がありました。
この投稿では、PARが行レベルのセキュリティを強制する生産準備が整ったマルチテナントLLM分析システムをどのように構築したかを示します。これには、AWS SigV4による暗号化リクエスト署名、Amazon Bedrockでの意味的検証、Split-Plane SQLによるプログラム的データ隔離の三層アーキテクチャが含まれます。各層が独立して機能し、LLM自体が侵害されたり操作されたりしても、テナント間のデータ露出のリスクを低減します。
私たちのシステムは、データアクセス、正確性、セキュリティの交差点に位置しています。私たちのシステムは、異なるビジネス、データセット、権限境界に結びついた数千のユーザーを同時にサポートしなければなりません。エージェントによって生成されるすべてのクエリは、正確であるだけでなく、そのユーザーがアクセスを許可されているデータに厳密にスコープされている必要があります。言い換えれば、課題は単にSQLを生成することではなく、正しいユーザーに対して、正しいデータのスライスに対して、毎回正しいSQLを生成することです。
このようにして、私たちは強固なセキュリティ制御を備えた自己サービス分析ソリューションを構築しました。私たちのシステムは、AWSの共有責任モデルに従い、AWSがクラウドのセキュリティを担当し、PARがアプリケーションおよびデータベース層でのデータ隔離を強制する三層のセキュリティアーキテクチャを実装しています。すべてのAPIリクエストは、テナントID、ビジネスID、管理者IDを含む三つの識別値を持ち、クエリ結果はその組み合わせが許可されているデータに厳密にスコープされます。
私たちが自己サービス分析のための自然言語テキストからSQLへのエージェントを構築する際の目標は明確でした。技術的なバックグラウンドに関係なく、ビジネスユーザーが平易な英語でビジネスの質問をし、数秒で信頼性のあるデータに基づいた回答を得られるようにすることです。しかし、その約束を実現するためには、より複雑な課題を解決する必要がありました。
この投稿では、PARが行レベルのセキュリティを強制する生産準備が整ったマルチテナントLLM分析システムをどのように構築したかを示します。これには、AWS SigV4による暗号化リクエスト署名、Amazon Bedrockでの意味的検証、Split-Plane SQLによるプログラム的データ隔離の三層アーキテクチャが含まれます。各層が独立して機能し、LLM自体が侵害されたり操作されたりしても、テナント間のデータ露出のリスクを低減します。
私たちのシステムは、データアクセス、正確性、セキュリティの交差点に位置しています。私たちのシステムは、異なるビジネス、データセット、権限境界に結びついた数千のユーザーを同時にサポートしなければなりません。エージェントによって生成されるすべてのクエリは、正確であるだけでなく、そのユーザーがアクセスを許可されているデータに厳密にスコープされている必要があります。言い換えれば、課題は単にSQLを生成することではなく、正しいユーザーに対して、正しいデータのスライスに対して、毎回正しいSQLを生成することです。
このようにして、私たちは強固なセキュリティ制御を備えた自己サービス分析ソリューションを構築しました。私たちのシステムは、AWSの共有責任モデルに従い、AWSがクラウドのセキュリティを担当し、PARがアプリケーションおよびデータベース層でのデータ隔離を強制する三層のセキュリティアーキテクチャを実装しています。すべてのAPIリクエストは、テナントID、ビジネスID、管理者IDを含む三つの識別値を持ち、クエリ結果はその組み合わせが許可されているデータに厳密にスコープされます。