Trace an access decision
The auditors ask: „On October 14 at 21:10, Max Vermittler read contract data. From where, with which access, and which setting allowed it?“—or the other way round: „Why was Erika denied this morning?“
Solution overview
Four sources, linked through the person, the key, and the correlation ID:
| Source | Answers | Right |
|---|---|---|
SignInEvents | When, from where (address, country, network operator), with which method and key; result and reason of a denial (Reason); which rules in which version decided and which one an exception lifted (Rules), and the signals of the decision (Signals) | sign-in-events |
AuditEntries | Which resource and which record (Target) with which method, allowing access rule with version (AccessRule), status, reason (Reason), denying sign-in rule (SignInRule), person, key, correlation | admin; with an administration store for Gateway:AuditLog:Days (default 90 days), otherwise the last 10,000 since start |
ChangeLog | Who changed which rule, key, or person, when and how, with values before and after | admin |
explain-sign-in | What the sign-in policy says today for the person per method and origin, with the matching rules and their version | admin |
Implementation
- Find the sign-in:
SignInEventswith$filter=Person eq 'Max Vermittler' and At ge 2026-10-14T19:00:00Z and At lt 2026-10-14T20:00:00Z. The event namesMethod,KeyId,Origin,Country,NetName,Outcome, and for a denialReason(for exampledeniedByCountry,outsideKeyNetworks,revoked).Rulesnames the rules the decision was based on, with identifier and version, including a rule an exception lifted (spared, with the exception's note);Signalsnames country and second factor (see Grounds of the decision). - Find the access:
AuditEntrieswith the same person and time;Resource,Verb, andStatusshow what was read,Targetthe record (…/Vertraege(17)or…/Vertraege?$filter=Nr eq 'V-2026-17'),CorrelationIdlinks to the sign-in event. - Access at the time:
PersonalKeys('k…')shows the key's restrictions and term;ChangeLogwith$filter=Entity eq 'PersonalKeys' and EntityKey eq 'k…'shows whether they changed since. The rule today and then:
explain-sign-inwith the origin from step 1 names the rules with their version today. If it matches the version in the event, the rule still stands as it did at the sign-in. If it differs,ChangeLogshows who changed it since, when, and how: withEntityequal tosave-sign-in-ruleand the rule's identifier asEntityKeywhen it was saved with that command, otherwise withEntityinSignInRules,SignInRuleItems, andSignInRuleExceptions. The request toexplain-sign-in:{ "person": "Max Vermittler", "scope": "Data", "origins": [ { "name": "Oct 14 21:10", "address": "203.0.113.7" } ] }- The access rule today and then:
AccessRulein the entry from step 2 names the rule that allowed the access, with its version (vertrieb-lesen@3f2a8c41d07b9e65).ClientRulesshows the version today inRuleVersion; if it matches, the rule still stands as it did. OtherwiseChangeLogwithEntityinClientRulesandClientRuleItemsshows who changed it since, when, and how.PersonRules,WindowsAccounts, andSqlLoginsshow who has the rule.
Result: Time, origin, access, record read, and the rules the decision was based on, with proof of who set these rules and when.
Notes
- Version, not content. The event keeps the rule's version, not its whole content; the content of an earlier version comes from the „before“ values in the change log.
- Older events from before the service kept the grounds have empty
RulesandSignals; for them, the rule follows from the change log alone. AuditEntriesreaches back as far as its retention. With an administration store, that isGateway:AuditLog:Days(default 90 days); without one, the last 10,000 entries since start. For older access, read the audit stream in the service's logs, byCorrelationIdor person.- Entries from before the extension of the access log have
TargetandAccessRuleempty; for them, the record and the rule follow only from the change log and the person's rules. - Personal data.
Targetcan contain key and filter values that relate to a person (see `Gateway:AuditLog`). Single events with address and person are visible only with the rightsign-in-events; grant it deliberately, for example to the auditors (see check sign-in patterns).