A SaaS provider holds the only record of what a third-party OAuth app read from your tenant - how do you acquire it?
answer
- you ask for it, you cannot take it
- stop their retention clock first
- scope tight, window wide
- format and turnaround are theirs, not yours
- absence of a record is not absence of the act
basics
~20 sYou cannot collect it, only request it. File a preservation request first to stop the provider's own retention clock, then a precisely scoped export through the contractual channel, over-wide on the time window, and record the request and the receipt as chain of custody like any other evidence.
solid answer
~60 sEvidence held by a provider is the one class of forensic material you acquire by asking. The sequence matters. First, preservation: a written request naming the tenant, the service principal and a generous time window, sent through whatever channel the contract gives you, so the records stop ageing out while the rest is negotiated. Then the export request itself, scoped precisely - tenant, application identifier, record types, an over-wide window - because a vague request comes back either empty or as an unusable dump, and you rarely get a cheap second attempt. Expect a format and a turnaround you do not control: days to weeks, delivered as the provider's export rather than raw logs, sometimes only via legal process. Treat receipt as evidence handling: hash on arrival, record who asked, when, for what, who received it, and keep the provider's statement of what the export covers. Then read it for what it proves - what the provider recorded, not what happened. Meanwhile the endpoint sweep runs; you never idle waiting on a vendor.
code
json · 14 lines{
"case": "IR-2214",
"artefact": "provider-held tenant audit export",
"preservation_request": { "filed_utc": "...T04:10Z", "acknowledged": true },
"requested_scope": {
"tenant_id": "...",
"subject_service_principal": "...",
"record_types": ["consent grant", "token issuance", "application API access"],
"window_utc": ["-180d", "now"]
},
"channel": "enterprise support + security contact, in writing",
"expected_delivery": "provider export, format TBC, 5-15 business days",
"on_receipt": ["hash", "record deliverer and time", "retain coverage statement"]
}go deeper
Know that some evidence lives only with the provider and can only be requested, and that the request itself has to be written down with a date and a scope.
Explain why preservation comes first, what a request must name to be actionable, and why the tenant console is not the full extent of what the provider holds.
Show that you scope tight on subject and wide on time because there is no cheap second attempt, run the rest of the investigation in parallel, and read the export for what it proves rather than what it suggests.
Own the contract: which channel binds the provider, what export and turnaround commitments exist, and whether the visibility gap the case exposed is worth buying a higher tier to close.
## Evidence you cannot collect Everything else in acquisition assumes you can reach the source: you have the host, the disk, the agent. When the material lives inside a provider's platform - which identity consumed a delegated permission, what a service principal enumerated, which records a connector touched - you have no such reach. Your tenant's own console shows you what your licence tier exposes and retains, which is routinely a fraction of what the provider itself holds and for a shorter period. The remainder is acquired by **request**, and a request has properties an image does not: latency you do not control, a scope fixed at the moment you file, a format chosen by someone else, and a counterparty who may say no. ## Step one, and it is genuinely first: preservation Before you argue about scope, stop the clock. A preservation or legal-hold request tells the provider to retain records relating to a defined tenant, principal and period beyond its normal deletion schedule. It is cheap, it is fast, and it is the only step that is irreversible if skipped - retention that expires while you are drafting a careful request is gone, and no amount of later escalation recovers it. Send it in writing, through the channel the contract names (enterprise support, a named TAM, the security contact, or counsel-to-counsel where the agreement requires it), and keep the acknowledgement. Scope the hold wider than you think you need; narrowing later is free, widening later may be impossible. ## Step two: a request that is precise where it must be and generous where it can be A provider will act on an identifiable request and stall on a vague one. Name: - the **tenant or account identifier**, - the **subject**: the application or service principal identifier, and the grant in question, - the **record types** you want, in the provider's own vocabulary - use their documentation's terms, not yours, - the **time window**, deliberately wider than your current hypothesis, because the discovery date is not the compromise date and re-filing costs weeks, - the **format and delivery** you can actually ingest, and a request for a statement of what the export does and does not cover. Ask explicitly whether records exist that your tier does not surface, and whether anything requires legal process rather than a support request. That answer shapes the timeline more than anything else you do. ## Step three: treat receipt as acquisition An export is evidence you did not collect, which makes documentation more important, not less. Record: - who filed the request, when, and its exact text or reference, - the provider's acknowledgement and any scope negotiation, - when the export arrived, through what channel, and its hash on receipt, - the provider's own description of coverage and any caveats it attached. You cannot demonstrate the provider's internal collection integrity, and you should not claim to. What you can demonstrate is an unbroken account from request to receipt to analysis, and that the copy you analysed is identical to the one delivered. ## Reading it: what the export actually proves This is where cases go wrong. A provider export proves **what the provider recorded**. It does not prove what happened. - An entry showing a token issued to a service principal proves a credential was accepted for that principal, not that a person was at a keyboard. - An entry showing an API call proves the platform logged the call, not the contents of what came back. - **The absence of an entry proves nothing on its own.** The record type may not be generated at your licence tier, may not be part of the export the provider chose to run, or may fall outside the window you asked for. Distinguishing *not recorded* from *did not happen* is the single most valuable thing you can do with an export, and the honest answer is often that the data cannot settle the question. ## The waiting problem Provider turnaround runs from days to weeks; legal process runs longer. The investigation cannot stall for it, and this is what separates a senior answer from a procedural one: you file the preservation request within the first hour, file the export request as soon as scope is defensible, and then run every line of enquiry you *do* control in parallel - the endpoint sweep, your own retained tenant telemetry, the identity provider's records you already hold. You also tell the incident lead the export's expected arrival, because a finding that lands in three weeks changes what the interim conclusions can safely say. ## When the answer comes back thin Providers sometimes deliver less than asked, or a normalised summary rather than the underlying records. Push back once, in writing, naming what is missing and why it matters; escalate through commercial ownership rather than support if the contract has teeth; and if the record simply does not exist, write that down. `The provider does not retain this` is a finding about your own visibility, and it belongs in the retrospective as a gap to close before the next incident - which is a better outcome than a report that quietly implies coverage you never had.
- Why file the preservation request before you have finished scoping the export?Because retention is the only part of this that expires while you think. A hold is cheap, fast and reversible; records deleted on schedule while you draft a careful request are gone permanently. Scope the hold generously, then negotiate the actual export at whatever pace the provider requires.
- The export contains no entry for the app reading any mailbox. Can you conclude it never did?No. You can conclude the provider produced no such record within the scope you asked for. The record type may not be generated at your licence tier, may sit outside the requested window, or may not have been included in the export the provider ran. Confirm which of those it is before writing anything about what did or did not happen.
- How does chain of custody work for evidence you never touched at the source?You document what you actually did: the request text and date, the provider's acknowledgement and any negotiation, the delivery channel and time, and a hash of the file on receipt. You cannot attest to the provider's internal handling and should not pretend to - you attest to the unbroken account from request to analysis, and keep the provider's own coverage statement alongside it.
- What do you do during the two weeks the export takes?Everything you control. The endpoint sweep, your own retained tenant and identity telemetry, and any local artefacts. You also tell the incident lead when the export is due, so interim conclusions are written knowing a significant piece of evidence is still outstanding rather than implying the picture is complete.
saying these in an interview costs you the question
- Requests the export without first asking for preservation
- Files a vague request and expects to refine it later
- Treats a missing record as proof the activity never happened
- Assumes the tenant console shows everything the provider holds
- Stalls the whole investigation waiting on the vendor
- Keeps no record of who asked for what and when