Auditar e monitorizar a partilha de dados

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

Para exibir a lista de eventos do log de auditoria do Compartilhamento Delta, consulte Eventos do Compartilhamento Delta.

Requisitos

Para acessar logs de auditoria, um administrador de conta deve habilitar a tabela do sistema de log de auditoria para sua conta do Azure Databricks. Consulte Ativar tabelas do sistema. Para obter informações sobre a tabela do sistema de log de auditoria, consulte Referência da tabela do sistema de log de auditoria.

Se você não for um administrador de conta ou administrador de metastore, deverá ter acesso para system.access.audit ler logs de auditoria.

Exibir eventos de Compartilhamento Delta no log de auditoria

Se a sua conta tiver tabelas do sistema habilitadas, os logs de auditoria serão armazenados no system.access.audit. Se, alternativamente, sua conta tiver uma configuração de entrega de log de auditoria, você precisará saber o bucket e o caminho onde os logs são entregues.

Eventos registados

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

Exibir detalhes do resultado da consulta de um destinatário

Nos logs do provedor, os eventos retornados como deltaSharingQueriedTableChanges e deltaSharingQueriedTable são registrados depois que a consulta de um destinatário de dados recebe uma resposta. Os provedores podem visualizar o response.result campo desses logs para ver mais detalhes sobre o que foi compartilhado com o destinatário. O campo pode incluir os seguintes valores. Esta 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 registados

Se uma tentativa de ação de compartilhamento delta falhar, a ação será registrada com a response.error_message mensagem de erro no campo do log. Itens entre < e > caracteres representam texto de espaço reservado.

Mensagens de erro nos logs do provedor

O Delta Sharing registra 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 num catálogo que não existe.

    DatabricksServiceException: CATALOG_DOES_NOT_EXIST:
    Catalog ‘<catalog>’ does not exist.
    
  • Um utilizador que não é administrador da conta ou do metastore tentou executar uma operação privilegiada.

    DatabricksServiceException: PERMISSION_DENIED:
    Only administrators can <operation-name> <operation-target>
    
  • Foi tentada uma operação num metastore a partir de uma área de trabalho à qual o metastore não está atribuído.

    DatabricksServiceException: INVALID_STATE:
    Workspace <workspace-name> is no longer assigned to this metastore
    
  • Falta o nome do destinatário ou da partilha num pedido.

    DatabricksServiceException: INVALID_PARAMETER_VALUE: CreateRecipient/CreateShare Missing required field: <recipient-name>/<share-name>
    
  • Um pedido tem um nome de destinatário ou de partilha inválido.

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

    DatabricksServiceException: INVALID_PARAMETER_VALUE: Only managed or external table on Unity Catalog can be added to a share
    
  • Um utilizador tentou rodar um destinatário que já estava num estado rodado e cujo token anterior ainda não tinha expirado.

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

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

    DatabricksServiceException: RECIPIENT_DOES_NOT_EXIST/SHARE_DOES_NOT_EXIST: Recipient/Share '<name>' does not exist
    
  • Um utilizador tentou adicionar uma tabela a uma partilha, mas a tabela já tinha sido adicionada.

    DatabricksServiceException: RESOURCE_ALREADY_EXISTS: Shared Table '<name>' already exists
    
  • Um utilizador 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 utilizador tentou executar uma operação que fazia referência a um esquema que não existe.

    DatabricksServiceException: SCHEMA_DOES_NOT_EXIST: Schema '<name>' does not exist
    
  • Um utilizador tentou aceder a uma partilha que não existe.

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

Mensagens de erro nos logs de destinatários

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

  • O utilizador tentou aceder a uma partilha que não tem permissão de acesso.

    DatabricksServiceException: PERMISSION_DENIED:
    User does not have SELECT on Share <share-name>
    
  • O utilizador tentou aceder a uma partilha que não existe.

    DatabricksServiceException: SHARE_DOES_NOT_EXIST: Share <share-name> does not exist.
    
  • O utilizador tentou aceder a uma tabela que não existe na partilha.

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