メインコンテンツまでスキップ

ABACポリシーでのタイムトラベル

備考

ベータ版

ABACポリシーが設定されたテーブルでのタイムトラベルはベータ版です。この機能を使用するには、 属性ベースのアクセス制御を使用したUCマネージドテーブルでのタイムトラベル プレビューを有効にしてください。標準コンピュートでのクエリーにはDatabricks Runtime 19以降が必要です。Serverless コンピュートもサポートされています。

タイムトラベルを使用すると、特定Timestampまたは Delta Lake トランザクションログのバージョン番号を使用して、履歴テーブルデータを照会できます。

Databricks Runtime 19以降では、条件を満たすテーブルに対するタイムトラベルクエリーで、ABACの行フィルターおよび列マスクポリシーが適用されます。SQLクエリーでは、テーブル識別子において TIMESTAMP AS OF、VERSION AS OF、または @ の構文 (table_name@v1 や table_name@20240101000000000 など) を使用できます。DataFrameクエリーでは、timestampAsOf または versionAsOf オプションを使用できます。

要件​

テーブルとコンピュートは、次のすべての要件を満たしている必要があります。

ABAC ポリシーにおけるタイムトラベルの仕組み​

ABACポリシーを適用するタイムトラベルクエリーについて、Databricksは要求されたヒストリカルテーブルバージョンを読み取り、そのスキーマを現在のテーブルスキーマと比較します。Databricksは両方のスキーマに存在する列のみを返すため、ヒストリカルスキーマまたは現在のスキーマのいずれかにのみ存在する列は公開されません。次に、テーブルに現在定義されているABACポリシーを、クエリーを実行するユーザーのヒストリカルデータに適用します。

履歴バージョンに欠落しているか、互換性のない列に現在のポリシーが依存している場合、クエリーは保護されていないデータを返すのではなく、フェイルクローズします。

ベストプラクティス​

  • 列マッピングを有効に保ち、ユーザーがクエリーを実行する可能性のあるすべてのテーブルバージョンで同じ列マッピングモードを使用してください。
  • ポリシーを適用または変更する前に、ポリシーによって参照される各カラムが、ユーザーがクエリーを実行する必要のあるすべての履歴バージョンに互換性のある定義で存在することを確認してください。
  • テーブルのスキーマやポリシーを変更した後に、代表的なタイムトラベル クエリーをテストして、期待される列、行フィルター、およびマスクを確認します。

制限事項​

テーブルレベルの行フィルターまたは列マスクが設定されているテーブルでのタイムトラベルはサポートされていません。