Auditar e monitorar o compartilhamento de dados

Este artigo descreve como os provedores e destinatários de dados podem usar os logs de auditoria para monitorar os eventos do Delta Sharing. Os logs de auditoria do provedor registram as ações realizadas pelo provedor e as ações realizadas pelos destinatários nos dados compartilhados do provedor. Os logs de auditoria do destinatário registram eventos relacionados ao acesso a compartilhamentos e ao gerenciamento de objetos do provedor.

Para view a lista de eventos de log de auditoria do Delta Sharing, consulte Eventos do Delta Sharing.

Requisitos

Para acessar os logs de auditoria, um administrador do account deve habilitar a tabela do sistema de logs de auditoria para o seu Databricks account. Consulte Habilitar tabelas do sistema. Para obter informações sobre a tabela do sistema de logs de auditoria, consulte Referência da tabela do sistema de logs de auditoria.

Se o senhor não for administrador do account ou do metastore, deverá ter acesso a system.access.audit para ler os logs de auditoria.

Visualizar eventos do Delta Sharing nos registros de auditoria

Se o site account tiver tabelas de sistema ativadas, a auditoria logs será armazenada em system.access.audit. Se, alternativamente, sua conta tiver uma configuração de entrega de logs de auditoria, o senhor precisará saber o bucket e o caminho em que os logs são entregues.

eventos de registros

Para view a lista de eventos de registro de auditoria do Delta Sharing, consulte Eventos do Delta Sharing.

Exibir detalhes do resultado da consulta de um destinatário

No provedor logs, os eventos retornados como deltaSharingQueriedTableChanges e deltaSharingQueriedTable são registrados depois que a consulta de um destinatário de dados obtém uma resposta. Os provedores podem acessar view o campo response.result desses logs para ver mais detalhes sobre o que foi compartilhado com o destinatário. O campo pode incluir os seguintes valores. Essa lista não é exaustiva.

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

erros de registros

Se uma tentativa de ação do Delta Sharing falhar, a ação será registrada com a mensagem de erro no campo response.error_message dos registros. Os itens entre < e > caracteres representam texto de espaço reservado.

Mensagens de erro nos registros do provedor

Delta Sharing logs os seguintes erros para provedores de dados:

  • O Delta Sharing não está ativado no metastore selecionado.

    DatabricksServiceException: FEATURE_DISABLED:
    Delta Sharing is not enabled
    
  • Foi tentada uma operação em um catálogo que não existe.

    DatabricksServiceException: CATALOG_DOES_NOT_EXIST:
    Catalog ‘<catalog>’ does not exist.
    
  • Um usuário que não é um administrador do account ou do metastore tentou executar uma operação privilegiada.

    DatabricksServiceException: PERMISSION_DENIED:
    Only administrators can <operation-name> <operation-target>
    
  • Foi tentada uma operação em um metastore de um workspace ao qual o metastore não está atribuído.

    DatabricksServiceException: INVALID_STATE:
    Workspace <workspace-name> is no longer assigned to this metastore
    
  • Uma solicitação não continha o nome do destinatário ou o nome do compartilhamento.

    DatabricksServiceException: INVALID_PARAMETER_VALUE: CreateRecipient/CreateShare Missing required field: <recipient-name>/<share-name>
    
  • Uma solicitação incluiu um nome de destinatário ou nome de compartilhamento inválido.

    DatabricksServiceException: INVALID_PARAMETER_VALUE: CreateRecipient/CreateShare <recipient-name>/<share-name> is not a valid name
    
  • Um usuário tentou compartilhar uma tabela que não está em um metastore do Unity Catalog.

    DatabricksServiceException: INVALID_PARAMETER_VALUE: Only managed or external table on Unity Catalog can be added to a share
    
  • Um usuário tentou rotacionar um destinatário que já estava em um estado rotacionado e cujos tokens anteriores ainda não haviam expirado.

    DatabricksServiceException: INVALID_PARAMETER_VALUE: There are already two active tokens for recipient <recipient-name>
    
  • Um usuário tentou criar um novo destinatário ou compartilhar com o mesmo nome de um destinatário existente.

    DatabricksServiceException: RECIPIENT_ALREADY_EXISTS/SHARE_ALREADY_EXISTS: Recipient/Share <name> already exists`
    
  • Um usuário tentou executar uma operação em um destinatário ou compartilhamento que não existe.

    DatabricksServiceException: RECIPIENT_DOES_NOT_EXIST/SHARE_DOES_NOT_EXIST: Recipient/Share '<name>' does not exist
    
  • Um usuário tentou adicionar uma tabela a um compartilhamento, mas a tabela já havia sido adicionada.

    DatabricksServiceException: RESOURCE_ALREADY_EXISTS: Shared Table '<name>' already exists
    
  • Um usuário tentou executar uma operação que fazia referência a uma tabela que não existe.

    DatabricksServiceException: TABLE_DOES_NOT_EXIST: Table '<name>' does not exist
    
  • Um usuário tentou executar uma operação que fazia referência a um esquema que não existia.

    DatabricksServiceException: SCHEMA_DOES_NOT_EXIST: Schema '<name>' does not exist
    
  • Um usuário tentou acessar um compartilhamento que não existe.

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

Mensagens de erro nos registros de destinatários

Delta Sharing logs os seguintes erros para destinatários de dados:

  • O usuário tentou acessar um compartilhamento para o qual não tem permissão.

    DatabricksServiceException: PERMISSION_DENIED:
    User does not have SELECT on Share <share-name>
    
  • O usuário tentou acessar um compartilhamento que não existe.

    DatabricksServiceException: SHARE_DOES_NOT_EXIST: Share <share-name> does not exist.
    
  • O usuário tentou acessar uma tabela que não existe no compartilhamento.

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