03セキュリティと信頼
ウェアハウスのパスワードが当社のengineに届くことはありません。
SQLは当社が書きます。実行するのはお客様のネットワーク内のQuery Runnerで、読み取り専用ロールを使い、パスワードと監査ログもRunnerが保持します。
ステージ 1 / 4
呼び出し元
Metricを名前で要求します。SQLは書きません。
✗ウェアハウスのキーは持ちません。
受け取るもの
# a question, asked by metric name
渡すもの
{ "metrics": ["revenue"],
"filters": [{ "region": "EU" }] }
Authorization: Bearer <JWT or API key>ステージ 2 / 4
Engine
認証情報を確認し、権限と行ルールを適用してからSQLを生成します。
✗ウェアハウスのパスワードは見えません。
受け取るもの
semantic query + credential
渡すもの
SELECT SUM(o.amount) ... WHERE o.region = $1 + runner key
ステージ 3 / 4
Query Runner · お客様側
読み取り専用ロールでSQLを実行します。パスワード、キルスイッチ、監査ログを保持します。
✓保持するもの:パスワード、キルスイッチ、監査ログ。
受け取るもの
bound SQL + runner key
渡すもの
native connection (read-only role)
ステージ 4 / 4
ウェアハウス · お客様側
行をRunnerに返します。接続できるのはRunnerだけです。
✓データがコピーとしてお客様の外へ出ることはありません。
受け取るもの
read-only connection
渡すもの
rows (not kept by the engine)
✗engineからウェアハウスへの直接接続。そのような経路はありません。
この形の理由
SQLを書くことと、実行することは別の仕事
多くのセマンティックレイヤーは、ウェアハウスへの接続を抱えています。私たちはそれを二つに分け、エージェントと話す側が鍵を持たないようにしました。
詳しくはこちら: engineがウェアハウスに直接接続することはありません →
- 01
コンパイルは実行ではない
SQLを書くプロセスがパスワードも持っていれば、本番環境ごとそのプロセスを信頼するしかありません。
- 02
エージェントは被害範囲を広げる
エージェントは数が多く、常に動いています。どれもパスワードの一歩手前にいるべきではありません。
- 03
管理はウェアハウスの隣で
パスワード、キルスイッチ、監査ログはRunnerが持ちます。
Query Runner
コンパイルはこちらで、実行はそちらで
engineはウェアハウスの隣にあるRunnerへSQLを送ります。Runnerを一時停止すれば、すべてのクエリが止まります。engineにほかの入り口はありません。
datahashi engine
コンパイルアクセスを確認し、行ルールを適用して、SQLを生成します。SELECT SUM(o.amount) AS revenue FROM analytics.orders o WHERE o.region = $1
Query Runner · お客様側
実行DSNを保持し、ウェアハウスの隣でSQLを実行します。✓ 接続済み · 読み取り専用ロール接続するのはRunnerだけ
ほかの何も、ウェアハウスへの接続を開きません。
読み取り専用、お客様の条件で
お客様が作成し、いつでも取り消せる読み取り専用ロールを使います。
何もコピーしない
抽出も同期もしません。行は通過するだけで保存されません。Rollupはオプトインです。
すべてのリクエストで
毎回、この順で5つのチェック
呼び出し側はMetricを名前で指定します。生のテーブルや隠れた列を求める方法はありません。
- 1
クレデンシャル
誰が問い合わせているかは、検証済みのトークンやキーから決まります。リクエスト本文で他人になりすますことはできません。
- 2
アクセスモード
各キーはgovernedかexploreに固定されています。クライアントが切り替えることはできません。
- 3
Metricとフィールドの権限
キーには、許可したMetricとフィールドだけが見えます。
- 4
行ルール
行レベルセキュリティが、SQLを書く前にすべての読み取りを絞り込みます。テナント同士が互いの行を見ることはありません。
- 5
コスト上限
ワークスペースごとの行数上限とコスト上限が、ひとつの暴走した呼び出し元から全体を守ります。
そのうえで、SQLはバインド・パラメータ化された形でRunnerへ送られます。
クレデンシャルと監査
配りやすく、取り消しやすいキー
パスワードではなくRunnerキー
当社が保存するのはRunner用のキーです。それだけではウェアハウスを開けません。
エージェントはOAuthでサインイン
短命でスコープ付きのトークン。長期間有効な秘密が設定ファイルに残ることはありません。
キーごとにオーナーとモードはひとつ
どのキーも、ダウンタイムなしで取り消し・ローテーションできます。
すべてのクエリを計測
各クエリがスキャン量を記録するので、チームや顧客ごとにコストを集計できます。