Security & compliance

Written for the people who sign off on the app rather than use it: security review, data protection and procurement. Every answer here follows from how the app is built.

The short version

QuestionAnswer
Where does the app run?Entirely on the Atlassian Forge platform, inside your Atlassian tenant. There is no vendor-operated infrastructure in the path.
Does any data leave Atlassian?No. The app declares no external endpoints and makes no external network calls. There is nothing to allow-list.
Are there sub-processors?None. No third party receives any data, because no data is sent anywhere.
Does the app hold privileges of its own?No. Every call runs as the administrator using it. There is no service account and no mode that escalates.
Can it reach data the operator could not?No. Jira applies its normal per-project authorization to every call.
Is there a background process?One: a weekly personal-data report Atlassian requires of apps storing personal data. It reads only the app’s own storage.
Runs on Atlassian?The app is eligible for Atlassian’s Runs on Atlassian programme, as a consequence of the answers above.

Data residency

Data residency questions are usually about where a vendor’s servers are. Admin Ops has none. It reads and writes your Jira through Atlassian’s own APIs, from inside Atlassian’s infrastructure, and stores its small record in Forge storage in the same place. The data never moves, so there is no transfer to assess and no region to choose: your Atlassian site’s data residency configuration governs it, exactly as it governs the rest of Jira.

What is stored

The app records account IDs rather than people. The exceptions are declared, not discovered.

DataPersonal data?Retention
Audit log: job type, actor and target account IDs, object IDs, counts, timestamps, outcomesAccount IDs are pseudonymous identifiers50 most recent runs
Object names in the audit log (filters, dashboards, schemes, fields, groups, projects, screens)Possibly. Names are written by your users, so a filter called “Sick leave – A. Meier” is stored as that string50 most recent runs
E-mail addresses of a customer import, in that run’s entryYes, deliberately: a rejected row has no account to point at50 most recent runs
Access policy: account ID and role of each named administratorYes. Nothing is stored while access is unrestricted (the default)Until you change it
Pinned bulk preview: a JQL string and the issue IDs it resolved toNoSingle use, 10 minutes

No issue content, secrets or tokens are stored at any point, and no personal data is written to diagnostic logs. Uninstalling the app deletes all of it.

Permissions (Forge scopes)

The app requests fifteen scopes. Twelve are granular; three are broad, because Jira offers nothing narrower for those endpoints. Each is listed with the reason.

ScopeWhy it is needed
read:jira-workSearch filters, dashboards and issues by JQL; read filter sharing and custom field usage.
write:jira-workReassign filter and dashboard ownership; run previewed and confirmed bulk issue operations; delete or unshare filters.
read:jira-userResolve and validate users in the owner and target pickers.
read:group:jiraList a user’s group memberships and group sizes, and guard against removing the last administrator.
write:group:jiraRemove a departing user from groups. Granular on purpose: no manage scope is requested for this write.
read:permission:jiraVerify on every backend call that the caller holds Administer Jira.
read:permission-scheme:jiraRead permission schemes for the read-only audit and for consolidation previews.
read:board-scope:jira-softwareFind the boards built on a filter, so a board’s filter is never recommended for deletion.
read:project:jiraRequired by that board endpoint, and to name projects in usage reports.
manage:jira-projectbroadEvery screens endpoint requires it, including reading one; also assigning a permission scheme during consolidation.
manage:jira-configurationbroadReading a custom field’s contexts, issue type screen schemes, notification schemes, and moving a field to the trash.
manage:servicedesk-customerbroadJira Service Management exposes organizations and customers only behind this scope.
read:servicedesk-requestList the service desks for the customer and organization reports.
storage:appForge storage for the audit log, the access policy and the short-lived preview set.
report:personal-dataThe weekly report of stored account IDs that Atlassian requires, so closed accounts can be erased.

The broad scopes grant more than the app uses. The mitigation is structural: every call runs as the calling administrator, every request re-verifies Administer Jira, and every change is previewed, confirmed and recorded.

Controls reviewers ask about

ControlImplementation
Authorization on every requestEach backend call re-verifies Administer Jira. Placement on an admin page is not treated as authorization.
Privilege escalationNot possible: writes run as the calling user, never as the app.
Separation of dutiesAn in-app policy assigns auditor, operator or owner to named administrators, enforced on the server. It can only narrow what Jira already permits.
Forged requestsMutations re-derive their targets from Jira at execution time rather than trusting what the browser sent.
Destructive mistakesPreview, confirm, execute, with a typed word and a named object list for anything irreversible.
Acting on stale dataBulk issue runs act on a pinned, single-use, ten-minute set resolved by the preview.
Incomplete informationWhere a partial answer would be dangerous, the operation is blocked rather than attempted.
Licence enforcementChecked on the server for every operation that writes. A build test fails if a writing resolver skips it.
Self-lockoutYou cannot remove yourself from the Jira administrators group or save a policy that removes your own ownership.

What we do not claim

  • No certification is claimed here. If your process requires a specific attestation, ask us and you will get a straight answer about what does and does not exist.
  • The app is not a compliance archive. Its log keeps the 50 most recent runs. For long-term evidence, use Jira’s own audit log, where every change the app makes also appears.
  • The app is not an approval workflow. There is no second-person sign-off inside it.

Reporting a security concern

Raise a request in our support portal and say in the subject that it is a security report, or e-mail support@vi2va.de. Please never include API tokens, passwords or other secrets; we will never ask for them.

Start by seeing what your instance is carrying around

The read-only audits work even without a licence. Nothing changes until you decide it should.