1. はじめに

皆さんこんにちは。

今回は、Databricksで診断ログを保存する方法について説明していきます。

※ジョブログについては、こちらをご覧ください。

2. 前提要件

本書を実施する際の前提条件は以下の通りです。

・Log Analyticsワークスペースが必要です。作成していない場合、こちらをご覧ください。

3. 診断設定の作

次は、Databricks のログをLog Analytic ワークスペースへ送信する診断設定の作成方法について説明していきます。

① Databricks ワークスペースの Portal 画面で「診断設定」をクリックします。

②「診断設定を追加する」をクリックします。

③「診断設定の名前」項目で診断設定の名前を入力します。

④「Log Analyticsワークスペースへの送信」をチェックします。

⑤「サブスクリプション」項目で対応サブスクリプションを選択します。

⑥「Log Analyticsワークス」でログの送信希望のワークスペースを選択します。

⑦「カテゴリ」に様々な監視対象があります。希望の監視対象を選択してください。

以下の監視対象をお勧めします。

    • Databricks File System : DBFS に関連するイベント。
    • Databricks Clusters : クラスターに関連するイベント。
    • Databricks Accounts : アカウント、ユーザー、グループ、および IP アクセス リストに関連するイベント。
    • Databricks Notebook: ノートブックに関連するイベント。
    • Databricks SSH : SSH アクセスに関連するイベント。
    • Databricks Secrets : シークレットに関連するイベント。
    • Databricks Genie : サポート担当者によるワークスペース アクセスに関連するイベント。
    • Databricks Unity Catalog : Unity Catalog に関連するイベント。

⑧ 監視対象を選択して、「保存」ボタンをクリックします。

⑨ 診断設定が追加されました。15分後にLog Analytics ワークスペースへログが送信されます。

 

4.診断ログのスキーマ

ログを保存するテーブルのスキーマは以下の通りです。

列名 説明
1 _ResourceId レコードが関連付けられているリソースの一意識別子。
2 _SubscriptionId レコードが関連付けられているサブスクリプションの一意識別子。
3 ActionName 要求のアクション。
4 Category リクエストを記録したサービス。
5 Identity
リクエストを行ったユーザーに関する情報。
6 LogId 重複除去に使用できるログ メッセージの一意識別子。
7 OperationName login、logout、read、write などのアクション。
8 OperationVersion Databricks 操作ベースの診断ログ形式のスキーマ バージョン。
9 RequestId 一意の要求 ID。
10 RequestParams イベントで使用されるパラメーターのキーと値のペア。
11 Response エラー メッセージ (該当する場合)、結果、statusCode など、要求に対する HTTP 応答。
12 ServiceName
ソース要求のサービス。
13 SessionId
アクションのセッション ID。
14 SourceIPAddress
ソース要求の IP アドレス。
15 TenantId
レコードが関連付けられているテナントの一意の識別子。
16 TimeGenerated
アクションのタイムスタンプ (UTC)。
17 Type
テーブルの名前。
18 UserAgent
要求の実行に使用されるブラウザーまたは API クライアント。

 

5.監視対象のアクション

5.1 ノートブックのアクション

アクション 説明
1 attachNotebook ノートブックがクラスターにアタッチされる。 新しい SQL エディターが SQL ウェアハウスにアタッチされるときにも、生成されます。
2 cloneNotebook ユーザーがノートブックを複製する。
3 createFolder ノートブック フォルダーが作成されます。
4 createNotebook ノートブックが作成される。
5 deleteFolder ノートブック フォルダーが削除される。
6 deleteNotebook ノートブックが削除される。
7 deleteRepo リポジトリが削除されます。
8 detachNotebook ノートブックがクラスターからデタッチされる。 また、新しい SQL エディターが SQL ウェアハウスからデタッチされるときにも出力されます。
9 downloadLargeResults ユーザーがノートブックに表示するには大きすぎるクエリ結果をダウンロードする。
10 downloadPreviewResults ユーザーがクエリ結果をダウンロードする。
11 importNotebook ユーザーがノートブックをインポートする。
12 modifyNotebook ノートブックが変更されました。
13 moveFolder ノートブック フォルダーがある場所から別の場所に移動される。
14 moveNotebook ノートブックがある場所から別の場所に移動される。
15 openNotebook ユーザーが UI を使用してノートブックを開きます。
16 renameFolder ノートブック フォルダーの名前が変更されます。
17 renameNotebook ノートブックの名前が変更される。
18 restoreFolder 削除されたフォルダーが復元される。
19 restoreNotebook 削除されたノートブックが復元される。
20 restoreRepo 削除されたリポジトリが復元されます。
21 runCommand 詳細監査ログが有効になっている場合に使用できます。 Databricks がノートブックまたは 新しい SQL エディターでコマンドを実行した後に生成されます。 コマンドは、ノートブック内のセルまたは 新しい SQL エディターのクエリ テキストに対応します。executionTime は秒単位で測定されます。
22 submitCommand ノートブックまたは 新しい SQL エディターで実行するコマンドが送信されたときに生成されます。 コマンドは、ノートブック内のセルまたは 新しい SQL エディターのクエリ テキストに対応します。
23 takeNotebookSnapshot ジョブ サービスまたは MLflow の実行時にノートブック スナップショットが作成される。

5.2 クラスタのアクション

アクション 説明
1 changeClusterAcl ユーザーがクラスター ACl を変更する
2 create ユーザーがクラスターを作成する
3 createResult クラスターの作成の結果。 create と連動。
4 delete クラスターが終了される
5 deleteResult クラスターの終了の結果。 delete と連動。
6 edit ユーザーがクラスター設定を変更する。 これは、クラスター サイズの変更や自動スケーリングの動作を除くすべての変更をログに記録します。
7 permanentDelete UI からクラスターが削除される
8 resize クラスターがサイズ変更される。 これは、変化する唯一のプロパティがクラスター のサイズまたは自動スケーリングの動作である実行中のクラスターに記録されます。
9 resizeResult クラスターのサイズ変更の結果。 resize と連動。
10 restart ユーザーが実行中のクラスターを再起動する
11 restartResult クラスターの再起動の結果。 restart と連動。
12 start ユーザーがクラスターを起動する
13 startResult クラスターの起動の結果。 start と連動。

5.3 Unityカタログのアクション

アクション 説明
1 createMetastore アカウント管理者がメタストアを作成する。
2 getMetastore アカウント管理者がメタストア ID を要求する。
3 getMetastoreSummary アカウント管理者がメタストアに関する詳細を要求する。
4 listMetastores アカウント管理者がアカウント内のすべてのメタストアの一覧を要求する。
5 updateMetastore アカウント管理者がメタストアを更新する。
6 deleteMetastore アカウント管理者がメタストアを削除する。
7 updateMetastoreAssignment アカウント管理者がメタストアのワークスペース割り当てを更新します。
8 createExternalLocation アカウント管理者が外部の場所を作成する。
9 getExternalLocation アカウント管理者が外部の場所に関する詳細を要求する。
10 listExternalLocations アカウント管理者がアカウント内のすべての外部の場所の一覧を要求する。
11 updateExternalLocation アカウント管理者が外部ストレージを更新する。
12 deleteExternalLocation アカウント管理者が外部の場所を削除する。
13 createCatalog ユーザーがカタログを作成する。
14 deleteCatalog ユーザーがカタログを削除する。
15 getCatalog ユーザーがカタログに関する詳細を要求する。
16 updateCatalog ユーザーがカタログを更新する。
17 listCatalog ユーザーがメタストア内のすべてのカタログを一覧表示する呼び出しを行う。
18 createSchema ユーザーがスキーマを作成する。
19 deleteSchema ユーザーがスキーマを削除する。
20 getSchema ユーザーがスキーマに関する詳細を要求する。
21 listSchema ユーザーがカタログ内のすべてのスキーマの一覧を要求する。
22 updateSchema ユーザーがスキーマを更新する。
23 createStagingTable
24 createTable ユーザーがテーブルを作成する。 要求パラメーターは、作成されたテーブルの種類によって異なります。
25 deleteTable ユーザーがテーブルを削除する。
26 getTable ユーザーがテーブルに関する詳細を要求する。
27 privilegedGetTable
28 listTables ユーザーがスキーマ内のすべてのテーブルを一覧表示する呼び出しを行う。
29 listTableSummaries ユーザーがメタストア内のスキーマとカタログについてのテーブルのまとめの配列を取得する。
30 updateTables ユーザーがテーブルを更新する。 表示される要求パラメーターは、行われたテーブル更新の種類によって異なります。
31 createStorageCredential アカウント管理者がストレージ資格情報を作成する。 クラウド プロバイダーの資格情報に基づいて、追加の要求パラメーターが表示される場合があります。
32 listStorageCredentials アカウント管理者がアカウント内のすべてのストレージ資格情報を一覧表示する呼び出しを行う。
33 getStorageCredential アカウント管理者がストレージ資格情報に関する詳細を要求する。
34 updateStorageCredential アカウント管理者がストレージ資格情報を更新する。
35 deleteStorageCredential アカウント管理者がストレージ資格情報を削除する。
36 generateTemporaryTableCredential テーブルに対して一時的な資格情報が付与されるたびにログに記録されます。 このイベントを使用して誰が何をいつクエリしたかを判断できます。
37 generateTemporaryPathCredential パスに対して一時的な資格情報が付与されるたびにログに記録されます。
38 checkPathAccess 特定のパスに対してユーザーのアクセス許可が確認されるたびにログに記録されます。
39 getPermissions ユーザーは、セキュリティ保護可能なオブジェクトのアクセス許可の詳細を取得する呼び出しを行います。 この呼び出しでは、継承されたアクセス許可は返されません。明示的に割り当てられたアクセス許可のみが返されます。
40 getEffectivePermissions ユーザーは、セキュリティ保護可能なオブジェクトのすべてのアクセス許可の詳細を取得する呼び出しを行います。 有効なアクセス許可の呼び出しは、明示的に割り当てられたアクセス許可と継承されたアクセス許可の両方を返します。
41 updatePermissions ユーザーがセキュリティ保護可能なオブジェクトのアクセス許可を更新する。
42 metadataSnapshot ユーザーが以前のテーブル バージョンのメタデータに対してクエリを実行する。
43 metadataAndPermissionsSnapshot ユーザーが以前のテーブル バージョンのメタデータとアクセス許可に対してクエリを実行する。
44 updateMetadataSnapshot ユーザーが以前のテーブル バージョンのメタデータを更新する。
45 getForeignCredentials ユーザーが外部キーに関する詳細を取得する呼び出しを行う。
46 getInformationSchema ユーザーがスキーマに関する詳細を取得する呼び出しを行う。
47 createConstraint ユーザーがテーブルの制約を作成する。
48 deleteConstraint ユーザーがテーブルの制約を削除する。
49 createPipeline ユーザーが Unity Catalog パイプラインを作成する。
50 updatePipeline ユーザーが Unity Catalog パイプラインを更新する。
51 getPipeline ユーザーが Unity Catalog パイプラインに関する詳細を要求する。
52 deletePipeline ユーザーが Unity Catalog パイプラインを削除する。
53 deleteResourceFailure リソースの削除に失敗する
54 createVolume ユーザーが Unity Catalog ボリュームを作成する。
55 getVolume ユーザーが Unity Catalog ボリュームに関する情報を取得するための呼び出しを行う。
56 updateVolume ユーザーは、 ALTER VOLUME または COMMENT ON 呼び出しを使用して Unity カタログ ボリュームのメタデータを更新します。
57 deleteVolume ユーザーが Unity Catalog ボリュームを削除する。
58 listVolumes ユーザーが呼び出しを行って、スキーマ内のすべての Unity Catalog ボリュームの一覧を取得する。
59 generateTemporaryVolumeCredential ユーザーがボリュームに対して読み取りまたは書き込みを実行すると、一時的な資格情報が生成されます。 このイベントを使用して誰がいつボリュームにアクセスしたかを判断できます。
60 getTagSecurableAssignments セキュリティ保護可能なタグの割り当てが取得されます
61 getTagSubentityAssignments サブエンティティのタグ割り当てが取得されます
62 UpdateTagSecurableAssignments セキュリティ保護可能なタグの割り当てが更新されます
63 UpdateTagSubentityAssignments サブエンティティのタグ割り当てが更新されます
64 createRegisteredModel ユーザーが Unity Catalog 登録済みモデルを作成する。
65 getRegisteredModel ユーザーが Unity Catalog 登録済みのモデルに関する情報を取得するための呼び出しを行う。
66 updateRegisteredModel ユーザーは、Unity カタログ登録済みモデルのメタデータを更新します。
67 deleteRegisteredModel ユーザーが Unity Catalog 登録済みモデルを削除する。
68 listRegisteredModels ユーザーが、スキーマ内の Unity Catalog 登録済みモデルの一覧を取得するか、カタログとスキーマ全体でモデルを一覧表示する呼び出しを行う。
69 createModelVersion ユーザーが Unity Catalog にモデル バージョンを作成する。
70 finalizeModelVersion ユーザーがモデル バージョン ファイルをストレージの場所にアップロードした後、Unity Catalog モデル バージョンを「最終処理」する呼び出しを行い、推論ワークフローで読み取り専用で使用できるようにする。
71 getModelVersion ユーザーがモデル バージョンに関する詳細を取得する呼び出しを行う。
72 getModelVersionByAlias ユーザーが別名を使用してモデル バージョンに関する詳細を取得する呼び出しを行う。
73 updateModelVersion ユーザーはモデル バージョンのメタデータを更新します。
74 deleteModelVersion ユーザーがモデル バージョンを削除する。
75 listModelVersions ユーザーが登録済みモデル内の Unity Catalog モデル バージョンの一覧を取得するための呼び出しを行う。
76 generateTemporaryModelVersionCredential 一時的な資格情報は、ユーザーがモデル バージョンで書き込み (最初のモデル バージョンの作成中) または読み取り (モデル バージョンが終了した後) を実行したときに生成されます。 このイベントを使用して誰がいつモデル バージョンにアクセスしたかを判断できます。
77 setRegisteredModelAlias ユーザーが Unity Catalog 登録済みモデルに別名を設定する。
78 deleteRegisteredModelAlias ユーザーが Unity Catalog 登録済みモデルの別名を削除する。
79 getModelVersionByAlias ユーザーが別名で Unity Catalog モデル バージョンを取得する。
80 createConnection 新しい外部接続が作成される。
81 deleteConnection 外部接続が削除される。
82 getConnection 外部接続が取得される。
83 updateConnection 外部接続が更新される。
84 listConnections メタストア内の外部接続が一覧表示される。
85 createFunction ユーザーが新しい関数を作成する。
86 updateFunction ユーザーが関数を更新する。
87 listFunctions ユーザーが特定の親カタログまたはスキーマ内にあるすべての関数のリストを要求する。
88 getFunction ユーザーが親カタログまたはスキーマに関数を要求する。
89 deleteFunction ユーザーが親カタログまたはスキーマに関数を要求する。
90 generateTemporaryServiceCredential Databricks からクラウド サービス アカウントにアクセスするための一時的な資格情報が生成されます。
91 UpdateWorkspaceBindings メタストア管理者またはオブジェクト所有者は、カタログ、外部の場所、またはストレージ資格情報のワークスペース バインドを更新します。
92 CreateSecurableTagAssignment 管理タグは、セキュリティ保護可能なオブジェクトに割り当てられます。
93 CreateSubsecurableTagAssignment 管理タグは列または行に割り当てられます。
94 DeleteSecurableTagAssignment 管理タグは、セキュリティ保護可能なオブジェクトから削除されます。
95 DeleteSubsecurableTagAssignment 管理タグは、列または行から削除されます。
96 ListSecurableTagAssignments セキュリティ保護可能なオブジェクトに対する管理タグの割り当てが一覧表示されます。
97 ListSubsecurableTagAssignments 列または行に対する管理タグの割り当てが一覧表示されます。
98 createEntityTagAssignment 管理タグは、Unity カタログ エンティティに割り当てられます。
99 getEntityTagAssignment ユーザーは、Unity カタログ エンティティの特定の管理タグの割り当てに関する詳細を要求します。
100 listEntityTagAssignments ユーザーは、Unity カタログ エンティティに対して管理されているすべてのタグ割り当ての一覧を要求します。
101 listSecurableTags ユーザーが管理タグの一覧を要求します。
102 createPolicy ABAC ポリシーが作成されます。
103 deletePolicy ABAC ポリシーが削除されます。
104 getPolicy ユーザーは ABAC ポリシーに関する詳細を要求します。
105 listPolicies ユーザーが ABAC ポリシーの一覧を要求します。
106 updatePolicy ABAC ポリシーが更新されます。
107 GetWorkspaceBindings ユーザーは、セキュリティ保護可能なオブジェクトのワークスペース バインドの詳細を要求します。
108 UpdateCatalogWorkspaceBindings ユーザーは、カタログのワークスペース バインドを更新します。
109 createCredential ユーザーがストレージまたはサービスの資格情報を作成します。
110 deleteCredential ユーザーがストレージまたはサービスの資格情報を削除します。
111 getCredential ユーザーは、ストレージまたはサービスの資格情報に関する詳細を要求します。
112 listCredentials ユーザーがストレージとサービスの資格情報の一覧を要求します。
113 updateCredential ユーザーがストレージまたはサービスの資格情報を更新します。
114 validateCredential ユーザーがストレージまたはサービスの資格情報を検証します。
115 createStorageLocation ユーザーがストレージの場所を作成します。
116 createMetastoreAssignment 管理者がメタストアをワークスペースに割り当てます。
117 deleteMetastoreAssignment 管理者は、ワークスペースからメタストアの割り当てを削除します。
118 getCurrentMetastoreAssignment ユーザーが現在のメタストア割り当ての詳細を要求します。
119 enableSystemSchema 管理者はシステム スキーマを有効にします。
120 disableSystemSchema 管理者はシステム スキーマを無効にします。
121 listSystemSchemas ユーザーがシステム スキーマの一覧を要求します。
122 getQuota ユーザーは、リソース クォータに関する詳細を要求します。
123 listQuotas ユーザーがリソース クォータの一覧を要求します。
124 getTableById ユーザーはテーブル ID でテーブルの詳細を要求します。
125 listDroppedTables ユーザーが削除されたテーブルの一覧を要求します。
126 tableExists ユーザーはテーブルが存在するかどうかを確認します。
127 undropTable ユーザーが削除されたテーブルを復元します。
128 updateTableToManaged ユーザーは、外部テーブルをマネージド テーブルに変換します。
129 listAllVolumesInMetastore ユーザーがメタストア内のすべてのボリュームの一覧を要求します。
130 getArtifactAllowlist ユーザーが成果物の許可リストに関する詳細を要求します。
131 setArtifactAllowlist ユーザーが成果物の許可リストを更新します。
132 updateMLServingPermissions サービス プリンシパルには、モデルをデプロイするためのアクセス許可が付与されます。

