Configurez l’enregistrement des audits

Note

La journalisation d’audit est une fonctionnalité Flower Enterprise. Voir Flower Enterprise pour plus de détails.

Dans ce guide, vous apprendrez à configurer SuperLink avec la journalisation d’audit. La journalisation d’audit permet de capturer et de stocker des événements qui se produisent dans SuperLink, tels que des informations précieuses sur le comportement et les performances de l’application, ainsi que lorsque un utilisateur interagit avec le système.

La fonctionnalité de journalisation d’audit apporte des sorties de journaux sous forme JSON à Flower. Elle peut être activée pour SuperLink afin de capturer des événements lorsqu’un utilisateur ou un SuperNode interagit avec SuperLink. Les administrateurs du système peuvent ensuite configurer un back-end de journalisation afin de capturer systématiquement ces événements dans une base de données.

Les événements utilisateur se produisent lorsque un utilisateur Flower interagit avec SuperLink, comme la connexion, l’exécution d’un run ou la consultation de la liste des runs sur le SuperLink. Ces événements capturent l’interaction de l’utilisateur via le flwr CLI et le SuperLink.

Les événements d’application se produisent lorsque les composants Flower interagissent entre eux, spécifiquement, entre SuperLink et SuperNodes. Ces événements montreront par exemple quand des messages sont poussés et tirés vers/à partir de SuperLink et quand un SuperNode établit une connexion avec SuperLink.

Par défaut, le schéma d’sortie est le suivant :

{
  "timestamp": "2025-07-31T08:00:00Z",
  "actor": {
    "id": "<Flower Account ID> or <Node ID>",
    "description": "<account_name> or 'SuperNode'",
    "ip_address": "<IP address of user or SuperNode>",
  },
  "event": {
    "action": "<Method name>",
    "run_id": "<Run ID>",
    "fab_hash": "<FAB hash>",
  },
  "status": "<started/completed/failed>"
}

where,

Field

Description

timestamp

Heure de l’événement en format UTC et conforme à RFC-3339

actor.id

Flower ID de compte (lorsqu’appelé par un utilisateur flwr CLI) ou SuperNode ID (lorsqu’appelé par un fournisseur OIDC)

actor.description

Nom d’utilisateur enregistré sur le fournisseur OIDC ou SuperNode

actor.ip_address

Adresse IPv4 ou IPv6 de l’acteur

event.action

Nom du méthode de service, par exemple ControlServicer.StartRun/FleetServicer.PullMessages

event.run_id

ID de la tâche Flower

event.fab_hash

Hachage FAB de l’application Flower

status

Chaîne décrivant si l’action est lancée, terminée ou échouée

Prérequis

Pour activer la journalisation d’audit, démarrez l’application avec l’argument SuperLink comme suit :

 flower-superlink --enable-event-log <other flags>

Notez que la fonctionnalité de journalisation d’audit ne peut être activée qu’avec le user authentication feature.

Exemples de sortie

Voici un exemple de sortie lorsqu’un utilisateur exécute flwr run (notez le "action": "ControlServicer.StartRun") :

INFO :      [AUDIT] {"timestamp": "2025-07-12T10:24:21Z", "actor": {"actor_id": "...", "description": "...", "ip_address": "..."}, "event": {"action": "ControlServicer.StartRun", "run_id": "...", "fab_hash": "..."}, "status": "started"}
INFO :      ControlServicer.StartRun
INFO :      [AUDIT] {"timestamp": "2025-07-12T10:24:21Z", "actor": {"actor_id": "...", "description": "...", "ip_address": "..."}, "event": {"action": "ControlServicer.StartRun", "run_id": "...", "fab_hash": "..."}, "status": "completed"}

Voici un autre exemple de sortie lorsqu’un utilisateur exécute flwr list :

INFO :      [AUDIT] {"timestamp": "2025-07-12T10:26:35Z", "actor": {"actor_id": "...", "description": "...", "ip_address": "..."}, "event": {"action": "ControlServicer.ListRuns", "run_id": null, "fab_hash": null}, "status": "started"}
INFO :      ControlServicer.ListRuns
INFO :      [AUDIT] {"timestamp": "2025-07-12T10:26:35Z", "actor": {"actor_id": "...", "description": "...", "ip_address": "..."}, "event": {"action": "ControlServicer.ListRuns", "run_id": null, "fab_hash": null}, "status": "completed"}

Et voici un exemple lorsque un SuperNode tire un message à partir de SuperLink :

INFO :      [AUDIT] {"timestamp": "2025-07-14T10:27:02Z", "actor": {"actor_id": "...", "description": "SuperNode", "ip_address": "..."}, "event": {"action": "FleetServicer.PullMessages", "run_id": null, "fab_hash": null}, "status": "started"}
INFO :      [Fleet.PullMessages] node_id=...
INFO :      [AUDIT] {"timestamp": "2025-07-14T10:27:02Z", "actor": {"actor_id": "...", "description": "SuperNode", "ip_address": "..."}, "event": {"action": "FleetServicer.PullMessages", "run_id": null, "fab_hash": null}, "status": "completed"}