Všetky udalosti žijú v RoundlyConsulting\Sentinel\Events a nesú len skalárne hodnoty — typy, id, názvy pečatí, stavy, názvy atribútov, id kľúčov — nikdy hodnoty, materiál kľúčov ani telá požiadaviek, takže sú bezpečné pre listenery vo fronte aj pre logy. Udalosti viazané na zápis sa odosielajú po commite, ostatné synchrónne. Sentinel::fake() neodošle žiadnu.
| Udalosť | Kedy | Obsah |
|---|---|---|
ModelSealed | po commite | typ/id modelu, pečať, verzia, id kľúča, SealEvent, aktér |
TamperDetected | synchrónne | typ/id modelu, pečať, VerificationStatus, dôvod, zmenené atribúty, kontext, id kľúča |
TamperAcknowledged | po commite | typ/id modelu, pečať, verzia, predošlý stav, zmenené atribúty, dôvod, aktér |
SealRemoved | po commite | typ/id modelu, pečať, deleted/unsealed, predošlý stav |
SealingSuspended | synchrónne | dôvod, aktér |
KeyGenerated, KeyRotated, KeyRevoked, KeyRetired | po commite | kruh, id kľúča, algoritmus (+ id predošlého kľúča / dôvod a aktér) |
KeyImported | po commite | kruh, id kľúča, algoritmus, či podpisuje, aktér |
KeyIntegrityViolated | synchrónne | kruh, id kľúča, driver |
LedgerCheckpointed | po commite | pripojenie, seq, záznamy, root |
LedgerIntegrityViolated | synchrónne | pripojenie, LedgerFinding zistenia |
AnchorPublishFailed | synchrónne | kotva, pripojenie, seq, chyba |
IdempotentRequestReplayed, IdempotencyRejected | synchrónne | metóda, routa, status (+ IdempotencyRejection) |
HttpSignatureRejected | synchrónne | SignatureRejection, id kľúča, metóda, cesta |
Pomocníci
| Metóda | Na | Vracia |
|---|---|---|
model(): ?Model | ModelSealed, TamperDetected, TamperAcknowledged, SealRemoved | Model, s ohľadom na morph map, načítaný s pozastaveným overovaním pri načítaní, vrátane soft-deleted riadkov; po tvrdom zmazaní null. |
changedColumns(): list<string> | TamperDetected, TamperAcknowledged | Zmenené stĺpce bez prefixu a: — ['amount']; prázdne, ak sú neznáme. |
changedComputed(): list<string> | TamperDetected, TamperAcknowledged | Zmenené vypočítané polia bez prefixu c: — ['lines']. |
use Illuminate\Support\Facades\Event;
use RoundlyConsulting\Sentinel\Events\LedgerIntegrityViolated;
use RoundlyConsulting\Sentinel\Events\TamperDetected;
Event::listen(function (TamperDetected $event): void {
if ($event->context->value !== 'retrieve') {
Notification::route('slack', config('services.slack.security'))
->notify(new DataTamperingAlert($event->sealableType, $event->sealableId, $event->seal, $event->status));
}
$invoice = $event->model(); // loads even the tampered row
$columns = $event->changedColumns(); // ['amount']
});
Event::listen(fn (LedgerIntegrityViolated $event) => report(new RuntimeException(
"Ledger integrity violated on {$event->connection}: ".count($event->findings).' finding(s)',
)));Každé zistenie sa navyše zaloguje na úrovni warning do verification.log_channel (len názvy), takže upozornenie z logu funguje aj bez listenera.
Prejavte lásku k open source
Tento balík je zadarmo pod licenciou MIT. Ak vám šetrí čas, jednorazový príspevok alebo členstvo na Patreone nám pomôže ho ďalej udržiavať, testovať a dokumentovať.
Ďalšie spôsoby podpory vrátane kryptomienOdoslaním daru súhlasíte s našimi podmienkami prijímania darov.
Chcete to zabudovať do svojho produktu?
Naše balíky integrujeme do zákazkových Laravel a AI riešení. Napíšte nám, na čom pracujete, a ozveme sa do 48 hodín.