はじめに
ようやく東日本でも機能を有効化できたので記録
有効化手順
ID の確認
ウェアハウスに移動して URL から確認可能。workspace id , item id という順
API の呼び出し
python notebook で実行する
-
ステータス確認
pythonimport json from sempy import fabric client = fabric.FabricRestClient() workspaceId="<workspace id >" warehouseId="<item id >" get_audit_status_url = f"v1/workspaces/{workspaceId}/warehouses/{warehouseId}/settings/sqlAudit" status_response = client.get(get_audit_status_url) status = json.loads(status_response.content) status
結果:
-
有効化 今回は期間だけ指定
pythonpatch_audit_enable_url = f"v1/workspaces/{workspaceId}/warehouses/{warehouseId}/settings/sqlAudit" // 必要に応じてペイロード内容を設定し、監査ログ対象を追加する enable_data = { "state": "Enabled", "retentionDays": "730" } enable_response = client.patch(get_audit_status_url,data=enable_data) result = json.loads(enable_response.content) result
既定では、['BATCH_COMPLETED_GROUP', 'FAILED_DATABASE_AUTHENTICATION_GROUP', 'SUCCESSFUL_DATABASE_AUTHENTICATION_GROUP'] がログの対象となっている。なお、FAILED_DATABASE_AUTHENTICATION_GROUP 以外はまだ docsには記載がない。
完全な一致ではないが、 Azure SQL などと仕様が同じようなので、記載されていないアクショングループはSQL Server 監査のアクション グループとアクション を参考にできる。
挙動確認
-
ログをクエリ
sqlSELECT TOP 100 * FROM sys. fn_get_audit_file_v2( 'https://onelake.blob.fabric.microsoft.com/<workspace id>/<item id>/Audit/sqldbauditlogs/', DEFAULT, DEFAULT, DEFAULT, DEFAULT) order by 1 desc
sys.fn_get_audit_file_v2 によると、実行したSQLが格納される statement 列の文字長は nvarchar(4000) だが、シーケンス No でレコードを分割して対応できていそう。
マルチバイト文字に関しても問題なくログ取得されている
レイクハウスの SQL 分析エンドポイントでは?
ステータスは確認できたが、有効化は不可だった。