データ共有の監査と監視
この記事では、データ プロバイダーと受信者が監査ログを使用して Delta Sharing イベントを監視する方法について説明します。 プロバイダー監査ログには、プロバイダーが実行したアクションと、プロバイダーの共有データに対して受信者が実行したアクションが記録されます。 受信者監査ログには、共有へのアクセスとプロバイダー オブジェクトの管理に関連するイベントが記録されます。
Delta Sharing監査ログ イベントのリストを表示するには、 Delta Sharingイベントを参照してください。
要件
監査ログにアクセスするには、アカウント管理者はDatabricksの監査ログ システム テーブルを有効にする必要があります。 「システムテーブルを有効にする」を参照してください。 監査ログ システム テーブルの詳細については、 「監査ログ システム テーブル リファレンス」を参照してください。
アカウント管理者またはメタストア管理者でない場合は、監査ログを読み取るためにsystem.access.audit
へのアクセス権を付与する必要があります。
監査ログでDelta Sharingイベントを表示する
アカウントでシステムテーブルが有効になっている場合、監査ログはsystem.access.audit
に保存されます。 あるいは、アカウントに監査ログ配信が設定されている場合は、ログが配信されるバケットとパスを知っておく必要があります。
ログに記録されたイベント
Delta Sharing監査ログ イベントのリストを表示するには、 Delta Sharingイベントを参照してください。
受信者のクエリ結果の詳細を表示する
Delta Sharing では、テーブル、ビュー、マテリアライズドビュー、ストリーミング可能、ボリュームなどの資産タイプの共有がサポートされています。 Delta Sharing は、署名済み URL またはスコープダウンされた STS トークンから基になるデータへの一時的な読み取りアクセスを提供します。 次の表は、共有タイプがログに記録された監査ログイベントにどのように対応するかを示しています。
シナリオ |
監査ログイベント |
---|---|
開いている受信者と共有されているテーブルと、Databricks の受信者と共有されている履歴のないテーブル |
|
Databricks の受信者と共有される履歴を含むテーブル |
|
ボリューム共有 (STS トークンベースのアクセス) |
|
ログに記録されたエラー
Delta Sharingアクションの試行が失敗した場合、そのアクションはログの response.error_message
フィールドにエラー メッセージとともに記録されます。 <
文字から>
文字までの項目は、プレースホルダーテキストを表します。
プロバイダーログのエラーメッセージ
Delta Sharing は、データ プロバイダーに対して次のエラーを記録します。
選択したメタストアではDelta Sharing有効になっていません。
DatabricksServiceException: FEATURE_DISABLED: Delta Sharing is not enabled
存在しないカタログに対して操作が試行されました。
DatabricksServiceException: CATALOG_DOES_NOT_EXIST: Catalog ‘<catalog>’ does not exist.
アカウント管理者またはメタストア管理者ではないユーザーが特権操作を実行しようとしました。
DatabricksServiceException: PERMISSION_DENIED: Only administrators can <operation-name> <operation-target>
メタストアが割り当てられていないワークスペースからメタストアに対して操作が試行されました。
DatabricksServiceException: INVALID_STATE: Workspace <workspace-name> is no longer assigned to this metastore
要求に受信者名または共有名がありませんでした。
DatabricksServiceException: INVALID_PARAMETER_VALUE: CreateRecipient/CreateShare Missing required field: <recipient-name>/<share-name>
要求に無効な受信者名または共有名が含まれていました。
DatabricksServiceException: INVALID_PARAMETER_VALUE: CreateRecipient/CreateShare <recipient-name>/<share-name> is not a valid name
ユーザーがUnity Catalogメタストアにないテーブルを共有しようとしました。
DatabricksServiceException: INVALID_PARAMETER_VALUE: Only managed or external table on Unity Catalog can be added to a share
ユーザーは、すでにローテーションされた状態にあり、以前のトークンがまだ期限切れになっていない受信者をローテーションしようとしました。
DatabricksServiceException: INVALID_PARAMETER_VALUE: There are already two active tokens for recipient <recipient-name>
ユーザーが新しい受信者を作成するか、既存の受信者と同じ名前で共有しようとしました。
DatabricksServiceException: RECIPIENT_ALREADY_EXISTS/SHARE_ALREADY_EXISTS: Recipient/Share <name> already exists`
ユーザーが存在しない受信者または共有に対して操作を実行しようとしました。
DatabricksServiceException: RECIPIENT_DOES_NOT_EXIST/SHARE_DOES_NOT_EXIST: Recipient/Share '<name>' does not exist
ユーザーが共有にテーブルを追加しようとしましたが、テーブルは既に追加されていました。
DatabricksServiceException: RESOURCE_ALREADY_EXISTS: Shared Table '<name>' already exists
ユーザーが、存在しないテーブルを参照する操作を実行しようとしました。
DatabricksServiceException: TABLE_DOES_NOT_EXIST: Table '<name>' does not exist
ユーザーが、存在しないスキーマを参照する操作を実行しようとしました。
DatabricksServiceException: SCHEMA_DOES_NOT_EXIST: Schema '<name>' does not exist
ユーザーが存在しない共有にアクセスしようとしました。
DatabricksServiceException: SHARE_DOES_NOT_EXIST: Share <share-name> does not exist.
受信者ログのエラーメッセージ
Delta Sharing は、データ受信者に対して次のエラーを記録します。
ユーザーが、アクセス許可のない共有にアクセスしようとしました。
DatabricksServiceException: PERMISSION_DENIED: User does not have SELECT on Share <share-name>
ユーザーが存在しない共有にアクセスしようとしました。
DatabricksServiceException: SHARE_DOES_NOT_EXIST: Share <share-name> does not exist.
ユーザーが共有に存在しないテーブルにアクセスしようとしました。
DatabricksServiceException: TABLE_DOES_NOT_EXIST: <table-name> does not exist.