← All case studies

Case Study

Local Python Tool for Atlassian Cloud Security Assessments

A Python and Flask desktop tool I built end-to-end so non-technical assessors can run automated security checks across Jira, Confluence, and the Atlassian organization with a double-click.

  • Python
  • Atlassian Cloud
  • Security
  • Automation
  • Full assessment in 10–30 seconds Time to run
  • Non-technical assessors run it with a double-click Accessibility
  • PDF + JSON exports with per-check evidence Auditability

Problem

  • Assessors repeated the same API queries by hand for every engagement.
  • Findings landed in ad-hoc spreadsheets, so evidence quality varied between reviews.
  • Non-technical security staff couldn't run the checks without an engineer in the loop.

What I built

  • Six checks shipped — Jira admin count, "Any Logged In User" permission breach, Jira single-user access, Confluence space admin counts, Confluence single-user access, and org-wide inactive users via the Admin API.
  • Inactive-user check supports configurable thresholds in days, weeks, months, or years.
  • Full PDF or selected-checks PDF export, plus JSON export including evidence.

Stack

  • Python 3.8+
  • Flask (local web UI)
  • Atlassian Cloud REST APIs + Admin APIs
  • Cryptography (Fernet) for credential storage
  • ReportLab for PDF generation

My role

  • Sole engineer — backend, frontend, packaging, and check authoring
  • Architected a pluggable checks engine with a shared `BaseCheck` abstraction
  • Built six security checks across Jira, Confluence, and the Atlassian Admin API
  • Designed the local Flask web UI and one-click launchers for Windows / macOS / Linux

Security

  • Runs entirely on localhost — no external servers, no telemetry
  • Credentials encrypted at rest with Fernet (`~/.asat/`, chmod 600)
  • HTTPS for all Atlassian API calls

Client details withheld under NDA. Built end-to-end while employed at a former Atlassian consultancy; IP belongs to that company.

Want something like this for your team?

Book a call →