この記事はAlex KovuruIndiradarshni 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は、その信頼性を保証します。

Deep Data Security

AIエージェントにデータベースレベルの認証が必要な理由

多くのAIアプリケーションは、共有サービスアカウントを使用してデータベースに接続します。これはアプリケーション開発を簡素化する一方で、セキュリティ上の脆弱性を生み出します。サービスアカウントは多くの場合、業務ユーザーよりも広範な権限を持っているためです。

データベースによる認証が行われていない場合、AIエージェントは、要求元のユーザーが決して見るべきではない給与や社会保障番号などの機密データを意図せず取得してしまう可能性があります。

Deep Data Securityは認証をデータベース自体に移行することで、すべてのクエリがアプリケーションのデータベース・アカウントではなく、認証されたエンドユーザーのIDを使用して評価されるようにします。

シンプルなデモアーキテクチャ

このブログでは、シンプルなデモアーキテクチャを通して理解を深めていただきます。デモアーキテクチャは、以下の4つのコンポーネントで構成されています。

  1. Microsoft Entra IDやOracle Cloud Infrastructure (OCI) IAMなどの外部IAMプロバイダーがエンドユーザーの認証を行います。このデモではOCI IAMを使用します。
  2. Python Flaskを用いたAIアプリケーションが、自然言語をSQLに変換します。
  3. Oracle AI Database 26aiは、生成されたSQLを実行します。 
  4. 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;
テーブル_DSS前

サービスアカウントは無制限のアクセス権限を持っているため、両方のユーザーは、全従業員の給与と社会保障番号を含む完全な人事データテーブルを受け取ることができます。

AIエージェントは正しく動作するが、データベースは実際に誰がデータを要求したのかを知ることはできません。

AIエージェントが返す結果セット:全行

Before_DDS

Deep Data Securityの実装後

アプリケーションは引き続きサービスアカウントを使用して接続しますが、認証はそのアカウントに基づいて行われなくなります。

代わりに、Oracle AI Databaseは構成済みのIAMプロバイダからのトークンを検証し、認証済みのエンドユーザー・コンテキストを確立し、適切なデータ・ロールをアクティブ化し、クエリ実行中に宣言型SQLデータ権限を適用します。このデモでは、構成済みのIAMプロバイダはOCI IAMです。

AIエージェントは実装前と全く同じSQL文を生成します。

違いは、データベースが結果を自動的にフィルタリングするようになった点です。

テーブル_DSS後

同じプロンプト、同じSQL、異なる結果

Oracle AI Databaseは、Deep Data Securityがデータを返す前に、構成されたIAMプロバイダーからの認証済みIDを評価するため、異なる結果セットを生成します。

AIエージェントはセキュリティポリシーを理解する必要はありません。データベースが既に理解しているからです。

AIエージェントが返す結果セット:

DDS後

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://github.com/kovurualex/Cyber​​-Security/tree/main/Scripts-to-Cyber​​-Security/Deep-Data-Security

参考リンク:

https://www.oracle.com/security/database-security/features/deep-data-security

https://docs.oracle.com/en/database/oracle/oracle-database/26/ddscg/understand-oracle-deep-data-security.html