Skip to content

Oracle Database 23ai の AI Profile と Database Role を組み合わせて、表示されてはいけない情報を確実に隠蔽できる SELECT AIのプロトタイプ

Notifications You must be signed in to change notification settings

oracle-japan/secure-select-ai-proto

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

SECURE SELECT AI プロトタイプ

Oracle Database 23ai の AI Profile と Database Role を組み合わせて、表示されてはいけない情報を確実に隠蔽できる SELECT AIのプロトタイプ

このディレクトリの内容

$ tree .
.
├── backend (APIサーバー実装 with Helidon)
│   ├── data (外部テーブルアップロード用サンプルファイル)
│   │   ├── leave-log.csv
│   │   ├── leave-log-no-header.csv
│   │   ├── leave-log-no-headers.yaml
│   │   ├── leave-log.yaml
│   │   ├── spot-awards.csv
│   │   └── spot-awards.yaml
│   ├── Dockerfile
│   ├── pom.xml
│   └── src
│       ├── main
│       │   ├── java
│       │   │   └── com
│       │   │       └── example
│       │   │           └── ai
│       │   │               ├── package-info.java
│       │   │               └── query
│       │   │                   ├── CustomExceptionMapper.java
│       │   │                   ├── DatabaseService.java
│       │   │                   ├── ObjectStorageService.java
│       │   │                   ├── SelectAIResource.java
│       │   │                   └── UploadSchema.java
│       │   └── resources
│       │       ├── application.yaml
│       │       ├── logging.properties
│       │       └── META-INF
│       │           ├── beans.xml
│       │           ├── microprofile-config.properties
│       │           └── native-image
│       │               └── com
│       │                   └── example
│       │                       └── select-ai
│       │                           └── native-image.properties
│       └── test
│           ├── java
│           │   └── com
│           │       └── example
│           │           └── ai
│           │               └── query
│           │                   └── SelectAIResourceTestTest.java
│           └── resources
│               ├── application-test.yaml
│               └── META-INF
│                   └── microprofile-config.properties
├── etc
│   └── proto
│       ├── server.sh (サーバー起動サンプルsh)
│       ├── sql (データベース設定SQLファイル)
│       │   ├── hr.sql
│       │   ├── populate.sql
│       │   └── setup.sql
│       └── sql.sh
├── frontend (Streamlit による簡易UI)
│   ├── python
│   │   └── select_ai_chat3.py
│   └── select_ai_chat.sh
└── README.md

API

$ curl localhost:8080/openapi

tags:
- 
  description: SELCET AIを活用した自然言語データベース検索API
  name: SelectAI
info: 
  title: Generated API
  version: '1.0'
openapi: 3.0.3
paths:
  /select-ai/v1: 
    get: 
      tags:
      - SelectAI
      description: サービスの疎通確認用エンドポイントです。
      responses:
        '200': 
          content:
            application/json:  {}
          description: サービス稼働中
      summary: 疎通確認
  /select-ai/v1/external/delete: 
    post: 
      tags:
      - SelectAI
      description: 外部テーブルおよび対応するストレージ上のオブジェクトを削除します。
      requestBody: 
        content:
          application/json: 
            schema: 
              type: object
        description: 削除リクエスト - tableName
        required: true
      responses:
        '204': 
          description: 削除成功
      summary: 外部テーブル削除
  /select-ai/v1/external/upload: 
    post: 
      tags:
      - SelectAI
      parameters:
      - 
        description: 上書き可否
        example: true
        in: query
        name: overwrite
        schema: 
          default: 'true'
          type: boolean
      description: 外部データとスキーマをオブジェクトストレージにアップロードし、外部テーブルを登録します。
      requestBody: 
        content:
          application/json: 
            schema: 
              type: object
        description: アップロードリクエストJson - data, schema
        required: true
      responses:
        '200': 
          content:
            application/json:  {}
          description: アップロード結果
      summary: 外部データアップロード
  /select-ai/v1/objects: 
    get: 
      tags:
      - SelectAI
      description: 登録済みのすべてのオブジェクトを一覧表示します。
      responses:
        '200': 
          content:
            application/json:  {}
          description: オブジェクト一覧
      summary: 全オブジェクト一覧
  /select-ai/v1/query: 
    post: 
      tags:
      - SelectAI
      parameters:
      - 
        description: 入力に外部テーブルの付加情報追加
        example: false
        in: query
        name: add-prompt
        schema: 
          default: false
          type: boolean
      - 
        description: 出力フォーマット
        example: with-schema
        in: query
        name: format
        schema: 
          default: with-schema
          type: string
      description: JWTまたはリクエストボディによるユーザーを確認し、SELECT AIを使ってクエリを実行します。
      requestBody: 
        content:
          application/json: 
            schema: 
              type: object
        description: リクエストJson - query, user
        required: true
      responses:
        '200': 
          content:
            application/json:  {}
          description: クエリ実行結果
      summary: AIクエリ実行
  /select-ai/v1/reconcile: 
    get: 
      tags:
      - SelectAI
      description: 権限情報とDBロール/AIプロファイルとの整合性をとります。
      responses:
        '204': 
          description: 整合処理完了
      summary: DBロール/AIプロファイルの再構築
  /select-ai/v1/relations: 
    get: 
      tags:
      - SelectAI
      parameters:
      - 
        description: グループ名
        in: query
        name: group
        schema: 
          type: string
      description: 指定されたグループに対するオブジェクト関連情報を一覧表示します。
      responses:
        '200': 
          content:
            application/json:  {}
          description: 関連オブジェクト一覧
      summary: グループの関連オブジェクト一覧
  /select-ai/v1/relations/{operation}: 
    post: 
      tags:
      - SelectAI
      parameters:
      - 
        description: 操作種別(add/delete)
        in: path
        name: operation
        required: true
        schema: 
          type: string
      description: グループとオブジェクトの関連付けや解除を行います。
      requestBody: 
        content:
          application/json: 
            schema: 
              type: object
        description: 関連操作リクエスト - group, objects(schema, object)
        required: true
      responses:
        '204': 
          description: 操作成功
      summary: グループとオブジェクトの関連付け/解除

ビルド

cd backend
mvn package

起動方法

  • etc/proto/sql 配下のSQLスクリプトを実行
    • hr.sql 以外は管理者ユーザで実行
    • hr.sql は HRユーザで実行
  • ウォレットファイルをダウンロードして解凍
    • JDBC URLを確認
  • etc/proto/server.sh を環境に合わせて修正して起動

About

Oracle Database 23ai の AI Profile と Database Role を組み合わせて、表示されてはいけない情報を確実に隠蔽できる SELECT AIのプロトタイプ

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published