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 a Referência da tabela do sistema de log de auditoria.
Se não for um administrador de conta ou de metastore, deverá ter acesso a system.access.audit
para ler os 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, a sua conta tiver uma configuração de entrega de registos de auditoria, necessitará de saber o bucket e o caminho onde os registos 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 oferece acesso de leitura temporário aos dados subjacentes, seja através de URLs pré-assinadas ou de tokens STS com escopo reduzido. 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 |
|
Tabela com histórico compartilhado com destinatários do Databricks |
|
Compartilhamento de volume (acesso baseado em token STS) |
|
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 Delta Sharing falhar, a ação será registrada com a mensagem de erro response.error_message
no campo do log. Itens entre os caracteres <
e >
representam texto de marcador de posição.
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>
O pedido inclui 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 efetuar nova rotação de um destinatário que já estava num estado de rotação 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.