Autonomous AI Databaseにおけるアイデンティティ認識のためのOracle Deep Data Security
Oracle Deep Data Securityは、データベース・オブジェクトのアイデンティティ対応のファイングレイン認可を提供します。これにより、認証されたエンドユーザーIDに基づいて、行および列レベルでデータへのアクセスを制御できます。アプリケーション・ロジック、ミドルウェアまたはカスタム問合せフィルタリングに依存する従来の認可モデルとは異なり、Oracle Deep Data Securityは、データベース内で直接認可を適用します。認可ポリシーは、データが返される前に評価され、ユーザーが表示または変更する権限があるデータのみにアクセスできるようにします。
Autonomous AI DatabaseにおけるOracle Deep Data Securityについて
Autonomous AI Databaseは、Oracle Deep Data Securityをサポートしているため、アプリケーション、データ分析ツール、RESTサービスおよびAI搭載ワークロードに一貫してデータベース適用の認可を適用できます。
多くのエンタープライズ・アプリケーションでは、複数のユーザーが同じデータベース表にアクセスできます。これらの環境では、すべてのユーザーが表示できるのは、アクセスを許可されているデータのみです。従来の認可モデルは、通常、アプリケーション・レイヤー内でセキュリティを適用します。組織がSQL文を動的に生成するAIアシスタント、コパイロット、エージェントAIアプリケーションを採用するにつれて、すべてのアクセス・パスで一貫した認可を維持することはますます困難になっています。
Oracle Deep Data Securityは、認可をデータベースに移動することで、この課題に対処します。認可ポリシーは宣言的でアイデンティティ対応であり、データがデータベースを離れる前にすべてのSQL文について評価されます。強制はOracle AI Database内で行われるため、リクエストがアプリケーション、レポート・ツール、REST API、SQLクライアントまたはAIエージェントから発生しているかどうかに関係なく、同じ認可ポリシーが適用されます。
このデータベース強制認可モデルは、認証されたユーザーに対して認可されたデータにのみAIエージェントがアクセスできるようにすることで、エンタープライズAIワークロードに対して信頼できるセキュリティ境界を提供します。
ノート
ノート: Oracle Deep Data Securityは、Oracle AI Database 26aiでのみサポートされています。
Oracle Deep Data Securityは、次のことに役立ちます。
-
認証されたユーザー・アイデンティティに基づいて、行レベルおよび列レベルの認可を強制します。
-
データベース内の認可ポリシーを一元化します。
-
共有データベース表に格納された機密データを保護します。
-
アプリケーション、API、分析プラットフォームおよびAI搭載ワークロードに一貫した認可を適用します。
-
アプリケーション固有の認可ロジックへの依存を軽減します。
-
AIエージェントが認証されたユーザーと同じ認可ポリシーを継承していることを確認します。
認可はOracle Database内で実施されるため、データベースへのアクセス方法に関係なく、同じポリシーが一貫して適用されます。
詳細は、「Oracle Deep Data Securityの概要」を参照してください。
前提条件
Autonomous AI DatabaseでOracle Deep Data Securityを使用する前に、次の前提条件が満たされていることを確認してください。
-
ADMINユーザーとして、またはエンド・ユーザー、データ・ロールおよびデータ権限を作成および管理する権限を持つユーザーとして、データベースに接続しています。
-
エンタープライズ認証を使用する場合は、Oracle Cloud Infrastructure Identity and Access Management (IAM)やMicrosoft Entra IDなどのサポートされているアイデンティティ・プロバイダを構成します。詳細は、Autonomous AI Databaseに対するIdentity and Access Management (IAM)認証の使用を参照してください
-
ユーザーのかわりにAutonomous AI Databaseに接続するアプリケーションまたはAIエージェントは、認可ポリシーが正しく評価されるように、認証されたエンドユーザーIDを伝播する必要があります。
制限および制限
Autonomous AI DatabaseでOracle Deep Data Securityを使用する場合は、次の点を考慮してください。
-
Oracle Deep Data Securityは、常時オンの暗号化、監査、Oracle AI Database Vault、Oracle Data Safe、その他のデータベース・セキュリティ機能など、Autonomous AI Databaseの組込みセキュリティ機能と連携する認可制御を提供します。
-
認可ポリシーは、組織のアクセス要件を反映するように設計および保守する必要があります。
-
アプリケーションおよびAIエージェントは、ポリシーが正しく評価されるように、エンド・ユーザーのアイデンティティ情報を伝播する必要があります。
詳細は、Oracle Deep Data Securityの理解を参照してください。
Oracle Deep Data Securityの仕組み
Oracle Deep Data Securityでは、エンド・ユーザー、データ・ロールおよびデータ権限を使用して、実行時に認可ポリシーを評価します。
エンドユーザー
エンド・ユーザーは、データへのアクセスを要求する認証済個人を表します。従来のスキーマ・ユーザーとは異なり、エンド・ユーザーはデータベース・オブジェクトを所有したり、オブジェクト権限を直接受信したりしません。
エンド・ユーザーは、Oracle Cloud Infrastructure IAM、Microsoft Entra IDまたはパスワードベースの認証を介して認証されます。Oracle AI Databaseでは、認証済アイデンティティを使用して、適用する認可ポリシーを決定します。
データ・ロール
データ・ロールは、認可ポリシーの名前付きコレクションです。
1つ以上のデータ権限がデータ・ロールに関連付けられ、データ・ロールがエンド・ユーザーに割り当てられます。エンド・ユーザーが認証すると、Oracle AI Databaseによって、割り当てられたデータ・ロールが自動的にアクティブ化されます。
データ権限
データ権限では、次のことを定義します。
-
エンド・ユーザーがアクセスできる行。
-
エンド・ユーザーが表示または変更できる列。
認可ポリシーは、問合せの実行中にOracle AI Databaseが評価するSQL述語を使用して定義されます。ポリシー述語は、ORA_END_USER_CONTEXTなどの関数を介してランタイム・アイデンティティ情報を参照できます。
Oracle AI Databaseは、問合せ結果を返す前に、SQL文を自動的にリライトして適切な認可述語を適用します。
認可フロー
次のシーケンスは、承認の適用方法を示しています。
-
ユーザーは、Oracle Cloud Infrastructure IAM、Microsoft Entra IDまたはサポートされている別の認証方法を使用して認証されます。
-
アプリケーションは、認証済アイデンティティをAutonomous AIデータベースに伝播します。
-
Oracle AI Databaseは、認証されたエンド・ユーザーに割り当てられたデータ・ロールをアクティブ化します。
-
Oracle AI Databaseは、関連するデータ権限を評価します。
-
行レベルおよび列レベルの認可ポリシーが自動的に適用されます。
-
リクエスト元のアプリケーション、分析ツールまたはAIエージェントには、認可されたデータのみが返されます。
認可はデータベース内で実施されるため、アプリケーションおよびAIエージェントは、構成された認可ポリシーをバイパスできません。
詳細は、Oracle Deep Data Security Fundamentalsを参照してください。
例
次の例は、Oracle Deep Data Securityが共通のアプリケーションおよびAIシナリオでアイデンティティ対応アクセスを適用する方法を示しています。
例1: 従業員セルフサービス
組織は、従業員情報を共有EMPLOYEES表に格納します。
従業員は、Microsoft Entra IDを使用して認証を行い、HRアプリケーションにアクセスします。各従業員は、自分の給与、連絡先情報および雇用詳細のみを表示できる必要があります。
Emmaがサインインして従業員情報をリクエストすると、アプリケーションは認証されたIDをAutonomous AI Databaseに渡します。Oracle AI Databaseは、適用可能なデータ付与を評価し、Emmaの従業員レコードのみを返します。Emmaが別の従業員の情報にアクセスしようとすると、データベースでは、構成された認可ポリシーに基づいて結果が自動的にフィルタされます。
例2: マネージャ・アクセス
管理者は、所属階層の従業員情報にアクセスする必要があります。
たとえば、Marvinはソフトウェア・エンジニアリング・チームを管理しています。Oracle Deep Data Securityは、社会保障番号などの機密情報を保護しながら、報告する従業員のレコードへのアクセス権をMarvinに付与します。
Marvinが従業員情報を問い合せると、Oracle AI Databaseは、構成された認可ポリシーを自動的に適用し、自分のロールで許可されている行と列のみを返します。
例3: Microsoft Entra IDを使用したアイデンティティ対応のアクセス
組織は、Microsoft Entra IDをエンタープライズ・アイデンティティ・プロバイダとして使用し、Autonomous AI Databaseをデータ・プラットフォームとして使用します。
従業員は、Microsoft Entra IDアカウントを使用して認証します。アプリケーションは、認証済アイデンティティをAutonomous AI Databaseに伝播します。このデータベースでは、Oracle Deep Data Securityによってアイデンティティがエンド・ユーザーにマップされ、割り当てられたデータ・ロールおよびデータ権限が評価されます。
| ユーザー | 役割 | 承認済アクセス |
|---|---|---|
| エマ | Employee | 自分の従業員情報を表示および更新します。 |
| Marvin | マネージャ | 自分および直属部下の情報を表示します。 |
| HRアナリスト | 人事管理 | 割り当てられたポリシーに従って従業員情報を表示します。 |
| AI支援 | エマの代理 | Emmaがアクセスを許可されているデータのみにアクセスします。 |
すべてのユーザーが同じデータベース表にアクセスしますが、Oracle AI Databaseでは、認証されたアイデンティティに基づいて異なる認可ポリシーが自動的に適用されます。
例4: AIアシスタントのアクセス
AIアシスタントを使用すると、従業員は人事情報について質問できます。
エマは尋ねる:
Show me my salary, manager, and department information.AIアシスタントはSQL文を生成し、Emmaの認証済アイデンティティを使用してAutonomous AI Databaseに送信します。
Oracle AI Databaseは、適用可能な認可ポリシーを評価し、Emmaの認可された情報のみを返します。
Emmaが次のように尋ねる場合:
Show me the salaries of everyone in my department.AIアシスタントは、複数の従業員レコードの取得を試行するSQLを生成できます。結果を返す前に、Oracle AI Databaseは、構成されたデータ権限を評価し、Emmaの認可ポリシーに従って結果をフィルタします。その結果、AIアシスタントはEmmaがアクセスを許可されているデータのみを受信します。
このアプローチにより、組織はAIを活用したアプリケーションを導入しながら、Oracle AI Databaseを利用して承認を一貫して実施できます。
ケース・スタディ: Select AIでOracle Deep Data Securityを使用
このケース・スタディでは、Select AIでOracle Deep Data Securityを使用する方法を示します。この例では、販売表を保護し、ビューを介してAIセーフ・メタデータのみを公開し、エンド・ユーザーとデータ・ロールを作成し、データ権限を作成し、認可された結果のみを問い合せるようにSelect AIエージェントを構成します。
保護されたビジネス・オブジェクトの作成
受注情報を格納する保護されたビジネス・オブジェクトを作成します。
CREATE TABLE sales_sec.sales_orders (
order_id NUMBER PRIMARY KEY,
customer_name VARCHAR2(100),
region VARCHAR2(30),
order_total NUMBER(12,2),
margin_amount NUMBER(12,2),
card_token VARCHAR2(100),
order_status VARCHAR2(20));AIセーフ・ビューの作成
card_token列のメタデータをSelect AIに公開しないAIセーフ・ビューを作成します。
CREATE OR REPLACE VIEW sales_sec.ai_sales_orders_v AS
SELECT order_id,
customer_name,
region,
order_total,
margin_amount,
order_status
FROM sales_sec.sales_orders;エンド・ユーザーおよびデータ・ロールの作成
営業アクセス・ポリシーのエンド・ユーザーおよびデータ・ロールを作成します。
CREATE END USER amy_ne IDENTIFIED BY "<input your password>";
CREATE END USER ben_west IDENTIFIED BY "<input your password>";
CREATE END USER cora_exec IDENTIFIED BY "<input your password>";
CREATE DATA ROLE sales_reader_role;
CREATE DATA ROLE sales_margin_role;
CREATE DATA ROLE sales_exec_role;
CREATE ROLE deepsec_login_role;
GRANT CREATE SESSION TO deepsec_login_role;
GRANT deepsec_login_role TO sales_reader_role;
GRANT deepsec_login_role TO sales_margin_role;
GRANT deepsec_login_role TO sales_exec_role;
GRANT DATA ROLE sales_reader_role TO amy_ne;
GRANT DATA ROLE sales_reader_role TO ben_west;
GRANT DATA ROLE sales_margin_role TO ben_west;
GRANT DATA ROLE sales_exec_role TO cora_exec;データ権限の作成
各ユーザーがアクセスできる行および列を制御するデータ権限を作成します。
AmyはNortheastの売上行を表示できますが、margin_amount列は権限には含まれません。
CREATE OR REPLACE DATA GRANT sales_sec.dg_ne_sales
AS SELECT (order_id, customer_name, region, order_total, order_status)
ON sales_sec.ai_sales_orders_v
WHERE region = 'NORTHEAST'
TO sales_reader_role;Benは、基本列を含む西側の売上行を表示できます。
CREATE OR REPLACE DATA GRANT sales_sec.dg_west_sales
AS SELECT (order_id, customer_name, region, order_total, order_status)
ON sales_sec.ai_sales_orders_v
WHERE region = 'WEST'
TO sales_reader_role;Benの追加ロールでは、West Sales行に対してのみmargin_amount列が公開されます。
CREATE OR REPLACE DATA GRANT sales_sec.dg_west_margin
AS SELECT (margin_amount)
ON sales_sec.ai_sales_orders_v
WHERE region = 'WEST'
TO sales_margin_role;Coraでは、すべての行とすべての公開列を表示できます。
CREATE OR REPLACE DATA GRANT sales_sec.dg_exec_all_sales
AS SELECT
ON sales_sec.ai_sales_orders_v
TO sales_exec_role;データ付与強制の有効化
AIセーフ・ビューでデータ権限の適用を有効にします。
SET USE DATA GRANTS ONLY ON sales_sec.ai_sales_orders_v ENABLED;Select AI Agentの構成
保護されたビューのみを使用するようにSelect AIプロファイル、ツール、エージェント、タスクおよびチームを構成します。
BEGIN
DBMS_CLOUD_AI.CREATE_PROFILE(
profile_name => 'SALES_DEEPSEC_NL2SQL',
attributes => '{
"provider": "oci",
"credential_name": "OCI$RESOURCE_PRINCIPAL",
"region": "us-chicago-1",
"object_list": [{"owner":"SALES_SEC","name":"AI_SALES_ORDERS_V"}],
"comments": true,
"temperature": 0
}'
);
DBMS_CLOUD_AI_AGENT.CREATE_TOOL(
tool_name => 'SALES_SQL',
attributes => '{
"tool_type": "SQL",
"tool_params": {"profile_name":"SALES_DEEPSEC_NL2SQL"}
}'
);
DBMS_CLOUD_AI_AGENT.CREATE_AGENT(
agent_name => 'SALES_ANALYST_AGENT',
attributes => '{
"profile_name":"SALES_DEEPSEC_NL2SQL",
"role":"Answer sales questions using only authorized SQL results."
}'
);
DBMS_CLOUD_AI_AGENT.CREATE_TASK(
task_name => 'ANSWER_SALES',
attributes => '{
"instruction":"Answer this sales question: {query}",
"tools":["SALES_SQL"],
"enable_human_tool":"false"
}'
);
DBMS_CLOUD_AI_AGENT.CREATE_TEAM(
team_name => 'SALES_DEEPSEC_TEAM',
attributes => '{"agents":[{"name":"SALES_ANALYST_AGENT","task":"ANSWER_SALES"}],
"process":"sequential"}'
);
END;
/Select AI Agentを使用した問合せ
次の Select AI Agentプロンプトを使用します。
SELECT AI AGENT show sales by region including margin;Oracle Deep Data Securityでは、結果が返される前に、構成済のデータ権限が適用されます。
| エンドユーザー | 承認済結果 |
|---|---|
amy_ne |
北東の売上行のみを表示します。margin_amount列は、NULLとして使用できないか、または戻されます。 |
ben_west |
西部の売上行のみを表示します。margin_amount列が表示されます。 |
cora_exec |
すべてのリージョンおよびmargin_amount列を表示します。 |
| すべてのユーザー | card_tokenはSelect AIオブジェクト・リストに表示されないため、ユーザーには表示されません。 |