Auditoría y supervisión del uso compartido de datos

En este artículo se describe cómo los proveedores de datos y los destinatarios pueden usar registros de auditoría para supervisar los eventos de Delta Sharing. Los registros de auditoría del proveedor registran las acciones realizadas por el proveedor y las acciones realizadas por los destinatarios en los datos compartidos del proveedor. Los registros de auditoría de los destinatarios registran eventos relacionados con el acceso a recursos compartidos y la administración de objetos de proveedor.

Para ver la lista de eventos de registro de auditoría de Delta Sharing, consulte Eventos de Delta Sharing.

Requisitos

Para acceder a los registros de auditoría, un administrador de la cuenta debe habilitar la tabla del sistema de registro de auditoría para la cuenta de Azure Databricks. Consulte Habilitar tablas del sistema. Para obtener información sobre la tabla del sistema de registros de auditoría, consulte Referencia de tabla del sistema de registros de auditoría.

Si no es administrador de cuenta o administrador de metastore, debe tener acceso a system.access.audit para leer los registros de auditoría.

Visualización de eventos de uso compartido de Delta en el registro de auditoría

Si la cuenta tiene habilitadas tablas del sistema, los registros de auditoría se almacenan en system.access.audit. Si, como alternativa, la cuenta tiene una configuración de entrega del registro de auditoría, debe conocer el cubo y la ruta de acceso donde se entregan los registros.

Eventos registrados

Para ver la lista de eventos de registro de auditoría de Delta Sharing, consulte Eventos de Delta Sharing.

Ver detalles del resultado de la consulta de un destinatario

En los registros del proveedor, los eventos devueltos como deltaSharingQueriedTableChanges y deltaSharingQueriedTable se registran después de que la consulta de un destinatario de datos obtenga una respuesta. Los proveedores pueden ver el campo response.result de estos registros para ver más detalles sobre lo que se ha compartido con el destinatario. El campo puede incluir los siguientes valores. Esta lista no es exhaustiva.

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

Errores registrados

Si se produce un error en una acción de Delta Sharing, la acción se registra con el mensaje de error en el campo response.error_message del registro. Los elementos entre < y > representan texto de marcador de posición.

Mensajes de error en los registros del proveedor

Delta Sharing registra los errores siguientes para los proveedores de datos:

  • Delta Sharing no está habilitado en el metastore seleccionado.

    DatabricksServiceException: FEATURE_DISABLED:
    Delta Sharing is not enabled
    
  • Se intentó realizar una operación en un catálogo que no existe.

    DatabricksServiceException: CATALOG_DOES_NOT_EXIST:
    Catalog ‘<catalog>’ does not exist.
    
  • Un usuario que no es administrador de cuenta o administrador de metastore intentó realizar una operación con privilegios.

    DatabricksServiceException: PERMISSION_DENIED:
    Only administrators can <operation-name> <operation-target>
    
  • Se intentó realizar una operación en un metastore desde un área de trabajo a la que no se ha asignado el metastore.

    DatabricksServiceException: INVALID_STATE:
    Workspace <workspace-name> is no longer assigned to this metastore
    
  • Faltaba el nombre del destinatario o el nombre del recurso compartido en una solicitud.

    DatabricksServiceException: INVALID_PARAMETER_VALUE: CreateRecipient/CreateShare Missing required field: <recipient-name>/<share-name>
    
  • Una solicitud incluía un nombre de destinatario o un nombre de recurso compartido no válidos.

    DatabricksServiceException: INVALID_PARAMETER_VALUE: CreateRecipient/CreateShare <recipient-name>/<share-name> is not a valid name
    
  • Un usuario intentó compartir una tabla que no está en un metastore de Unity Catalog.

    DatabricksServiceException: INVALID_PARAMETER_VALUE: Only managed or external table on Unity Catalog can be added to a share
    
  • Un usuario intentó rotar un destinatario que ya estaba en estado rotado y cuyo token anterior aún no había expirado.

    DatabricksServiceException: INVALID_PARAMETER_VALUE: There are already two active tokens for recipient <recipient-name>
    
  • Un usuario intentó crear un nuevo destinatario o recurso compartido con el mismo nombre que uno existente.

    DatabricksServiceException: RECIPIENT_ALREADY_EXISTS/SHARE_ALREADY_EXISTS: Recipient/Share <name> already exists`
    
  • Un usuario intentó realizar una operación en un destinatario o recurso compartido que no existe.

    DatabricksServiceException: RECIPIENT_DOES_NOT_EXIST/SHARE_DOES_NOT_EXIST: Recipient/Share '<name>' does not exist
    
  • Un usuario intentó agregar una tabla a un recurso compartido, pero la tabla ya se había agregado.

    DatabricksServiceException: RESOURCE_ALREADY_EXISTS: Shared Table '<name>' already exists
    
  • Un usuario intentó realizar una operación que hace referencia a una tabla que no existe.

    DatabricksServiceException: TABLE_DOES_NOT_EXIST: Table '<name>' does not exist
    
  • Un usuario intentó realizar una operación que hacía referencia a un esquema que no existía.

    DatabricksServiceException: SCHEMA_DOES_NOT_EXIST: Schema '<name>' does not exist
    
  • Un usuario intentó acceder a un recurso compartido que no existe.

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

Mensajes de error en los registros de los destinatarios

Delta Sharing registra los errores siguientes para los destinatarios de datos:

  • El usuario intentó acceder a un recurso compartido al que no tiene permiso de acceso.

    DatabricksServiceException: PERMISSION_DENIED:
    User does not have SELECT on Share <share-name>
    
  • El usuario intentó acceder a un recurso compartido que no existe.

    DatabricksServiceException: SHARE_DOES_NOT_EXIST: Share <share-name> does not exist.
    
  • El usuario intentó acceder a una tabla que no existe en el recurso compartido.

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