What SPHIOR Ledger does
Jira configuration drifts constantly — workflows, schemes, permissions, custom fields, projects, and screens change, and after a while nobody remembers who changed what or why. SPHIOR Ledger answers three questions, continuously and automatically:
- What changed, when, and (when the audit log allows) by whom?
- What breaks if I change or delete this object? (blast-radius)
- Can I prove to an auditor that this record wasn't altered after the fact?
It records every configuration change in a tamper-evident, append-only ledger secured by a SHA-256 hash chain, and — on the Advanced edition — adds periodic access reviews and compliance control mapping (SOC 2, ISO 27001, NIST CSF, HIPAA, PCI DSS, J-SOX) on the same ledger.
How it works
Jira does not emit real-time events for configuration or permission changes. SPHIOR Ledger therefore uses a scheduled snapshot + diff model:
- A scheduled trigger captures the full state of your tracked objects from the Jira REST API.
- The capture is normalized and hashed, then stored in Forge SQL inside your tenant.
- The new snapshot is compared to the previous one; field-level differences are recorded as append-only diff rows.
- Each record is linked into a hash chain — every record’s hash includes the previous record’s hash and a hash of its own content, so a silent edit is detected even if the chain is re-linked.
- Old snapshots are removed by retention; diffs and the hash chain are never deleted.
This design is hands-off: after install, capture, diff, retention, and (Advanced) scheduled evidence generation all run on their own.
Getting started
1. Install
Install from the Atlassian Marketplace. A 30-day free trial applies to every paid edition.
2. Approve the scope request
On install, Jira asks you to approve:
| Scope | Why |
|---|---|
read:jira-workmanage:jira-projectmanage:jira-configuration | Read workflows, schemes, permissions, custom fields, projects, screens. Atlassian does not publish read-only granular scopes for these objects, so these manage:* scopes are the minimum working set for read access. |
read:jira-userread:group:jira | Used by the Advanced Access module (users, groups, memberships). On Standard, no user/group data is captured. |
storage:app | Store the ledger in Forge SQL inside your tenant. |
manage:* scopes are write-capable, but writes happen only when an Advanced admin runs a rollback, always behind a blast-radius confirmation.3. First snapshot
The first scheduled capture establishes a baseline(no diffs yet — there's nothing to compare to). From the next capture onward, changes appear in the Recent changes feed. You can also take a capture immediately with Run snapshot now.
Editions: Standard vs Advanced
| Feature | Standard | Advanced |
|---|---|---|
| Audit: 6 object types, hash chain, actor attribution | ||
| Field-level diff viewer + blast-radius (impact analysis) | ||
| Checkpoints (label / protect / notes) | ||
| Manual evidence pack export | ||
| Health dashboard, diagnostic export, data & privacy panel | ||
| Capture interval | hourly / daily / weekly | + 5-minute |
| Retention | up to 365 days | unlimited (SOX 7-year ready) |
| Single + bulk rollback (optional 4-eyes approval) | — | |
| Access module (periodic access reviews) | — | |
| Compliance module (control mapping & attestation) | — | |
| Auditor read-only role | — | |
| Scheduled evidence packs (monthly / quarterly / annual) | — | |
| Compliance Cycle Engine (fiscal year, due-date calendar, annual value report) | — |
Editions are selected at purchase. Your installation and ledger are unaffected by an edition change — upgrading is a tier change, not a migration.
Audit module
Tracked object types: workflows, workflow schemes, permission schemes, custom fields, projects, screens.
- Recent changes feed — a timeline of every change, filterable by object type.
- Diff viewer — field-level, human-readable differences (added / modified / deleted), with the raw before/after available on demand. The diff engine uses an LCS algorithm so a single mid-array insertion is reported as one change, not a cascade.
- Blast-radius (impact analysis) — before you touch an object, see what depends on it (e.g. “N screens use this custom field”, “this workflow scheme is used by M projects”).
- Actor attribution — when the Jira audit log confirms a single actor for a change, the row is marked with high confidence. When it can’t, the actor is shown as Unknown — we never guess. (Actor attribution requires a paid Jira plan with audit-log API access; Free-plan sites show Unknown for all actors.)
- Checkpoints — label a snapshot (e.g. “Pre-Q2 reorg baseline”), add notes, or protect it from retention.
- Health dashboard — capture success rate, time since last snapshot, chain verification, retention plan, and a compliance calendar of pending actions.
Access module (Advanced)
Designed for SOC 2 CC6.6 / ISO 27001 A.9.2.5 / J-SOX periodic access review.
- Captures users, groups, group memberships, project roles, and role actors.
- A Group membership changes feed shows who gained or lost access.
- Periodic access review workflow: start a review for a period, decide each access item (Approve / Revoke / Flag), then attest with your electronic sign-off — the attestation is written into the hash chain.
- The reviewed snapshot is automatically protected from retention for the life of the review.
Compliance module (Advanced)
Maps your configuration and access changes to control frameworks:
- SOC 2, ISO 27001, NIST CSF, HIPAA, PCI DSS, J-SOX.
- Each diff is automatically attributed to the relevant control(s) at capture time (append-only — historical attributions are never rewritten).
- Control coverage matrix: per control, see the last attestation, evidence count in the period, and what's due.
- Attest a control for a period; the attestation joins the same tamper-evident chain. Export a control-scoped evidence pack for an auditor.
Rollback (Advanced)
Restore a single object — or a batch — to a previous snapshot state.
- Every rollback runs behind a blast-radius confirmation so you see what depends on the object before you restore it.
- 4-eyes approval (optional): turn on Require approval for rollback and a rollback must be proposed by one admin and approved by a different admin before it executes (SOX segregation of duties). Each step (propose / approve / reject / execute) is recorded in the hash chain.
- The rollback itself is recorded as an auditable event in the ledger.
Evidence packs & independent verification
An evidence pack is a ZIP an auditor can verify without any access to your SPHIOR installation. Generate one for a snapshot, a date range, a checkpoint, or (Compliance) a control.
A pack contains:
evidence-pack.html— a human-readable cover page with the chain verdict.diffs.csv,objects.csv,chain.csv— the underlying ledger data.signatures.txt— the SHA-256 of every other file.
To verify a pack independently
# 1. Verify the files weren't altered in transit
shasum -a 256 *.csv evidence-pack.html | diff - signatures.txt
# 2. Re-walk chain.csv: each row's record_hash must equal
# sha256( prev_hash | payload_hash | ts_ms ), and each prev_hash
# must equal the previous row's record_hash.Advanced — scheduled evidence packs: generate packs automatically monthly, quarterly, or annually, aligned to your fiscal year (see below), and download them from Settings.
Compliance Cycle Engine: fiscal year, cadences, calendar
(Advanced) Enterprises rarely run on the calendar year. Set your fiscal year start month in Settings (e.g. April for J-SOX, October for US federal), and every quarterly/annual boundary follows it:
- Scheduled evidence packs and access reviews align to your fiscal quarters and year. Period labels read e.g. “FY2026 Q2 (Apr–Jun 2026)”.
- The Compliance calendar (on the Health dashboard) shows the next access review due, overdue attestations, and rollback approvals waiting — so you see what this period needs at a glance.
- The annual value report summarizes the fiscal year: changes captured, high-risk changes caught, evidence packs produced, and chain integrity — the artifact you bring to a renewal or audit.
All cycle math is in UTC, matching how Forge schedules fire and how audit windows are conventionally defined.
Settings reference
| Setting | Description | Edition |
|---|---|---|
| Snapshot interval | How often capture runs: hourly / daily / weekly (Standard); 5-minute (Advanced). | All |
| Retention | How long snapshots are kept. Diffs and the chain are never deleted. Up to 365 days (Standard) / unlimited (Advanced). | All |
| Pause capture | Temporarily stop scheduled capture (manual run still works). | All |
| Fiscal year start | Month your fiscal year begins (1–12). Drives quarterly/annual boundaries. | Advanced |
| Scheduled evidence packs | Off / monthly / quarterly / annually. | Advanced |
| Access review cadence | Off / monthly / quarterly / annually reminder. | Advanced |
| Require approval for rollback | Turn on 4-eyes approval. | Advanced |
| Access roles (auditor) | Designate read-only auditor accounts. | Advanced |
Roles & access
SPHIOR Ledger is available to Jira administrators (it lives on the Jira admin page).
- Admin — full access.
- Auditor (Advanced) — a Jira admin you designate as read-only inside SPHIOR: they can view everything and export evidence, but cannot run snapshots, roll back, change settings, or reset the chain. Useful for segregation of duties. The account that installed the app cannot be made an auditor (self-lockout protection), and an installer-transfer flow lets you reassign that protected role.
Security, data residency & privacy
- Runs on Atlassian / zero egress. SPHIOR Ledger makes no external API calls, uses no external storage, and runs no external compute. All data — snapshots, diffs, hash chain, attestations, evidence packs — stays in Forge storage inside your Atlassian tenant. You can verify this in the published manifest: no egress-capable modules are declared.
- Tamper-evident. SHA-256 hash chain on every record, with independent verification supplied in every evidence pack (see above).
- Append-only. Diffs, attestations, and the chain are never modified — even by retention, which only removes old snapshots.
- Personal data. The only PII stored is the Jira
accountId(Atlassian's pseudonymous account identifier) for actor attribution. Right-to-erasure is handled through Atlassian: deleting an Atlassian account anonymizes the id at the platform level. - Data & Privacy panel (in Settings) shows where your data lives, who can access it, current retention, and the GDPR/erasure path.
- Diagnostic export produces a redacted support bundle (no raw config, no real account ids) you can send to support yourself — SPHIOR staff have no direct access to your installation.
Usage limits
To keep the service sustainable, daily caps apply (well above normal usage):
| Limit | Standard | Advanced |
|---|---|---|
| Daily snapshot cap | 150 | 300 |
| Daily rollback cap | 0 (read-only) | 100 |
Reaching a cap pauses that action until 00:00 UTC; existing data is always readable.
FAQ
Does SPHIOR Ledger send my Jira data anywhere?
No. It is certified Runs on Atlassian — all data stays in Forge storage in your tenant. No external API, storage, or analytics.
Why does install ask for "manage" scopes?
Atlassian does not publish read-only granular scopes for workflows and schemes. The two manage:* scopes plus read:jira-work are the minimum set the REST endpoints accept for reading these objects. The Standard edition performs no writes; rollback (Advanced) uses these scopes to write back, always behind a confirmation.
What if my Jira plan is Free?
Capture, diff, blast-radius, and evidence packs all work. The actor column shows Unknown, because the Jira audit-log API requires a Standard+ plan — we surface this honestly and never guess.
Can I restore a previous configuration?
On the Advanced edition, yes — single and bulk rollback, always behind a blast-radius confirmation and (optionally) 4-eyes approval. The Standard edition is read-only by design.
How do auditors verify an evidence pack?
The pack ships the full chain plus per-file SHA-256 signatures. A recipient re-hashes each file and re-walks the chain with no access to your install. See Evidence packs.
Does it support non-calendar fiscal years?
Yes (Advanced). Set your fiscal year start month and all quarterly/annual evidence packs and reviews align to it.
Support
- Support: support@sphior.com
- Response targets: 2 business days (Standard / trial), 1 business day (Advanced).
SPHIOR Ledger is built on Atlassian Forge and is certified Runs on Atlassian.
