Mengaudit dan memantau berbagi data
Artikel ini menjelaskan bagaimana penyedia data dan penerima dapat menggunakan log audit untuk memantau peristiwa Berbagi Delta. Log audit penyedia mencatat tindakan yang diambil oleh penyedia dan tindakan yang diambil oleh penerima pada data bersama penyedia. Log audit penerima merekam peristiwa yang terkait dengan akses berbagi dan pengelolaan objek penyedia.
Untuk melihat daftar peristiwa audit log Delta Sharing, lihat Peristiwa Delta Sharing.
Persyaratan
Untuk mengakses log audit, admin akun harus mengaktifkan tabel sistem log audit untuk akun Azure Databricks Anda. Lihat Mengaktifkan tabel sistem. Untuk informasi tentang tabel sistem log audit, lihat Referensi tabel sistem log audit.
Jika Anda bukan admin akun atau admin metastore, Anda harus diberi akses pada system.access.audit
untuk membaca log audit.
Melihat acara Delta Sharing di log audit
Jika akun Anda memiliki tabel sistem yang diaktifkan, log audit disimpan di system.access.audit
. Jika akun Anda memiliki pengaturan pengiriman log audit, Anda perlu mengetahui bucket dan jalur tempat log dikirimkan.
Peristiwa yang dicatat
Untuk melihat daftar peristiwa log audit Delta Sharing, lihat Peristiwa Delta Sharing.
Menampilkan detail hasil kueri penerima
Delta Sharing mendukung berbagi jenis aset seperti tabel, tampilan, tampilan materialisasi, tabel streaming, dan volume. Berbagi Delta menyediakan akses baca sementara ke data yang mendasari dari URL yang sudah ditandatangani sebelumnya atau dari token STS yang memiliki lingkup terbatas. Tabel berikut menguraikan bagaimana jenis berbagi sesuai dengan peristiwa log audit yang dicatat:
Skenario | Kejadian log audit |
---|---|
Tabel yang dibagikan dengan penerima yang dapat diakses publik dan tabel tanpa riwayat yang dibagikan dengan penerima Databricks |
|
Tabel dengan catatan yang dibagikan kepada penerima Databricks |
|
Berbagi volume (akses berbasis token STS) |
|
Melihat detail tentang berbagi URL yang telah ditandatangani sebelumnya
Dalam log penyedia, peristiwa deltaSharingQueriedTableChanges
dan deltaSharingQueriedTable
dicatat setelah kueri dari penerima data mendapatkan respons untuk berbagi menggunakan URL yang telah ditandatangani sebelumnya. Penyedia dapat melihat response.result
bidang log ini untuk melihat detail selengkapnya tentang apa yang dibagikan dengan penerima. Bidang dapat menyertakan nilai berikut. Daftar ini tidak lengkap.
"checkpointBytes": "0",
"earlyTermination": "false",
"maxRemoveFiles": "0",
"path": "file: example/s3/path/golden/snapshot-data0/_delta_log",
"deltaSharingPartitionFilteringAccessed": "false",
"deltaSharingRecipientId": "<redacted>",
"deltaSharingRecipientIdHash": "<recipient-hash-id>",
"jsonLogFileNum": "1",
"scannedJsonLogActionNum": "5",
"numRecords": "3",
"deltaSharingRecipientMetastoreId": "<redacted>",
"userAgent": "Delta-Sharing-Unity-Catalog-Databricks-Auth/1.0 Linux/4.15.0-2068-azure-fips OpenJDK_64-Bit_Server_VM/11.0.7+10-jvmci-20.1-b02 java/11.0.7 scala/2.12.15 java_vendor/GraalVM_Community",
"jsonLogFileBytes": "2846",
"checkpointFileNum": "0",
"metastoreId": "<redacted>",
"limitHint": "Some(1)",
"tableName": "cookie_ingredients",
"tableId": "1234567c-6d8b-45fd-9565-32e9fc23f8f3",
"activeAddFiles": "2", // number of AddFiles returned in the query
"numAddFiles": "2", // number of AddFiles returned in the query
"numAddCDCFiles": "2", // number of AddFiles returned in the CDF query
"numRemoveFiles": "2", // number of RemoveFiles returned in the query
"numSeenAddFiles": "3",
"scannedAddFileSize": "1300", // file size in bytes for the AddFile returned in the query
"scannedAddCDCFileSize": "1300", // file size in bytes for the AddCDCFile returned in the CDF query
"scannedRemoveFileSize": "1300", // file size in bytes for the RemoveFile returned in the query
"scannedCheckpointActionNum": "0",
"tableVersion": "0"
Lihat rincian saham token STS
Dalam log penyedia, peristiwa generateTemporaryTableCredentials
dan generateTemporaryVolumeCredentials
dicatat setelah kueri penerima data mendapatkan respons untuk berbagi berbasis token STS. Penyedia dapat melihat kolom request_params
log ini untuk melihat detail selengkapnya tentang apa yang dibagikan dengan penerima. Bidang dapat menyertakan nilai berikut. Daftar ini tidak lengkap.
"recipient_name": "someRecipientName"
"share_id": "ea7a4555-43d9-4cbd-a5df-f4f5193f297e"
"credential_type": "StorageCredential"
"is_permissions_enforcing_client": "true"
"table_full_name": "someTableName"
"operation": "READ"
"share_name": "someShareName"
"table_id": "someTableId"
"share_owner": "someShareOwner"
"recipient_id": "someRecipientId"
"table_url": "s3://somePath"
"metastore_id": "someMetastoreId"
Kesalahan yang dicatat
Jika sebuah aksi Delta Sharing gagal, aksi tersebut dicatat dengan pesan kesalahan pada response.error_message
bidang log. Item-item di antara karakter <
dan >
mewakili teks placeholder.
Pesan kesalahan dalam log penyedia
Delta Sharing mencatat kesalahan berikut untuk penyedia data:
Delta Sharing tidak diaktifkan pada metastore yang dipilih.
DatabricksServiceException: FEATURE_DISABLED: Delta Sharing is not enabled
Operasi dilakukan pada katalog yang tidak ada.
DatabricksServiceException: CATALOG_DOES_NOT_EXIST: Catalog ‘<catalog>’ does not exist.
Pengguna yang bukan admin akun atau admin metastore berusaha melakukan operasi istimewa.
DatabricksServiceException: PERMISSION_DENIED: Only administrators can <operation-name> <operation-target>
Diupayakan suatu operasi pada metastore dari ruang kerja yang tidak ditugaskan metastore tersebut.
DatabricksServiceException: INVALID_STATE: Workspace <workspace-name> is no longer assigned to this metastore
Permintaan tidak memiliki nama penerima atau nama saham.
DatabricksServiceException: INVALID_PARAMETER_VALUE: CreateRecipient/CreateShare Missing required field: <recipient-name>/<share-name>
Permintaan menyertakan nama penerima yang tidak valid atau nama berbagi.
DatabricksServiceException: INVALID_PARAMETER_VALUE: CreateRecipient/CreateShare <recipient-name>/<share-name> is not a valid name
Pengguna mencoba membagikan tabel yang tidak ada dalam metastore Katalog Unity.
DatabricksServiceException: INVALID_PARAMETER_VALUE: Only managed or external table on Unity Catalog can be added to a share
Seorang pengguna mencoba mengubah status penerima yang sudah dalam keadaan diputar dan token sebelumnya belum kedaluwarsa.
DatabricksServiceException: INVALID_PARAMETER_VALUE: There are already two active tokens for recipient <recipient-name>
Pengguna mencoba membuat penerima baru atau berbagi dengan nama yang sama dengan yang sudah ada.
DatabricksServiceException: RECIPIENT_ALREADY_EXISTS/SHARE_ALREADY_EXISTS: Recipient/Share <name> already exists`
Pengguna mencoba melakukan operasi pada penerima atau objek berbagi yang tidak ada.
DatabricksServiceException: RECIPIENT_DOES_NOT_EXIST/SHARE_DOES_NOT_EXIST: Recipient/Share '<name>' does not exist
Seorang pengguna mencoba menambahkan tabel ke folder berbagi, tetapi tabel sudah ditambahkan sebelumnya.
DatabricksServiceException: RESOURCE_ALREADY_EXISTS: Shared Table '<name>' already exists
Pengguna mencoba melakukan operasi yang mereferensikan tabel yang tidak ada.
DatabricksServiceException: TABLE_DOES_NOT_EXIST: Table '<name>' does not exist
Pengguna mencoba melakukan operasi yang mereferensikan skema yang tidak ada.
DatabricksServiceException: SCHEMA_DOES_NOT_EXIST: Schema '<name>' does not exist
Pengguna mencoba mengakses pembagian yang tidak ada.
DatabricksServiceException: SHARE_DOES_NOT_EXIST: Share <share-name> does not exist.
Pesan kesalahan dalam log penerima
Delta Sharing mencatat kesalahan berikut untuk penerima data:
Pengguna berusaha mengakses saham yang mereka tidak memiliki izin untuk akses.
DatabricksServiceException: PERMISSION_DENIED: User does not have SELECT on Share <share-name>
Pengguna mencoba mengakses sumber yang tidak ada.
DatabricksServiceException: SHARE_DOES_NOT_EXIST: Share <share-name> does not exist.
Pengguna mencoba mengakses tabel yang tidak ada di sumber berbagi.
DatabricksServiceException: TABLE_DOES_NOT_EXIST: <table-name> does not exist.