メインコンテンツまでスキップ
適用対象:
DuoKey Cockpit v2Databricks Lakehouse(Spark / Unity Catalog)フォーマット保持トークナイゼーション

概要​

Databricks 統合は、DuoKey のフォーマット保持トークナイゼーションサービスへのガイド付きオンボーディングパスです(サービス自体についてはトークナイゼーションを参照してください)。ディスクや VM 全体を保護するのではなく、Lakehouse テーブル内の個々のカラムを保護します。デプロイすると、tokenize / detokenize の Unity Catalog ユーザー定義関数(UDF)を登録する、そのまま実行できる Spark SQL が生成されます。これらの UDF はクエリ実行時に HTTPS 経由で DuoKey のトークナイゼーションサービスを呼び出します — トークナイゼーションを支える鍵暗号化鍵が DuoKey の外に出ることはなく、Databricks クラスターがそれを扱うこともありません。

Spark / Unity Catalog から DuoKey トークナイゼーションエンドポイントまで
Databricks / Unity Catalogtokenize / detokenize の Spark UDFHTTPS 経由で DuoKey を呼び出す
HTTPS、Databricks のシークレットから取得したベアラートークン
DuoKey Cockpit のトークナイゼーションエンドポイントテナントと名前付き鍵を解決し、FPE(FF1)を実行します
プラットフォームマスターキーから HMAC で導出
テナントのトークナイゼーション鍵テナントと鍵名ごとに決定論的に導出 — 保存されず、DuoKey の外に出ることもありません

UDF は薄い HTTPS クライアントです。テナントのトークナイゼーション鍵の解決とフォーマット保持暗号化は、DuoKey 自身が行います。

Databricks はトークナイゼーションのバリアントでもあります

Databricks は、アプリカタログ内の独自のエントリ(このページ)としても、トークナイゼーション統合の 3 つのバリアントの 1 つとしても登場します。どちらも同じ基盤の tokenize / detokenize サービスをオンボーディングし、同等の Spark UDF を生成します — 行き着いたいずれかの経路を選んでください。同じワークスペースに対して両方を設定する必要はありません。

設定​

フィールド目的
ワークスペース URLオンボーディング対象の Databricks ワークスペース(例:`https://<workspace-id>.cloud.databricks.com`)。プライベート/内部アドレスに解決されないことを保存時に検証します。
Unity Catalog のカタログtokenize/detokenize の UDF を登録するカタログ。
Unity Catalog のスキーマUDF を登録するスキーマ(データベース)。
ウェアハウス/クラスター ID任意、情報提供目的 — UDF 登録用の DDL を実行することが想定される SQL ウェアハウスまたはクラスター。
データ型ヒントこのデプロイメントでトークナイゼーションのアルファベットとドメイン分離用の tweak を選ぶために使用されるデフォルトのデータ型(例:`creditcard`、`ssn`、`email`)。
Vault任意。参照用に統合に対して記録されます — tokenize/detokenize の鍵自体はテナントごとに決定論的に導出され(後述の「tokenize 呼び出し時に起きること」を参照)、この vault に保存されることも、そこから提供されることもありません。
ワークスペース URL の検証

DuoKey は、指定されたワークスペース URL を保存する前に、それがプライベートまたは内部ネットワークのアドレスに解決されないことを確認します。これは、設定ミスによって統合が実際の Databricks ワークスペースではなく内部の対象に向けられることを防ぐためのガードです。

統合のデプロイ​

1

ワークスペースの情報を指定する

ワークスペース URL、対象のカタログとスキーマ、そしてトークン化する予定のカラムに対するデータ型ヒントを入力します。

2

生成された UDF の SQL を確認する

DuoKey は、必要に応じてカタログ/スキーマを作成し、DuoKey のトークナイゼーションエンドポイントを指す tokenize と detokenize の UDF を登録する、そのまま実行できる SQL を返します。

3

DuoKey API トークンを Databricks のシークレットとして保存する

トークナイゼーションへのアクセス権を持つユーザーの DuoKey API トークンを保持する Databricks のシークレットを作成し、クラスター設定を通じて Spark に公開します。

4

