この記事はAlex KovuruとIndiradarshni BalasundaramによるBuilding Secure AI Agents with Oracle AI Database 26ai Deep Data Securityの日本語翻訳版記事です。
はじめに
AIエージェントは、エンタープライズ・アプリケーションの主要なインターフェースとして急速に普及しつつあり、ユーザーは自然言語で情報を取得できるようになっています。しかし、この利便性は重大なセキュリティ上の課題をもたらします。
AIエージェントがログインしたユーザーが閲覧を許可されているデータのみにアクセスするようにするには、どうすればよいでしょうか?
Oracle Deep Data Securityは、データベース層でこの課題に対処します。Deep Data Securityは、Microsoft Entra IDやOracle Cloud Infrastructure (OCI) IAMなどの外部IAMプロバイダをサポートしています。Oracle AI Database 26aiに組み込まれているDeep Data Securityは、信頼できるユーザーID、ランタイム・コンテキスト、および宣言型SQLデータ権限を使用して、きめ細かな認可を強制します。AIエージェントが広範囲なクエリを生成した場合でも、データベースは結果を認可された行、列、およびセル値に制限します。
AIエージェントにおいては、もはや「エージェントは質問に答えられるか?」という問題だけでなく、「エージェントは適切なデータのみにアクセスすると信頼できるか?」という問題が重要になります。Oracle Deep Data Securityは、その信頼性を保証します。

AIエージェントにデータベースレベルの認証が必要な理由
多くのAIアプリケーションは、共有サービスアカウントを使用してデータベースに接続します。これはアプリケーション開発を簡素化する一方で、セキュリティ上の脆弱性を生み出します。サービスアカウントは多くの場合、業務ユーザーよりも広範な権限を持っているためです。
データベースによる認証が行われていない場合、AIエージェントは、要求元のユーザーが決して見るべきではない給与や社会保障番号などの機密データを意図せず取得してしまう可能性があります。
Deep Data Securityは認証をデータベース自体に移行することで、すべてのクエリがアプリケーションのデータベース・アカウントではなく、認証されたエンドユーザーのIDを使用して評価されるようにします。
シンプルなデモアーキテクチャ
このブログでは、シンプルなデモアーキテクチャを通して理解を深めていただきます。デモアーキテクチャは、以下の4つのコンポーネントで構成されています。
- Microsoft Entra IDやOracle Cloud Infrastructure (OCI) IAMなどの外部IAMプロバイダーがエンドユーザーの認証を行います。このデモではOCI IAMを使用します。
- Python Flaskを用いたAIアプリケーションが、自然言語をSQLに変換します。
- Oracle AI Database 26aiは、生成されたSQLを実行します。
- Deep Data Securityは、認証されたエンドユーザーのIDと、構成済みのIAMプロバイダーから取得した役割またはグループのコンテキストに基づいて認可を適用します。このデモでは、そのコンテキストはOCI IAMから取得されます。
Deep Data Securityの実装前
AIアプリケーションはAI_AGENT_BASELINEという名前の共有サービスアカウントを使用して接続します。
例えば:
アレックス(マネージャー)とインディラ(従業員)が全く同じ質問をしたとしましょう。
Show me every employee salary and SSN.
AIエージェントは、両方のユーザーに対して同じSQLステートメントを生成します。
SQL> SELECT employee_id, first_name, last_name, job_code, department_id, ssn, phone_number, salary, user_name, manager_id FROM hr.employees ORDER BY employee_id;

サービスアカウントは無制限のアクセス権限を持っているため、両方のユーザーは、全従業員の給与と社会保障番号を含む完全な人事データテーブルを受け取ることができます。
AIエージェントは正しく動作するが、データベースは実際に誰がデータを要求したのかを知ることはできません。
AIエージェントが返す結果セット:全行

Deep Data Securityの実装後
アプリケーションは引き続きサービスアカウントを使用して接続しますが、認証はそのアカウントに基づいて行われなくなります。
代わりに、Oracle AI Databaseは構成済みのIAMプロバイダからのトークンを検証し、認証済みのエンドユーザー・コンテキストを確立し、適切なデータ・ロールをアクティブ化し、クエリ実行中に宣言型SQLデータ権限を適用します。このデモでは、構成済みのIAMプロバイダはOCI IAMです。
AIエージェントは実装前と全く同じSQL文を生成します。
違いは、データベースが結果を自動的にフィルタリングするようになった点です。

同じプロンプト、同じSQL、異なる結果
Oracle AI Databaseは、Deep Data Securityがデータを返す前に、構成されたIAMプロバイダーからの認証済みIDを評価するため、異なる結果セットを生成します。
AIエージェントはセキュリティポリシーを理解する必要はありません。データベースが既に理解しているからです。
AIエージェントが返す結果セット:

Deep Data Securityが従来のアプリケーション・セキュリティと異なる理由
従来のアプリケーション・セキュリティとは異なり、Deep Data Securityはデータが存在する場所で認証を強制します。
これにより、3つの独立したセキュリティ境界が提供されます。
- ID境界:設定されたIAMプロバイダーが、信頼できるユーザーIDを確立します。このデモでは、OCI IAMがそのIDコンテキストを提供します。
- アプリケーション境界:OracleはOAuthクライアント・アプリケーションを検証します。
- データ境界:SQLデータ権限は、データベース内部における行、列、およびセルレベルのアクセスを強制します。
たとえAIエージェントが過度に広範なSQL文を生成したとしても、データベースは承認されたデータのみを返します。
結論
AIエージェントは、セキュリティ・ポリシーの執行を担当すべきではありません。AIエージェントの役割は質問に答えることであり、機密データへのアクセス権限を持つ人物を決定することではないのです。
Oracle AI Database 26ai Deep Data Securityは、認証を本来あるべきデータベース層に移行します。Microsoft Entra IDやOCI IAMなどの信頼できるIAM IDと宣言型SQLデータ権限を組み合わせることで、組織はデータ漏洩のリスクを冒すことなく、AIを活用したアプリケーションを安全に展開できます。
結果は単純明快です。:AI エージェントはあらゆる情報を要求できますが、データベースはユーザーが閲覧を許可されている情報のみを返します。
デモを最初から最後まで実行することにご興味がある場合は、下記のGitHubリポジトリにある手順書とPythonコードをご参照ください。これにはOracle AI Database 26aiとともに、このDeep Data Security AIエージェントデモをコンピュート・インスタンス上で再現するために必要な資料が含まれています。
参考リンク:
https://www.oracle.com/security/database-security/features/deep-data-security