Compartir a través de


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.

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

Delta Sharing admite el uso compartido de tipos de recursos, como tablas, vistas, vistas materializadas, capacidad de streaming y volúmenes. El uso compartido de Delta proporciona acceso de lectura temporal a los datos subyacentes desde direcciones URL firmadas previamente o desde tokens STS con ámbito. En la tabla siguiente se describe cómo corresponde el tipo de uso compartido a los eventos de registro de auditoría registrados:

Escenario Eventos del registro de auditoría
Tablas compartidas con destinatarios abiertos y tablas sin historial compartidos con destinatarios de Databricks
  • deltaSharingQueriedTable (para consultas de tabla)
  • deltaSharingQueriedTableChanges (para consultas de CDF)
Tabla con historial compartido con destinatarios de Databricks
  • generateTemporaryTableCredential
Uso compartido de volúmenes (acceso basado en tokens STS)
  • generateTemporaryVolumeCredential

Ver detalles sobre los recursos compartidos de direcciones URL firmados previamente

En los registros del proveedor, los eventos deltaSharingQueriedTableChanges y deltaSharingQueriedTable se registran después de que la consulta de un destinatario de datos obtenga una respuesta para el uso compartido basado en direcciones URL previamente firmadas. 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"

Ver detalles sobre los recursos compartidos de token STS

En los registros del proveedor, los eventos generateTemporaryTableCredentials y generateTemporaryVolumeCredentials se registran después de que la consulta de un destinatario de datos obtenga una respuesta para el uso compartido basado en tokens STS. Los proveedores pueden ver la request_params columna 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.

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

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.