Log d'audit

Vue d'ensemble

Pour faciliter le suivi des accès aux Informations personnelles identifiables, Zato SSO utilise un log d'audit.

Chaque action effectuée sur le système SSO entraîne l'ajout d'une entrée dans un log d'audit, chaque message décrivant l'opération et ses métadonnées. Cette fonctionnalité est toujours active et ne peut être désactivée. Les services définis par l'utilisateur peuvent également stocker leurs propres entrées de log en utilisant l'API Python documentée ci-dessous.

INFO - 15558:DummyThread-10 - zato_audit_pii:44 - {"cid": "236960f66c182bc",
    "op": "signup", "extra": {"current_app": "CRM", "remote_addr": "127.0.0.1"}}

Chaque enregistrement de log saisit les informations suivantes:

Nom Optionnel Exemple Notes
cid --- 5dbe1a4d ID de corrélation - un identifiant unique attribué à chaque demande reçue par Zato. Notez qu'il peut y avoir plusieurs entrées de log d'audit avec le même cid si une requête donnée a accédé ou manipulé des IIP plus d'une fois. Pour les entrées d'audit émises par Zato, la valeur du cid sera la même que celle stockée dans http_access.log pour chaque requête HTTP reçue, ce qui permet de déterminer facilement quel appel HTTP donne lieu à quel élément du log d'audit.
op --- get_user Une étiquette textuelle pour l'opération.
current_user Oui usr1e39517 ID utilisateur du compte effectuant l'opération - pour les entrées écrites dans le journal par Zato en interne lors des appels SSO, il est garanti que cette valeur ne contiendra que des chaînes générées aléatoirement servant d'ID utilisateur, c'est-à-dire jamais de noms d'utilisateur, de noms d'affichage ou d'autres PII.
target_user Oui usr25ec935 ID utilisateur ou nom d'utilisateur du compte au nom duquel une opération donnée est effectuée, peut éventuellement contenir un nom d'utilisateur qui, à son tour, peut être un PII (selon la façon dont les noms d'utilisateur sont créés).
result Oui ok Le cas échéant, résultat de l'opération, par exemple "ok" si un certain appel a réussi.
extra Oui {"found":true} Un dictionnaire de paramètres supplémentaires liés à l'entrée, n'a pas un format fixe.

Le fichier logpar défaut est appelé audit-pii.log et est stocké avec les autres fichiers journaux, par exemple, si le chemin vers un serveur est /opt/zato/server1/logs alors le logd'audit sera dans /opt/zato/server1/logs/audit-pii.log.

La configuration standard de la journalisation Python depuis logging.conf s'applique au logd'audit, ce qui signifie qu'il peut être reconfiguré pour utiliser d'autres destinations de logcomme syslog.

API Python

À partir de ses propres services, le log d'audit est disponible via les méthodes .info, .warn et .error de l'objet self.audit_pii, comme ci-dessous. Il n'est pas nécessaire que le cid donné en entrée soit self.cid - tout identifiant de corrélation approprié dans une situation particulière peut être utilisé, Zato ne l'interprète en aucune façon.

# -*- coding: utf-8 -*-

# Zato
from zato.server.service import Service

class MyService(Service):
    def handle(self):
        self.audit_pii.info(self.cid,  'my-operation-on-info-level',  'user-id')
        self.audit_pii.warn(self.cid,  'my-operation-on-warn-level',  'user-id')
        self.audit_pii.error(self.cid, 'my-operation-on-error-level', 'user-id')

Chacune des méthodes .info, .warn et .error a les mêmes arguments et la même signature. Seuls cid et op sont requis:

.info(self, cid, op,  current_user='', target_user='', result='', extra='')
.warn(self, cid, op,  current_user='', target_user='', result='', extra='')
.error(self, cid, op, current_user='', target_user='', result='', extra='')