5.4 シークレットのアクション

アクション 説明
1 createScope ユーザーがシークレット スコープを作成する
2 deleteAcl ユーザーがシークレット スコープの ACL を削除する
3 deleteScope ユーザーがシークレット スコープを削除する
4 deleteSecret ユーザーがスコープからシークレットを削除する
5 getAcl ユーザーがシークレット スコープの ACL を取得する
6 getSecret ユーザーがスコープからシークレットを取得する
7 listAcls ユーザーがシークレット スコープの ACL を一覧表示する呼び出しを行う
8 listScopes ユーザーがシークレット スコープを一覧表示する呼び出しを行う
9 listSecrets ユーザーがスコープ内のシークレットを一覧表示する呼び出しを行う
10 putAcl ユーザーがシークレット スコープの ACL を変更する
11 putSecret ユーザーがスコープ内でシークレットを追加または編集する

5.5 DBFS APIのアクション

アクション 説明
1 addBlock ユーザーがデータ ブロックをストリームに追加する。 これは dbfs/create と組み合わせて使用され、DBFS にデータをストリーミングします。
2 close ユーザーは、入力ハンドルで指定されたストリームを閉じます。
3 create ユーザーがストリームを開いて、DBFS にファイルを書き込む
4 delete ユーザーが DBFS からファイルまたはディレクトリを削除する
5 mkdirs ユーザーが新しい DBFS ディレクトリを作成する
6 move ユーザーが DBFS 内のある場所から別の場所にファイルを移動する
7 put ユーザーがマルチパート フォーム ポストを使用して DBFS にファイルをアップロードする
8 mount ユーザーが特定の DBFS の場所にマウント ポイントを作成する
9 unmount ユーザーが特定の DBFS の場所にあるマウント ポイントを削除する