UDF 登録用の SQL を実行する

生成された DDL を対象のカタログ/スキーマで実行します。

5

エンドツーエンドで検証する

サンプル値をトークン化してからデトークン化するクエリを実行し、同じフォーマットで元の値が返ってくることを確認します。

DuoKey API トークンを保存するBASH
databricks secrets create-scope dke
databricks secrets put-secret dke api_token
トークンを Spark に公開する(クラスターの Spark 設定)TEXT
spark.conf.set("dke.api_token", dbutils.secrets.get("dke", "api_token"))
生成される UDF 登録(構成)SQL
CREATE CATALOG IF NOT EXISTS <catalog>;
USE CATALOG <catalog>;
CREATE SCHEMA IF NOT EXISTS <schema>;

CREATE OR REPLACE FUNCTION <catalog>.<schema>.tokenize(input STRING)
RETURNS STRING LANGUAGE PYTHON AS $$
-- calls DuoKey's tokenization endpoint over HTTPS,
-- authenticated with the token stored above
$$;

CREATE OR REPLACE FUNCTION <catalog>.<schema>.detokenize(input STRING)
RETURNS STRING LANGUAGE PYTHON AS $$
-- calls DuoKey's detokenization endpoint over HTTPS
$$;
エンドツーエンドで検証するSQL
SELECT <catalog>.<schema>.detokenize(<catalog>.<schema>.tokenize('4111111111111111'));

tokenize 呼び出し時に起きること​

以下の 4 つのステップは、UDF が登録された後に Spark クエリからの 1 回の tokenize(または detokenize)呼び出しに対してエンドツーエンドで実行される内容です。

Spark ジョブからの tokenize 呼び出し
1. Spark ジョブが DuoKey の UDF を呼び出すtokenize(input) / detokenize(input) — Unity Catalog の Python UDF
HTTPS POST
2. UDF がトークナイゼーションエンドポイントを呼び出すベアラートークンは spark.conf 経由で Databricks のシークレットから読み込まれます
3. DuoKey が鍵を解決し FPE を実行するHMAC で導出された FF1 鍵と、テナントおよびデータ型でスコープされた tweak
4. トークン(または元の値)が返される入力と同じ長さおよび文字構成

detokenize でも同じ 4 つのステップが逆方向に実行されます。ステップ 3 の内部にある FF1 の詳細な仕組みは、トークナイゼーションのページを参照してください。

有効化、無効化、ヘルスチェック、セルフテスト​

デプロイ後、統合は有効化または無効化でき、ヘルスチェックとセルフテストを公開します。どちらも Databricks ワークスペースをライブで検査するのではなく、統合の設定と準備状況 — UDF テンプレートが配置されていること、鍵暗号化鍵が Databricks ではなく DuoKey にとどまっていることを含む — を報告します。リンクされた vault に対するライブの接続往復と、ワークスペースへの到達性のライブプローブが必要な場合は、代わりにトークナイゼーションページの Databricks バリアントからデプロイしてください — そのヘルスチェックとセルフテストは、いずれもライブで実行されます。

フォーマットは保持されます

トークン化された値は元の値と同じ長さおよび文字構成を保ちます — 16 桁のカード番号は別の 16 桁の並びにトークン化され、メールアドレスは @ とドメインの区切り文字を保ちます — そのため、Databricks の下流のクエリ、結合、フォーマット検証は、トークン化されたカラムに対しても引き続き機能します。

統合を削除しても既存データはデトークン化されません

Databricks 統合を削除すると UDF は無効になりますが、すでにトークン化された値で書き込まれたデータが遡ってデトークン化されることはありません。統合を削除する前に、平文で必要なデータをデトークン化するか、基盤となるトークナイゼーションサービスを利用可能なままにしておいてください。

前提条件​

前提条件

  • Unity Catalog が有効な Databricks ワークスペース
  • 対象ワークスペースでカタログ/スキーマを作成し、UDF を登録する権限
  • トークナイゼーションへのアクセス権を持つユーザーの DuoKey API トークン(Databricks のシークレットとして保存されたもの)
  • 統合の接続チェックに使用できる DuoKey vault