Databricks
フォーマット保持トークナイゼーションを Databricks Lakehouse ワークスペースにガイド付きでオンボーディングします。
概要
Databricks 統合は、DuoKey のフォーマット保持トークナイゼーションサービスへのガイド付きオンボーディングパスです(サービス自体についてはトークナイゼーションを参照してください)。ディスクや VM 全体を保護するのではなく、Lakehouse テーブル内の個々のカラムを保護します。デプロイすると、tokenize / detokenize の Unity Catalog ユーザー定義関数(UDF)を登録する、そのまま実行できる Spark SQL が生成されます。これらの UDF はクエリ実行時に HTTPS 経由で DuoKey のトークナイゼーションサービスを呼び出します — トークナイゼーションを支える鍵暗号化鍵が DuoKey の外に出ることはなく、Databricks クラスターがそれを扱うこともありません。
UDF は薄い HTTPS クライアントです。テナントのトークナイゼーション鍵の解決とフォーマット保持暗号化は、DuoKey 自身が行います。
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 に保存されることも、そこから提供されることもありません。 |
DuoKey は、指定されたワークスペース URL を保存する前に、それがプライベートまたは内部ネットワークのアドレスに解決されないことを確認します。これは、設定ミスによって統合が実際の Databricks ワークスペースではなく内部の対象に向けられることを防ぐためのガードです。
統合のデプロイ
ワークスペースの情報を指定する
ワークスペース URL、対象のカタログとスキーマ、そしてトークン化する予定のカラムに対するデータ型ヒントを入力します。
生成された UDF の SQL を確認する
DuoKey は、必要に応じてカタログ/スキーマを作成し、DuoKey のトークナイゼーションエンドポイントを指す tokenize と detokenize の UDF を登録する、そのまま実行できる SQL を返します。
DuoKey API トークンを Databricks のシークレットとして保存する
トークナイゼーションへのアクセス権を持つユーザーの DuoKey API トークンを保持する Databricks のシークレットを作成し、クラスター設定を通じて Spark に公開します。
UDF 登録用の SQL を実行する
生成された DDL を対象のカタログ/スキーマで実行します。
エンドツーエンドで検証する
サンプル値をトークン化してからデトークン化するクエリを実行し、同じフォーマットで元の値が返ってくることを確認します。
databricks secrets create-scope dke
databricks secrets put-secret dke api_tokenspark.conf.set("dke.api_token", dbutils.secrets.get("dke", "api_token"))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
$$;SELECT <catalog>.<schema>.detokenize(<catalog>.<schema>.tokenize('4111111111111111'));tokenize 呼び出し時に起きること
以下の 4 つのステップは、UDF が登録された後に Spark クエリからの 1 回の tokenize(または detokenize)呼び出しに対してエンドツーエンドで実行される内容です。
detokenize でも同じ 4 つのステップが逆方向に実行されます。ステップ 3 の内部にある FF1 の詳細な仕組みは、トークナイゼーションのページを参照してください。
有効化、無効化、ヘルスチェック、セルフテスト
デプロイ後、統合は有効化または無効化でき、ヘルスチェックとセルフテストを公開します。どちらも Databricks ワークスペースをライブで検査するのではなく、統合の設定と準備状況 — UDF テンプレートが配置されていること、鍵暗号化鍵が Databricks ではなく DuoKey にとどまっていることを含む — を報告します。リンクされた vault に対するライブの接続往復と、ワークスペースへの到達性のライブプローブが必要な場合は、代わりにトークナイゼーションページの Databricks バリアントからデプロイしてください — そのヘルスチェックとセルフテストは、いずれもライブで実行されます。
トークン化された値は元の値と同じ長さおよび文字構成を保ちます — 16 桁のカード番号は別の 16 桁の並びにトークン化され、メールアドレスは @ とドメインの区切り文字を保ちます — そのため、Databricks の下流のクエリ、結合、フォーマット検証は、トークン化されたカラムに対しても引き続き機能します。
Databricks 統合を削除すると UDF は無効になりますが、すでにトークン化された値で書き込まれたデータが遡ってデトークン化されることはありません。統合を削除する前に、平文で必要なデータをデトークン化するか、基盤となるトークナイゼーションサービスを利用可能なままにしておいてください。
前提条件
前提条件
- Unity Catalog が有効な Databricks ワークスペース
- 対象ワークスペースでカタログ/スキーマを作成し、UDF を登録する権限
- トークナイゼーションへのアクセス権を持つユーザーの DuoKey API トークン(Databricks のシークレットとして保存されたもの)
- 統合の接続チェックに使用できる DuoKey vault