AuditService
plany.audit.v1.AuditService — the record of every change made on your account.
accounts/{account}/auditEvents/{audit_event}
Every change made on your account — by a person in the console, by the CLI, by a CI job with an API key — is recorded: who, with which credential, from where, to what, and whether it worked. The record is read-only. Nothing can add to it, edit it or remove from it, and you can prove that.
| Call | What it does |
|---|---|
ListAuditEvents | The record, narrowed by filter. |
GetAuditEvent | One entry. |
SummariseActivity | Counts over a time_range — who did how much, and how much of it failed. |
VerifyIntegrity | Confirms that nothing in the record has been altered or removed. |
ActivityQuestions the filter answers
| Set | To see |
|---|---|
resource | Everything that ever happened to one game server. |
principal | Everything one person or service account did. |
credential_id | Everything one API key did — the first thing to run if a key leaks. |
failures_only | Only calls that were refused or failed, such as a run of denials from one key. |
method, service | Every call of one kind, everywhere. |
project, location, time_range | Where and when. |
The record is for the whole account rather than one region, so one query covers every region you have resources in.
Verifying the record
VerifyIntegrity needs audit.auditEvents.verify, which the account owner
holds and an administrator does not. An administrator can read the record but not
verify it, because an administrator is one of the people it might be evidence
about.
What is left out
Sensitive request fields are removed before an entry is written: a password never reaches the record, and neither does a build's Steam password or an API key.