5.6 アカウントのアクション

アクション 説明
1 accountLoginCodeAuthentication ユーザーのアカウント ログイン コードが認証されます。
2 activateUser ユーザーが、非アクティブ化された後に再アクティブ化される。 ワークスペースでのユーザーの非アクティブ化に関するページを参照してください。
3 aadBrowserLogin ユーザーが Microsoft Entra ID ブラウザー ワークフローを使用して Databricks にログインします。
4 aadTokenLogin ユーザーは、Microsoft Entra ID トークンを使用して Databricks にログインします。
5 add ユーザーが Azure Databricks ワークスペースに追加される。
6 addPrincipalToGroup ユーザーがワークスペース レベルのグループに追加される。
7 changeDatabricksSqlAcl ユーザーの Databricks SQL アクセス許可が変更されます。
8 changeDatabricksWorkspaceAcl ワークスペースへのアクセス許可が変更される。
9 changeDbTokenAcl アクセス トークンに対するアクセス許可が変更されます。
10 changeDbTokenState Databricks アクセス トークンが無効になっています。
11 changeServicePrincipalAcls サービス プリンシパルのアクセス許可が変更されたとき。
12 createGroup ワークスペースレベルのグループが作成される。
13 createIpAccessList IP アクセス リストがワークスペースに追加される。
14 deactivateUser ユーザーがワークスペースで非アクティブ化される。 ワークスペースでのユーザーの非アクティブ化に関するページを参照してください。
15 delete ユーザーが Azure Databricks ワークスペースから削除される。
16 deleteIpAccessList IP アクセス リストがワークスペースから削除される。
17 garbageCollectDbToken ユーザーが期限切れのトークンに対してガベージ コレクト コマンドを実行する。
18 generateDbToken [ユーザー設定] からトークンを生成するとき、またはサービスがトークンを生成するとき。
19 IpAccessDenied ユーザーが拒否された IP 経由でサービスへの接続を試みる。
20 ipAccessListQuotaExceeded
21 jwtLogin ユーザーが JWT を使用して Databricks にログインする。
22 login ユーザーがワークスペースにログインする。
23 logout ユーザーがワークスペースからログアウトする。
24 oidcTokenAuthorization 汎用 OIDC/OAuth トークン経由で API 呼び出しが承認されるとき。
25 passwordVerifyAuthentication 有効期限が切れていないトークンの現在の数がトークン クォータを超えた場合。
26 reachMaxQuotaDbToken
27 removeAdmin ユーザーがワークスペース管理者のアクセス許可を取り消される。
28 removeGroup グループがワークスペースから削除される。
29 removePrincipalFromGroup ユーザーがグループから削除される。
30 revokeDbToken ユーザーのトークンはワークスペースから削除されます。 ユーザーが Databricks アカウントから削除されるとトリガーできます。
31 setAdmin ユーザーにアカウント管理者のアクセス許可が付与される。
32 tokenLogin ユーザーがトークンを使用して Databricks にログインする。
33 updateIpAccessList IP アクセス リストが変更される。
34 updateUser ユーザーのアカウントに変更が加えられます。
35 validateEmail ユーザーがアカウントの作成後にメールを検証するとき。
36 workspaceLoginCodeAuthentication ユーザーのワークスペース スコープのログイン コードが認証されます。

5.7 Genieのアクション

アクション 説明
1 databricksAccess Databricks の担当者が顧客環境へのアクセスを承認される

5.8 SSHのアクション

アクション 説明
1 login Spark ドライバーへの SSH のエージェント ログイン
2 logout Spark ドライバーからの SSH のエージェント ログアウト

6.まとめ

Databricksで診断ログを保存する方法について説明しました。

今回の記事が少しでもDatabricksを知るきっかけや、業務のご参考になれば幸いです。

双日テックイノベーションでは、Azure Databricksの環境構築パッケージを用意しています。

Azure DatabricksやAzure活用、マイクロソフト製品の活用についてご相談事がありましたらぜひお問い合わせください!

・Azure Databricks連載シリーズはこちら

お問い合わせはこちら


この記事を読んだ方へのオススメコンテンツはこちら


 

この記事を書いた人

quanna