Configurer la livraison des logs d'audit
Databricks recommande d'utiliser la table système du Log d'audit (system.access.audit) pour accéder aux Logs d'audit de votre compte. Consultez la référence de la table système des logs d'audit. Databricks vous décourage fortement de déplacer ces données en dehors de la plateforme car cela peut exposer des données sensibles et compromettre votre déploiement. En raison de la nature du contenu des logs d'audit, il vous est rappelé que vous êtes responsable de maintenir la sécurité et de prévenir l'utilisation abusive de tout log d'audit exporté.
Cet article explique comment configurer la livraison à faible latence des journaux d'audit au format de fichier JSON vers un compartiment de stockage Amazon S3.
Lorsque vos Logs d'audit sont livrés à un compartiment de stockage S3, vous pouvez rendre les données disponibles pour l'analyse d'utilisation. Databricks fournit un fichier JSON distinct pour chaque Workspace de votre compte et un fichier distinct pour les événements au niveau du compte. Pour plus d'informations sur le schéma de fichier et les événements d'audit, consultez la référence des Logs d'audit.
Vous pouvez éventuellement livrer des Logs à un compte AWS autre que le compte utilisé pour le rôle IAM que vous créez pour la livraison de Logs. Cela permet une flexibilité, par exemple la configuration de Workspaces à partir de plusieurs comptes AWS pour livrer au même compartiment S3. Cette option exige que vous configuriez une politique de compartiment S3 qui référence un rôle IAM inter-comptes. Des instructions et un Template de politique vous sont fournis dans Étape 3 : prise en charge inter-comptes.
Outre la livraison des logs pour les workspaces en cours d'exécution, les logs sont livrés pour les *workspaces annulés* afin de garantir que les logs représentant le dernier jour du workspace sont correctement livrés.
Exigences
Pour configurer la livraison des logs d'audit à l'aide de ces instructions, vous devez :
- Être un administrateur de compte.
- Authentifiez la CLI de Databricks pour exécuter des commandes au niveau du compte. Consultez Authentification pour la CLI Databricks.
Flux de haut niveau
Cette section décrit le flux général de la remise des Logs d’audit.
- Étape 1 : Configurez le stockage: Dans AWS, créez un nouveau compartiment S3. À l’aide des APIs Databricks, créez un objet de configuration de stockage qui utilise le nom du compartiment.
- Étape 2 : Configurez les identifiants: Dans AWS, créez le rôle AWS IAM approprié. À l'aide des APIs Databricks, créez un objet de configuration d'identifiants qui utilise l'ARN du rôle IAM.
- (Facultatif) Étape 3 : support inter-comptes: pour livrer les logs à un compte AWS autre que le compte du rôle IAM que vous créez pour la livraison des logs, ajoutez une politique de compartiment S3. Cette politique fait référence aux ID pour le rôle IAM inter-comptes que vous avez créé à l'étape précédente.
- Étape 4 : Appelez l’API de livraison des logs: Créez une configuration de livraison des logs qui utilise les objets d’informations d’identification et de configuration du stockage des étapes précédentes.
Après avoir terminé ces étapes, vous pouvez accéder aux fichiers JSON. L'emplacement de livraison est dans le format suivant :
<bucket-name>/<delivery-path-prefix>/workspaceId=<workspaceId>/date=<yyyy-mm-dd>/auditlogs_<internal-id>.json
Si vous configurez la livraison des logs d'audit pour l'intégralité du compte, les événements d'audit au niveau du compte qui ne sont associés à aucun workspace individuel sont livrés à la partition workspaceId=0.
Considérations basées sur votre nombre de Workspace
Votre configuration de livraison peut varier en fonction du nombre d'espaces de travail dont vous disposez et de leur emplacement :
-
Si vous avez un Workspace dans votre compte Databricks : suivez les instructions décrites dans le flux général, en créant un objet de configuration unique pour votre Workspace.
-
Si vous avez plusieurs workspaces dans le même compte Databricks : Effectuez l'une des opérations suivantes :
- Partagez la même configuration (compartiment S3 de livraison des Log et rôle IAM) pour tous les Workspace du compte. C'est la seule option de configuration qui fournit également des Logs d'audit au niveau du compte. C'est l'option default.
- Utilisez des configurations distinctes pour chaque workspace du compte.
- Utilisez des configurations distinctes pour différents groupes de workspaces, chacun partageant une configuration.
-
Si vous avez plusieurs workspaces, chacun associé à un compte Databricks distinct : Créez des objets de configuration de stockage et d’identifiants uniques pour chaque compte. Vous pouvez réutiliser un compartiment S3 ou un rôle IAM entre ces objets de configuration.
Vous pouvez configurer la livraison des logs avec l'API de compte même si le Workspace n'a pas été créé à l'aide de l'API de compte.
Détails de la livraison de l'audit
Une fois la journalisation activée pour votre compte, Databricks envoie automatiquement les journaux d'audit dans un format lisible par l'homme à votre emplacement de livraison de manière périodique.
- Latence : Après la configuration initiale ou d’autres modifications de configuration, attendez-vous à un certain délai avant que vos modifications ne prennent effet. Pour la configuration initiale de la livraison des Logs d'audit, la livraison des Logs prend jusqu'à une heure pour commencer. Une fois la livraison des Logs commencée, les événements auditables sont généralement enregistrés dans les 15 minutes. Les modifications de configuration supplémentaires prennent généralement une heure pour prendre effet.
- Chiffrement : Databricks chiffre les Logs d'audit à l'aide du chiffrement côté serveur Amazon S3.
- Format : Databricks fournit les journaux d'audit au format JSON.
- Lieu : L'emplacement de livraison est
<bucket-name>/<delivery-path-prefix>/workspaceId=<workspaceId>/date=<yyyy-mm-dd>/auditlogs_<internal-id>.json. De nouveaux fichiers JSON sont livrés toutes les quelques minutes, pouvant potentiellement écraser les fichiers existants. Le chemin de livraison est défini dans le cadre de la configuration. Les événements d'audit au niveau du compte qui ne sont associés à aucun workspace sont livrés à la partitionworkspaceId=0, si vous avez configuré la livraison des audit Logs pour l'ensemble du compte.- Databricks peut écraser les fichiers logs livrés dans votre bucket à tout moment. Si un fichier est écrasé, le contenu existant demeure, mais il peut y avoir des lignes supplémentaires pour des événements plus vérifiables.
- L'écrasement garantit une sémantique d'exécution unique sans nécessiter d'accès en lecture ou en suppression à votre compte.
Utiliser les APIs de livraison de logs
Les API de livraison des logs présentent les fonctionnalités supplémentaires suivantes :
- Obtenir toutes les configurations de livraison de Logs.
- Obtenir une configuration de livraison des log par ID.
- Activer ou désactiver une configuration de livraison de Logs par ID.
L'état de la configuration de la livraison des logs peut être trouvé dans l'objet log_delivery_status de la réponse de l'API. Avec log_delivery_status, vous pouvez vérifier l'état (réussite ou échec) et la dernière fois qu'une tentative ou une livraison a réussi.
Limitations de la livraison du Logs d'audit
Il existe une limite au nombre de configurations de livraison des logs disponibles par compte (chaque limite s'applique séparément à chaque type de logs, y compris les logs d'utilisation facturable et les logs d'audit). Vous pouvez créer un maximum de deux configurations de livraison au niveau du compte activées (configurations sans filtre Workspace) par type. De plus, vous pouvez créer et activer deux configurations de livraison au niveau du Workspace par Workspace pour chaque Logs type, ce qui signifie que le même Workspace ID peut apparaître dans le filtre du Workspace pour un maximum de deux configurations de livraison par Logs type.
Vous ne pouvez pas supprimer une configuration de livraison de Logs, mais vous pouvez la désactiver. Vous pouvez réactiver une configuration désactivée, mais la demande échoue si elle enfreint les limites précédemment décrites.
Considérations relatives au schéma des Logs d'audit
- Si les actions prennent beaucoup de temps, la requête et la réponse sont enregistrées séparément, mais la paire requête/réponse a le même
requestId. - Les actions automatisées, telles que le redimensionnement d'un cluster en raison de la mise à l'échelle automatique ou le lancement d'un job en raison de la planification, sont effectuées par l'utilisateur
System-User. - Le champ
requestParamspeut être tronqué. Si la taille de sa représentation JSON dépasse 100 Ko, les valeurs sont tronquées et la chaîne... truncatedest ajoutée aux entrées tronquées. Dans de rares cas où une carte tronquée dépasse encore 100 Ko, une seule cléTRUNCATEDavec une valeur vide est présente à la place.
Exemple de schéma de Logs d'audit
Les Audit Logs distribués au stockage cloud génèrent des événements au format JSON. Les propriétés serviceName et actionName identifient l'événement. La convention de nommage suit l'API REST Databricks.
L'exemple suivant concerne un événement createMetastoreAssignment.
{
"version": "2.0",
"auditLevel": "ACCOUNT_LEVEL",
"timestamp": 1629775584891,
"orgId": "3049056262456431186970",
"shardName": "test-shard",
"accountId": "77636e6d-ac57-484f-9302-f7922285b9a5",
"sourceIPAddress": "10.2.91.100",
"userAgent": "curl/7.64.1",
"sessionId": "f836a03a-d360-4792-b081-baba525324312",
"userIdentity": {
"email": "someone@example.com",
"subjectName": null
},
"serviceName": "unityCatalog",
"actionName": "createMetastoreAssignment",
"requestId": "ServiceMain-da7fa5878f40002",
"requestParams": {
"workspace_id": "30490590956351435170",
"metastore_id": "abc123456-8398-4c25-91bb-b000b08739c7",
"default_catalog_name": "main"
},
"response": {
"statusCode": 200,
"errorMessage": null,
"result": null
},
"MAX_LOG_MESSAGE_LENGTH": 16384
}