Inspekcja i monitorowanie udostępniania danych
W tym artykule opisano, jak dostawcy danych i adresaci mogą używać dzienników inspekcji do monitorowania zdarzeń Delta Sharing. Dzienniki inspekcji dostawcy rejestrują akcje podejmowane przez dostawcę i akcje podejmowane przez adresatów na udostępnionych danych dostawcy. Dzienniki inspekcji adresata rejestrują zdarzenia związane z uzyskiwaniem dostępu do udziałów i zarządzaniem obiektami dostawcy.
Aby wyświetlić listę zdarzeń dziennika inspekcji Delta Sharing, zobacz zdarzenia Delta Sharing.
Wymagania
Aby uzyskać dostęp do dzienników inspekcji, administrator konta musi włączyć tabelę systemu dzienników inspekcji dla konta usługi Azure Databricks. Zobacz Włączanie tabel systemowych. Aby uzyskać informacje na temat tabeli systemu dziennika audytu, zobacz tabelę referencyjną dziennika audytu .
Jeśli nie jesteś administratorem konta lub administratorem magazynu metadanych, musisz mieć dostęp do system.access.audit
odczytu dzienników inspekcji.
Wyświetlanie zdarzeń udostępniania różnicowego w dzienniku inspekcji
Jeśli konto ma włączone tabele systemowe, dzienniki inspekcji są przechowywane w system.access.audit
. Jeśli twoje konto ma skonfigurowane dostarczanie dzienników inspekcji , musisz znać zasobnik i ścieżkę dostarczania tych dzienników.
Zarejestrowane zdarzenia
Aby wyświetlić listę zdarzeń dziennika kontroli Delta Sharing, zobacz zdarzenia Delta Sharing.
Wyświetlanie szczegółów wyniku zapytania odbiorcy
Delta Sharing obsługuje udostępnianie typów zasobów, takich jak tabele, widoki, zmaterializowane widoki, tabele strumieniowe i woluminy. Delta Sharing zapewnia tymczasowy dostęp do odczytu do danych bazowych z wstępnie zatwierdzonych adresów URL lub z tokenów STS z ograniczonym zakresem. W poniższej tabeli przedstawiono sposób, w jaki typ udostępniania odpowiada zarejestrowanym zdarzeniom dziennika inspekcji:
Scenariusz | Zdarzenia dziennika inspekcji |
---|---|
Tabele udostępnione otwartym adresatom oraz tabele bez historii udostępnione adresatom Databricks |
-
deltaSharingQueriedTable (w przypadku zapytań tabel)- deltaSharingQueriedTableChanges (w przypadku zapytań CDF) |
Tabela z historią udostępnioną adresatom usługi Databricks | - generateTemporaryTableCredential |
Udostępnianie woluminów (dostęp oparty na tokenach STS) | - generateTemporaryVolumeCredential |
Wyświetlanie szczegółowych informacji o udostępnieniach wstępnie podpisanych adresów URL
W dziennikach dostawcy zdarzenia deltaSharingQueriedTableChanges
i deltaSharingQueriedTable
są rejestrowane po otrzymaniu przez zapytanie odbiorcy danych odpowiedzi umożliwiającej udostępnianie za pomocą uprzednio podpisanego adresu URL. Dostawcy mogą wyświetlić pole response.result
tych dzienników, aby wyświetlić więcej szczegółów na temat tego, co zostało udostępnione odbiorcy. Pole może zawierać następujące wartości. Ta lista nie jest wyczerpująca.
"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"
Wyświetlanie szczegółów dotyczących udziałów STS-token
W dziennikach dostawcy zdarzenia generateTemporaryTableCredentials
i generateTemporaryVolumeCredentials
są rejestrowane po tym, jak zapytanie adresata danych otrzymuje odpowiedź na potrzeby udostępniania opartego na tokenach STS. Dostawcy mogą wyświetlić kolumnę request_params
w tych dziennikach, aby zobaczyć więcej szczegółów na temat tego, co zostało udostępnione odbiorcy. Pole może zawierać następujące wartości. Ta lista nie jest wyczerpująca.
"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"
Zarejestrowane błędy
Jeśli próba wykonania akcji udostępniania różnicowego zakończy się niepowodzeniem, akcja zostanie zarejestrowana z komunikatem o błędzie w response.error_message
polu dziennika. Elementy między znakami <
i >
reprezentują tekst zastępczy.
Komunikaty o błędach w dziennikach dostawcy
Usługa Delta Sharing rejestruje następujące błędy dla dostawców danych:
Udostępnianie różnicowe nie jest włączone w wybranym magazynie metadanych.
DatabricksServiceException: FEATURE_DISABLED: Delta Sharing is not enabled
Podjęto próbę wykonania operacji na katalogu, który nie istnieje.
DatabricksServiceException: CATALOG_DOES_NOT_EXIST: Catalog ‘<catalog>’ does not exist.
Użytkownik, który nie jest administratorem konta lub magazynu metadanych, próbował wykonać operację uprzywilejowaną.
DatabricksServiceException: PERMISSION_DENIED: Only administrators can <operation-name> <operation-target>
Podjęto próbę wykonania operacji w magazynie metadanych z obszaru roboczego, do którego magazyn metadanych nie jest przypisany.
DatabricksServiceException: INVALID_STATE: Workspace <workspace-name> is no longer assigned to this metastore
W żądaniu brakuje nazwy adresata lub nazwy udziału.
DatabricksServiceException: INVALID_PARAMETER_VALUE: CreateRecipient/CreateShare Missing required field: <recipient-name>/<share-name>
Żądanie zawierało nieprawidłową nazwę adresata lub udziału.
DatabricksServiceException: INVALID_PARAMETER_VALUE: CreateRecipient/CreateShare <recipient-name>/<share-name> is not a valid name
Użytkownik próbował udostępnić tabelę, która nie znajduje się w metasklepie Unity Catalog.
DatabricksServiceException: INVALID_PARAMETER_VALUE: Only managed or external table on Unity Catalog can be added to a share
Użytkownik próbował dokonać rotacji adresata, który był już w stanie rotacji i którego poprzedni token jeszcze nie wygasł.
DatabricksServiceException: INVALID_PARAMETER_VALUE: There are already two active tokens for recipient <recipient-name>
Użytkownik próbował utworzyć nowego adresata lub udostępnić go pod tą samą nazwą co istniejący.
DatabricksServiceException: RECIPIENT_ALREADY_EXISTS/SHARE_ALREADY_EXISTS: Recipient/Share <name> already exists`
Użytkownik próbował wykonać operację dla adresata lub udziału, który nie istnieje.
DatabricksServiceException: RECIPIENT_DOES_NOT_EXIST/SHARE_DOES_NOT_EXIST: Recipient/Share '<name>' does not exist
Użytkownik próbował dodać tabelę do udostępnienia, ale tabela została już dodana.
DatabricksServiceException: RESOURCE_ALREADY_EXISTS: Shared Table '<name>' already exists
Użytkownik próbował wykonać operację, która odwołuje się do tabeli, która nie istnieje.
DatabricksServiceException: TABLE_DOES_NOT_EXIST: Table '<name>' does not exist
Użytkownik próbował wykonać operację, która odwołuje się do schematu, który nie istnieje.
DatabricksServiceException: SCHEMA_DOES_NOT_EXIST: Schema '<name>' does not exist
Użytkownik próbował uzyskać dostęp do udziału, który nie istnieje.
DatabricksServiceException: SHARE_DOES_NOT_EXIST: Share <share-name> does not exist.
Komunikaty o błędach w dziennikach adresatów
Funkcja Delta Sharing rejestruje następujące błędy dla adresatów danych:
Użytkownik próbował uzyskać dostęp do udziału, do którego nie ma uprawnień dostępu.
DatabricksServiceException: PERMISSION_DENIED: User does not have SELECT on Share <share-name>
Użytkownik próbował uzyskać dostęp do udziału, który nie istnieje.
DatabricksServiceException: SHARE_DOES_NOT_EXIST: Share <share-name> does not exist.
Użytkownik próbował uzyskać dostęp do tabeli, która nie istnieje w udziale.
DatabricksServiceException: TABLE_DOES_NOT_EXIST: <table-name> does not exist.