Skip to content

Audit Trail : le seul produit où feint serait la source de vérité, et son anneau existe déjà #772

Description

@stephrobert

Audit Trail est le seul produit Scaleway où cet émulateur serait la source de
vérité
plutôt qu'un imitateur.

Ce qu'il n'aurait pas à inventer

Le noyau tient déjà un journal de ses propres appels :

internal/core/emulator/events.go:30   Bounded. 256 entries, oldest dropped.

Chaque entrée est un trace.Exchange avec method, path, operation,
status, req, res et les en-têtes, publié en SSE sur GET /_feint/events.

Un pack audit_trail qui projette cet anneau en
Event{recorded_at, principal, product_name, method_name, resources, status_code}
ne devine rien : ce sont ses propres appels, qu'il est seul à connaître
exactement. Partout ailleurs, feint imite ce qu'un cloud répond ; ici, il
rapporterait ce qu'il a fait.

Ce qui est absent aujourd'hui

grep -c '"audit_trail/' internal/providers/scaleway/pack.go   -> 0
grep -c 'audit_trail' coverage/scaleway-coverage.json         -> 0
grep -c 'audit_trail' contracts/scaleway.json                 -> 0

Non routé, non scanné, non contracté. Le SDK publie 21 méthodes sur
audit_trail/v1alpha1.

Le client qui le demanderait

stephrobert/collection-scaleway a un rôle fleet_diff qui compare deux
instantanés et sait dire ce qui a changé, jamais qui l'a changé : deux
photos ne portent pas d'acteur. C'est la question que leur fleet_changes
posera et à laquelle il ne pourra pas répondre seul (leur #256).

L'énumération ResourceType du SDK nomme exactement ce que ce pack sert :
instance_server, kube_cluster, load_balancer_lb, vpc_gw_gateway,
baremetal_server, sbs_volume, ipam_ip.

Le périmètre

Les trois lectures d'abord : ListEvents (filtré par resource_type,
method_name, status, recorded_after/before, product_name, resource_id),
ListAuthenticationEvents, ListProducts. Les règles d'alerte sont un second
temps.

Les limites à écrire d'emblée, pas après

  • v1alpha1. Ce dépôt refuse d'épingler des formes alpha sans client
    mesuré ; ici le client mesuré serait cette collection, ce qui lève l'objection
    mais doit être écrit plutôt que supposé.
  • L'anneau est borné à 256 et non persistant. Un recorded_after qui remonte
    plus loin ne trouvera rien, et c'est une divergence à mettre dans
    docs/limits.md, pas une approximation à taire. La persistance est 0.18.0.
  • principal serait la clé telle qu'envoyée, puisque rien ne la vérifie
    ici. À documenter comme une limite, jamais à présenter comme une identité.

Pourquoi ce n'est pas urgent

Cette surface n'a de consommateur que le jour où leur fleet_changes existe.
Elle est ici pour être décidée en même temps que lui.


Relevé par un audit croisé des deux dépôts. Contrepartie ouverte chez eux :
stephrobert/collection-scaleway#256.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions