Udostępnij za pośrednictwem


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.