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
O Delta Sharing suporta o compartilhamento de tipos de ativos, como tabelas, visualizações, exibições materializadas, recursos de streaming e volumes. O Delta Sharing fornece acesso de leitura temporário aos dados subjacentes a partir de URLs pré-assinadas ou de tokens STS com permissões limitadas. A tabela a seguir descreve como o tipo de compartilhamento corresponde aos eventos de log de auditoria registrados:
Cenário | Eventos de registo de auditoria |
---|---|
Tabelas compartilhadas com destinatários abertos e tabelas sem histórico compartilhadas com destinatários do Databricks |
-
deltaSharingQueriedTable (para consultas de tabela)- deltaSharingQueriedTableChanges (para consultas CDF) |
Tabela com histórico compartilhado com destinatários do Databricks | - generateTemporaryTableCredential |
Compartilhamento de volume (acesso baseado em token STS) | - generateTemporaryVolumeCredential |
Exibir detalhes sobre compartilhamentos de URL pré-assinados
Nos logs do provedor, os eventos deltaSharingQueriedTableChanges
e deltaSharingQueriedTable
são registrados depois que a consulta de um destinatário de dados obtém uma resposta para compartilhamento baseado em URL pré-assinado. 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"
Exibir detalhes sobre compartilhamentos de token STS
Nos logs do provedor, os eventos generateTemporaryTableCredentials
e generateTemporaryVolumeCredentials
são registrados depois que a consulta de um destinatário de dados obtém uma resposta para o compartilhamento baseado em token STS. Os provedores podem exibir a coluna request_params
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.
"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"
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.