プライバシーとセキュリティ
このページは、MIDAS がデータをどこで処理し、どこに保存し、外部のサーバーとどのような通信をするかを説明します。あわせて、利用条件とブラウザ要件をまとめます。
データの処理場所
データの読み込み、計算、描画はすべてブラウザ内で完結します。MIDAS には、データを受け取って処理するサーバーがありません。CSV の解析、統計モデルの推定、グラフの描画は、ブラウザの中で動く MIDAS 自身のプログラムが実行します。列の型の判定と変換、SQL、MDS ファイル内の Parquet 形式の行データの読み書きは、同じくブラウザの中で動く DuckDB1 が実行します。
MIDAS の提供者はユーザーのデータにアクセスできません。データはユーザーのブラウザの中だけにあり、提供者のサーバーには送られないためです。プライバシーポリシー の第 4 条もこの点を明記しています。
データの保存場所
MIDAS が保存するものはすべて、ブラウザが app.midas-app.org というサイト専用に区切った保存領域に入ります。MIDAS はブラウザの 4 種類の保存領域を使い分け、それぞれに次のものを置きます。
| 保存領域 | 保存するもの |
|---|---|
| OPFS(Origin Private File System) | ブラウザに保存したプロジェクトのデータセット、レポート、分析結果と、保存とエクスポートの途中に書く一時ファイル、最後にエクスポートした MDS ファイルの複製 |
| IndexedDB | プロジェクトの一覧情報、最近開いたファイルの記録、Reload Dataset 用のファイル参照、署名鍵と登録済みの公開鍵、ログ、エラー履歴 |
| localStorage | 設定と、オフライン用ファイルの取得を完了した日時 |
| Cache Storage | オフライン利用のためにブラウザが保持するアプリのファイル、DuckDB とその拡張、サンプルデータ |
保存したプロジェクトがユーザーの操作なしに消えるのは、ブラウザが容量不足を理由に自動削除したときだけです。MIDAS はプロジェクトの保存時に、保存したデータを容量不足による自動削除の対象から外すようブラウザへ要求します。ブラウザが許可すれば、以後そのデータは自動削除されません。
OPFS の一時ファイルとエクスポートの複製は、ユーザーの操作なしに MIDAS が削除します。一時ファイルは保存やエクスポートが終わった時点で削除し、書き出しの途中でタブを閉じて残ったものは次に MIDAS を開いたときに削除します。最後にエクスポートした MDS ファイルの複製は、同じタブで次のエクスポートを始めたときか、そのタブを閉じた後に MIDAS を開いたときに削除します。
保存したデータをユーザーが消す方法は 3 つあります。Storage Management 画面でのプロジェクトの削除、Full Application Reset の実行、ブラウザの設定での app.midas-app.org のサイトデータの消去です。後の 2 つはすべてのデータを消します。プロジェクトの削除と容量の確認は ストレージ管理 を参照してください。
ブラウザが OPFS へのアクセスを拒否する状態では、プロジェクトの保存と読み込み、MDS ファイルへのエクスポートができません。ブラウザによっては、プライベートブラウジングでこの状態になります。MIDAS は起動時にこの状態を検出してホーム画面に警告を表示します。分析そのものは実行できます。
MIDAS は障害調査のために操作とエラーの記録を IndexedDB に書き、ブラウザの外へは送りません。この記録は Help > Settings... の Logs タブからファイルとして書き出せます。書き出したログは、実行した SQL 文など、扱っていたデータに関する情報を含むことがあります。
外部との通信
ユーザーの操作なしに MIDAS が自動で始める外部との通信は、アプリを動かすファイルの取得と利用状況の送信の 2 種類だけです。ユーザーの操作で起きる通信には、URL からのインポートとリンクのクリックがあります。
アプリを動かすファイルの取得は、app.midas-app.org からのアプリのファイル、DuckDB とその拡張2、サンプルデータのダウンロードです。ユーザーのデータを含む通信ではありません。
利用状況の送信は、アプリの改善のために MIDAS が app.midas-app.org へ送るイベントです。この送信を無効にする設定はありません。送るのは次の 3 種類のイベントと、アプリのバージョン、エラーのイベントに添えるエラー種別の語だけです。
- ホーム画面を表示したこと
- プロジェクト画面を表示したこと
- 未処理の JavaScript エラーが発生したこと
送信内容にユーザーのデータは含まれません。データセットの内容、ファイル名、列名、使った機能の名前は送りません。エラーのイベントに添えるエラー種別の語は、MIDAS のプログラムに固定で書かれた一覧から選びます。一覧には TypeError や RangeError などが入っており、一覧にない種別のエラーは「その他のエラー」を表す語に、エラーオブジェクトでない値は値の型名に置き換えます。エラーメッセージの本文は送りません。この方式により、送信する文字列は事前に決まった有限の語に限られ、ユーザーのデータが混じる余地がありません。
受け取ったサーバーは、国・地域と、ブラウザの種類を表す文字列(User-Agent)を付け加えて、提供者が配信に使う Cloudflare, Inc. の基盤に記録します。この基盤は記録を最大 6 か月保持した後、自動で削除します。収集する情報の一覧は プライバシーポリシー の第 3 条を参照してください。
URL からのインポートには、経路によらず同じ制限があります。主な経路は、ホーム画面の Open from URL、Data > Import Data... の URL タブ、URL からインポートしたデータセットの Reload Dataset の 3 つです。取得できるのは HTTPS の URL だけです。取得先が別の URL への転送を返した場合、MIDAS は転送先を取得せずインポートを中止します。クラウドサービスのメタデータエンドポイント3への接続は常に拒否します。応答の待ち時間は 30 秒までです。MIDAS は、10 MB を超える MDS ファイルや CSV ファイルでは続行するかを確認します。この閾値は Help > Settings... の Import タブで変更できます。
MIDAS は、信頼済み URL の一覧にない URL から新たにインポートするときに警告します。一覧は Help > Settings... の Security タブの Trusted URLs にあり、https://midas-app.org/ 配下があらかじめ入っています。Reload Dataset の再取得では、この警告を表示しません。同じ Security タブで Block connections to untrusted domains を有効にすると、一覧にない URL からのインポートは、Reload Dataset を含めて警告ではなく拒否になります。
列に設定したリンク表示のリンクとレポート本文の Markdown リンクをユーザーがクリックしても、リンク先のサイトに MIDAS のページの URL は伝わりません。MIDAS はこれらのリンクを新しいタブで開き、ブラウザが通常送る「どのページから来たか」を示す URL(Referer)を送らないようリンクに指定しているためです。リンクをクリックできる条件と、リンクを無効にしている画面に表示する警告は 署名鍵の管理 を参照してください。
MIDAS は、ページから出る通信の宛先を Content Security Policy(CSP)で制限します。CSP は、ページごとに許可する通信先をブラウザに宣言し、それ以外をブラウザに拒否させる仕組みです。既定では、通信先を https:// で始まる URL に限ります。Block connections to untrusted domains を有効にすると、MIDAS は CSP をさらに絞り、通信先を app.midas-app.org と信頼済み URL のサイトだけにします。MIDAS は CSP をページの読み込み時にだけ設定するため、この設定の変更はページを再読み込みするまで効きません。
SQL クエリや MDS ファイルに含まれる SQL は、外部の URL を読めません。MIDAS は DuckDB を動かす部分に別の CSP を適用し、通信先を app.midas-app.org だけに限っています。加えて、DuckDB が外部から拡張を自動で取得する設定を無効にしています。
MIDAS は CSP により、他のサイトのページへの埋め込みも拒否します。埋め込めるのは app.midas-app.org 自身と midas-app.org のページだけです。これにより、第三者のサイトが MIDAS を見えない形で自分のページに重ね、ユーザーに気づかれずに MIDAS の操作をさせることはできません。
配信経路の Cloudflare は、IP アドレスを含むリクエストの情報を処理し保持します。提供者がこの情報にアクセスするのはセキュリティ上の必要があるときだけで、行動追跡やプロファイリングには使いません。Cloudflare が保持する情報の扱いは プライバシーポリシー の第 3 条と第 5 条を参照してください。
ライセンスと利用条件
MIDAS の利用条件は 利用規約 が定め、規約の正文は日本語版です。MIDAS は無料で、規約は商用目的を含む利用を認めています。ただしオープンソースソフトウェアではなく、規約は MIDAS の全部または一部を自分のサーバーで配信することと、MIDAS を改変することを禁止しています。準拠法は日本法です。
提供者は MIDAS の動作と結果を保証しません。MIDAS はベータ版で、機能を予告なく追加・変更・削除することがあります。結果の正確性、完全性、信頼性も保証せず、利用によって生じた損害について、故意または重過失の場合を除いて責任を負いません。
MIDAS が同梱するオープンソースソフトウェアとサンプルデータのライセンスは、Third-Party Licenses のページが列挙しています。サンプルデータの一部は第三者が作成したもので、それぞれの出典と作成者の表示もこのページに載せています。
ブラウザ要件
MIDAS の動作には、WebAssembly、Web Worker、IndexedDB、Web Crypto API の 4 つのブラウザ機能が必要です。WebAssembly と Web Worker は DuckDB の実行に、IndexedDB は署名鍵などの 保存 に、Web Crypto API は MDS ファイルの 署名と検証 に使います。プロジェクトの保存と読み込みと MDS ファイルへのエクスポートにはさらに OPFS が、オフライン利用には Service Worker が必要です。
ブラウザによって使えない機能が 2 つあります。Reload Dataset で読み直したファイルを記憶し、次回から同じファイルを選ばずに読み直せる機能は、File System Access API に依存し、Chrome と Edge で使えます。この機能の動作は テーブルメニュー を参照してください。アプリとしてのインストールも対応ブラウザが限られます。対応状況は PWA・オフライン利用 を参照してください。
提供者はブラウザを操作する自動テストを Chromium だけで実行しています。Chromium は Chrome と Edge の基盤となるブラウザです。Firefox と Safari の動作は継続的には検証していません。
MIDAS はデスクトップサイズのディスプレイを前提にしており、スマートフォンやタブレットの画面幅は想定していません。
See also
- ストレージ管理 - 保存したプロジェクトの確認と削除、容量の確認
- MDS ファイル - プロジェクトファイルの構造と電子署名
- 署名鍵の管理 - 鍵の生成とバックアップ、他者の公開鍵の登録
- PWA・オフライン利用 - アプリとしてのインストールとオフライン利用
脚注
-
DuckDB は SQL の処理系です。MIDAS は、ブラウザの中で動く DuckDB-WASM を使います。 ↩
-
MIDAS は DuckDB の初期化時に ICU 拡張、JSON 拡張、Parquet 拡張を読み込みます。ICU 拡張はタイムゾーン付き日時の処理に、JSON 拡張は SQL 文の構造の解析に、Parquet 拡張は MDS ファイル内の行データの読み書きに使います。3 つとも DuckDB 本体に同梱されないため、MIDAS が
app.midas-app.orgから配信します。 ↩ -
メタデータエンドポイントは、
169.254.169.254などクラウド上の仮想マシンからだけ見えるアドレスで、そのマシンの認証情報を返します。クラウド上で動くブラウザにこのアドレスを読ませる攻撃を防ぐための制限です。 ↩
このページの Markdown 版もあります。