Аудит и мониторинг общего доступа к данным

В этой статье описывается, как поставщики данных и получатели могут использовать журналы аудита для мониторинга событий Разностного общего доступа. Журналы аудита поставщика записывают действия, выполняемые поставщиком, и действия, выполняемые получателями в общих данных поставщика. Журналы аудита получателя записывают события, связанные с доступом к общим ресурсам и управлению объектами поставщика.

Чтобы просмотреть события журнала аудита разностного общего доступа, см. статью "События разностного общего доступа".

Требования

Чтобы получить доступ к журналам аудита, администратор учетной записи должен включить таблицу системы журнала аудита для учетной записи Azure Databricks. См. раздел "Включить системные таблицы". Сведения о таблице системы журнала аудита см. в справочнике по системе журнала аудита.

Если вы не являетесь администратором учетной записи или администратором хранилища метаданных, вам необходимо предоставить доступ к system.access.audit журналам аудита.

Просмотр событий разностного общего доступа в журнале аудита

Если у вашей учетной записи включена системная таблица, журналы аудита хранятся в system.access.audit. Если в вашей учетной записи настроена настройка доставки журналов аудита, необходимо знать контейнер и путь, по которому доставляются журналы.

Регистрированные события

Сведения о списке событий журнала аудита Delta Sharing см. в разделе "События delta Sharing".

Просмотр сведений о результатах запроса получателя

В журналах поставщика события возвращаются как deltaSharingQueriedTableChanges и deltaSharingQueriedTable регистрируются после получения ответа запроса получателя данных. Поставщики могут просмотреть response.result поле этих журналов, чтобы просмотреть дополнительные сведения о том, что было предоставлено получателю. Поле может содержать следующие значения. Этот список не является исчерпывающим.

"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"

Ошибки, зарегистрированные в журнале

Если действие разностного общего доступа завершается ошибкой, действие регистрируется с сообщением об ошибке в response.error_message поле журнала. Элементы между символами < и > представляют собой текст заполнителя.

Сообщения об ошибках в журналах поставщика

Разностный общий доступ регистрирует следующие ошибки для поставщиков данных:

  • Разностный общий доступ не включен для выбранного хранилища метаданных.

    DatabricksServiceException: FEATURE_DISABLED:
    Delta Sharing is not enabled
    
  • Предпринята попытка выполнить операцию для каталога, который не существует.

    DatabricksServiceException: CATALOG_DOES_NOT_EXIST:
    Catalog ‘<catalog>’ does not exist.
    
  • Пользователь, который не является администратором учетной записи или администратором хранилища метаданных, попытался выполнить операцию, требующую расширенных разрешений.

    DatabricksServiceException: PERMISSION_DENIED:
    Only administrators can <operation-name> <operation-target>
    
  • Была предпринята попытка выполнить операцию в хранилище метаданных из рабочей области, которой хранилище метаданных не назначено.

    DatabricksServiceException: INVALID_STATE:
    Workspace <workspace-name> is no longer assigned to this metastore
    
  • В запросе отсутствовало имя получателя или общего ресурса.

    DatabricksServiceException: INVALID_PARAMETER_VALUE: CreateRecipient/CreateShare Missing required field: <recipient-name>/<share-name>
    
  • Запрос содержал недопустимое имя получателя или общего ресурса.

    DatabricksServiceException: INVALID_PARAMETER_VALUE: CreateRecipient/CreateShare <recipient-name>/<share-name> is not a valid name
    
  • Пользователь попытался предоставить общий доступ к таблице, которая не находится в каталоге Unity.

    DatabricksServiceException: INVALID_PARAMETER_VALUE: Only managed or external table on Unity Catalog can be added to a share
    
  • Пользователь попытался сменить учетные данные получателя, который уже находится в состоянии смены, а срок действия предыдущего маркера еще не истек.

    DatabricksServiceException: INVALID_PARAMETER_VALUE: There are already two active tokens for recipient <recipient-name>
    
  • Пользователь попытался создать нового получателя или общий ресурс с тем же именем, что у существующего.

    DatabricksServiceException: RECIPIENT_ALREADY_EXISTS/SHARE_ALREADY_EXISTS: Recipient/Share <name> already exists`
    
  • Пользователь попытался выполнить операцию с несуществующим получателем или общим ресурсом.

    DatabricksServiceException: RECIPIENT_DOES_NOT_EXIST/SHARE_DOES_NOT_EXIST: Recipient/Share '<name>' does not exist
    
  • Пользователь попытался добавить таблицу в общий ресурс, но таблица уже добавлена.

    DatabricksServiceException: RESOURCE_ALREADY_EXISTS: Shared Table '<name>' already exists
    
  • Пользователь попытался выполнить операцию, ссылающуюся на несуществующую таблицу.

    DatabricksServiceException: TABLE_DOES_NOT_EXIST: Table '<name>' does not exist
    
  • Пользователь попытался выполнить операцию, ссылающуюся на несуществующую схему.

    DatabricksServiceException: SCHEMA_DOES_NOT_EXIST: Schema '<name>' does not exist
    
  • Пользователь попытался получить доступ к общей папке, которая не существует.

    DatabricksServiceException: SHARE_DOES_NOT_EXIST: Share <share-name> does not exist.
    

Сообщения об ошибках в журналах получателей

Разностный общий доступ регистрирует следующие ошибки для получателей данных:

  • Пользователь пытался получить доступ к общей папке, на доступ к которой у него нет разрешения.

    DatabricksServiceException: PERMISSION_DENIED:
    User does not have SELECT on Share <share-name>
    
  • Пользователь попытался получить доступ к несуществующей общей папке.

    DatabricksServiceException: SHARE_DOES_NOT_EXIST: Share <share-name> does not exist.
    
  • Пользователь попытался получить доступ к таблице, которая не существует в общей папке.

    DatabricksServiceException: TABLE_DOES_NOT_EXIST: <table-name> does not exist.