Auditer et surveiller le partage de données.

Cet article décrit comment les fournisseurs de données et les destinataires peuvent utiliser les journaux d’audit pour surveiller les événements de partage Delta. Les journaux d’audit du fournisseur enregistrent les actions effectuées par le fournisseur et les actions effectuées par les destinataires sur les données partagées du fournisseur. Les journaux d’audit des destinataires enregistrent les événements liés à l’accès aux partages et à la gestion des objets fournisseur.

Pour afficher la liste des événements du journal d’audit Delta Sharing, consultez Événements de partage Delta.

Spécifications

Pour accéder aux journaux d’audit, un administrateur de compte doit activer la table système du journal d’audit pour votre compte Azure Databricks. Consultez Activer les tables système. Pour plus d’informations sur la table système du journal d’audit, consultez Analyser la table système du journal d’audit.

Si vous n’êtes pas administrateur de compte ou administrateur de metastore, vous devez avoir accès à system.access.audit pour lire les journaux d’audit.

Afficher les événements Delta Sharing dans le journal d’audit

Si les tables système de votre compte sont activées, les journaux d’audit sont stockés dans system.access.audit. Si votre compte dispose d’une configuration de remise des journaux d’audit, vous devez connaître le compartiment et le chemin d’accès où les journaux sont remis.

Événements enregistrés

Pour afficher la liste des événements du journal d’audit de partage Delta, consultez Événements de partage Delta.

Afficher les détails du résultat de la requête d’un destinataire

Dans les journaux du fournisseur, les événements retournés comme deltaSharingQueriedTableChanges et deltaSharingQueriedTable sont enregistrés après que la requête d’un destinataire de données a reçu une réponse. Les fournisseurs peuvent afficher le champ response.result de ces journaux pour voir plus d’informations sur ce qui a été partagé avec le destinataire. Le champ peut inclure les valeurs suivantes. Cette liste n’est pas exhaustive.

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

Erreurs journalisées

Si une tentative d’action de partage delta échoue, l’action est enregistrée avec le message d’erreur dans le champ response.error_message du journal. Les éléments entre les caractères < et > représentent le texte d’espace réservé.

Messages d’erreur dans les journaux du fournisseur

Delta Sharing enregistre les erreurs suivantes pour les fournisseurs de données :

  • Delta Sharing n’est pas activé sur le metastore sélectionné.

    DatabricksServiceException: FEATURE_DISABLED:
    Delta Sharing is not enabled
    
  • Une opération a été tentée sur un catalogue qui n’existe pas.

    DatabricksServiceException: CATALOG_DOES_NOT_EXIST:
    Catalog ‘<catalog>’ does not exist.
    
  • Un utilisateur qui n’est pas un administrateur de compte ou un administrateur de metastore a tenté d’effectuer une opération privilégiée.

    DatabricksServiceException: PERMISSION_DENIED:
    Only administrators can <operation-name> <operation-target>
    
  • Une opération a été tentée sur un metastore à partir d’un espace de travail auquel le metastore n’est pas affecté.

    DatabricksServiceException: INVALID_STATE:
    Workspace <workspace-name> is no longer assigned to this metastore
    
  • Il manque le nom du destinataire ou le nom du partage dans une requête.

    DatabricksServiceException: INVALID_PARAMETER_VALUE: CreateRecipient/CreateShare Missing required field: <recipient-name>/<share-name>
    
  • Une requête inclut un nom de destinataire ou un nom de partage non valide.

    DatabricksServiceException: INVALID_PARAMETER_VALUE: CreateRecipient/CreateShare <recipient-name>/<share-name> is not a valid name
    
  • Un utilisateur a tenté de partager une table qui n’est pas dans un metastore Unity Catalog.

    DatabricksServiceException: INVALID_PARAMETER_VALUE: Only managed or external table on Unity Catalog can be added to a share
    
  • Un utilisateur a tenté de permuter un destinataire qui était déjà dans un état permuté et dont le jeton précédent n’avait pas encore expiré.

    DatabricksServiceException: INVALID_PARAMETER_VALUE: There are already two active tokens for recipient <recipient-name>
    
  • Un utilisateur a tenté de créer un nouveau destinataire ou un nouveau partage avec le même nom qu’un autre.

    DatabricksServiceException: RECIPIENT_ALREADY_EXISTS/SHARE_ALREADY_EXISTS: Recipient/Share <name> already exists`
    
  • Un utilisateur a tenté d’effectuer une opération sur un destinataire ou un partage qui n’existe pas.

    DatabricksServiceException: RECIPIENT_DOES_NOT_EXIST/SHARE_DOES_NOT_EXIST: Recipient/Share '<name>' does not exist
    
  • Un utilisateur a essayé d’ajouter une table à un partage, mais la table avait déjà été ajoutée.

    DatabricksServiceException: RESOURCE_ALREADY_EXISTS: Shared Table '<name>' already exists
    
  • Un utilisateur a tenté d’effectuer une opération faisant référence à une table qui n’existe pas.

    DatabricksServiceException: TABLE_DOES_NOT_EXIST: Table '<name>' does not exist
    
  • Un utilisateur a tenté d’effectuer une opération faisant référence à un schéma qui n’existait pas.

    DatabricksServiceException: SCHEMA_DOES_NOT_EXIST: Schema '<name>' does not exist
    
  • Un utilisateur a tenté d’accéder à un partage qui n’existe pas.

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

Messages d’erreur dans les journaux des destinataires

Delta Sharing enregistre les erreurs suivantes pour les destinataires de données :

  • L’utilisateur a tenté d’accéder à un partage auquel il n’a pas l’autorisation d’accéder.

    DatabricksServiceException: PERMISSION_DENIED:
    User does not have SELECT on Share <share-name>
    
  • L’utilisateur a tenté d’accéder à un partage qui n’existe pas.

    DatabricksServiceException: SHARE_DOES_NOT_EXIST: Share <share-name> does not exist.
    
  • L’utilisateur a tenté d’accéder à une table qui n’existe pas dans le partage.

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