Security Policy for Flow Metrics Charts in Jira Cloud
Version: 1.0
Last Updated: January 2026
Use your browser's on-page find, or scroll, to navigate the sections below: Overview, Security Architecture, Data Protection and Privacy, Authentication and Authorization, Secure Coding Practices, API Security, Storage and Caching Security, Dependency Management, Monitoring and Logging, Incident Response, Compliance and Standards, Vulnerability Disclosure, Security Testing, and the Security Controls Checklist.
Overview
Purpose
This security policy defines the security controls, practices, and standards for the Flow Metrics Charts for Jira Cloud application. It ensures the protection of customer data, maintains system integrity, and complies with industry security standards.
Scope
This policy applies to:
All components of the Flow Metrics Charts application
Development, testing, staging, and production environments
All personnel with access to the application codebase or infrastructure
Third-party dependencies and integrations
Security Principles
Our security approach is built on these core principles:
Defense in Depth: Multiple layers of security controls
Least Privilege: Minimal permissions required for operation
Secure by Default: Security built into design, not added later
Privacy by Design: Data protection integrated from the start
Zero Trust: Verify explicitly, use least privilege, assume breach
Transparency: Clear communication about security practices
Security Architecture
Platform Foundation
Atlassian Forge Platform
The application runs on Atlassian Forge, a secure, serverless platform that provides:
Isolated Execution Environment: Each app runs in isolation from others
Managed Infrastructure: Atlassian handles infrastructure security, patching, and updates
Automatic Scaling: Built-in protection against resource exhaustion
Runtime Security: Forge runtime provides sandboxed execution
Built-in Rate Limiting: Protection against abuse and DoS attacks
Managed Authentication: Forge handles OAuth authentication securely
Security Boundaries
Client-Side (Browser)
Forge UI Kit enforces XSS prevention
Content Security Policy (CSP) restricts resource loading
No sensitive data stored in browser storage
Forge Runtime
Isolated execution environment per app instance
Memory and CPU limits prevent resource exhaustion
25-second timeout limit per function execution
No direct network access except via Forge APIs
Storage Layer
Forge Storage API: App-scoped, encrypted at rest
Forge SQL: Isolated database per app, parameterized queries only
No direct database access from frontend
External APIs
Only Jira internal APIs accessed via
requestJira()No external API calls or egress traffic
All requests authenticated via Forge's OAuth mechanism
Data Protection and Privacy
Data Classification
Data Type | Sensitivity | Storage | Retention | Encryption |
|---|---|---|---|---|
Issue metadata | Medium | Forge Storage, SQL | Cache: 5 min, SQL: Until deleted | At rest: Yes, In transit: TLS 1.2+ |
Aggregated metrics | Low-Medium | Forge Storage | 24 hours | At rest: Yes, In transit: TLS 1.2+ |
User preferences | Low | Forge Storage | Until user changes | At rest: Yes, In transit: TLS 1.2+ |
Configuration data | Low | Forge Storage | Indefinite | At rest: Yes, In transit: TLS 1.2+ |
Temporary processing data | Medium | Memory only | Function execution only | In transit: TLS 1.2+ |
Data Minimization
Principle: We only collect and process data necessary for application functionality.
Implementation:
Only request issue fields required for metrics calculation
No collection of personally identifiable information (PII) beyond what Jira already exposes
No logging of sensitive user data
Aggregated metrics only (no individual user tracking)
Cache eviction after 5 minutes for issue data
Privacy Considerations
User Consent: Users consent via Jira app installation process
Data Access: Limited to users with existing Jira permissions
Data Portability: Users can export data via CSV export feature
Right to Deletion: Uninstalling app removes all data
Transparency: This security policy provides transparency on data handling
GDPR Compliance
For European customers:
Lawful Basis: Legitimate interest (providing analytics service)
Data Subject Rights: Supported via Jira's existing data subject access mechanisms
Data Protection Officer: Contact via Atlassian Marketplace support
Data Processing Agreement: Covered under Atlassian's DPA
Cross-Border Transfers: Data processed within Atlassian's infrastructure per their data residency policies
Authentication and Authorization
Authentication Model
Forge Managed Authentication
The application does not implement custom authentication. All authentication is managed by Atlassian Forge:
User Authentication: Users authenticate to Jira Cloud (Atlassian Identity)
App Authentication: Forge runtime authenticates app requests via OAuth 2.0
API Authentication: All Jira API calls use Forge-managed authentication tokens
Authorization Model
Permission-Based Access Control
The application respects Jira's native permission model:
Issue Visibility: Users can only see issues they have permission to view in Jira
Project Access: Users must have project access to view project metrics
Board Access: Users must have board access to view board-scoped metrics
Configuration Access: Only project admins can modify workflow configurations
Scopes and Permissions
Scope Justification:
read:jira-work: Required to fetch issue data for metrics calculation
write:jira-work: Required ONLY for custom JQL functions (SQL sync), NOT for modifying issues
storage:app: Required for caching and configuration storage
read:jira-user: Required for displaying assignee names in issue lists
read:servicedesk-request: Required for JSM project support
Session Management
Session Handling: Managed by Forge platform
Session Timeout: Follows Jira Cloud session timeout (configurable by org admin)
Token Refresh: Automatic token refresh handled by Forge
No Custom Sessions: Application does not implement custom session management
Secure Coding Practices
Input Validation and Sanitization
All inputs are validated before processing, including project keys (regex-validated), JQL query values (escaped), date ranges (validated for format and ordering), and numeric inputs (bounded). Output is encoded by the Forge UI Kit / React layer.
Injection Prevention
JQL Injection Prevention: JQL values are escaped and parameterized; user input is never concatenated directly into a JQL string.
SQL Injection Prevention: All SQL uses parameterized, prepared statements with bound parameters; no string concatenation.
Path Traversal Prevention: All Jira API calls use Forge's
routetemplate tag, which handles encoding.
Cross-Site Scripting (XSS) Prevention
Forge UI Kit automatically escapes all user-supplied content.
React's JSX escapes values by default.
No use of
dangerouslySetInnerHTML.Content Security Policy enforced by Forge.
Error Handling
Errors return generic messages to the client; sensitive data and stack traces are never returned to the client or logged. HTTP status codes are handled explicitly (for example 410 and 404).
Rate Limiting and Abuse Prevention
The Forge platform enforces a 25-second function timeout, per-function memory limits, and built-in API rate limiting. The application adds configuration limits (maximum issues per request, page size, response-size caps) and exponential backoff on HTTP 429 responses.
API Security
Jira API Integration
Secure API access relies on Forge-managed authentication, respecting user permissions via api.asUser(), exponential backoff for rate limits, and graceful HTTP error handling without data leakage.
API Call Patterns
API routes are constructed with the Forge route template tag (which provides automatic URL encoding, path-traversal prevention, and injection prevention). User context (api.asUser()) is used for data retrieval; app context (api.asApp()) is reserved for non-sensitive operations only. Retry logic uses exponential backoff and does not retry authorization/timeout errors.
No External API Calls
The application makes NO external API calls outside Jira. The manifest.yml declares empty external.fetch.backend and external.fetch.client arrays, so no external URLs are permitted.
Storage and Caching Security
Storage Types
Forge Storage API is an app-scoped key-value store, encrypted at rest by Atlassian, used for configuration, cached metrics, and user preferences. Forge SQL Storage is an app-scoped MySQL database, encrypted at rest, used for issue synchronization and historical data, accessed exclusively through parameterized queries.
Caching Strategy
Caching improves performance while maintaining security. Issue cache and changelog cache use a 5-minute TTL; metrics cache uses a 24-hour TTL. Cache keys are base64-encoded and length-limited to prevent key injection, and include the auth mode for isolation. Caches are invalidated automatically by TTL, by manual refresh, and on app upgrade.
Storage Security Best Practices
Least retention: store only necessary data; use the shortest practical TTL.
Key sanitization: sanitize all storage keys to prevent key-injection attacks.
Data isolation: separate caches by authentication mode and include project/board identifiers to avoid cross-tenant leakage.
Dependency Management
Dependency Security Policy
The app uses only trusted, regularly updated dependencies with no known vulnerabilities — six production dependencies, all from Atlassian official SDKs or trusted sources (such as React).
Dependency Security Controls
Minimal dependencies: only 6 production dependencies; regular review of the dependency tree.
Auditing:
npm auditis run; vulnerabilities are remediated on a severity-based schedule (critical within 24 hours, high within 1 week, medium within 30 days, low in the next release cycle).Version pinning: a committed lock file (
package-lock.json) is required; lock-file changes are reviewed in PRs.
Prohibited Dependencies
Never include dependencies with known critical vulnerabilities, unmaintained packages (no updates in 2+ years), packages from untrusted sources, packages with malware or suspicious activity, or packages with excessive transitive dependencies.
Monitoring and Logging
Logging Policy
Logging provides visibility for debugging, detects security incidents and anomalies, supports audit requirements, and protects sensitive data in logs.
What We Log and Don't Log
The app logs operational events and errors with context (status, message, endpoint). It never logs authentication tokens or API keys, user email addresses or account IDs (except where strictly necessary for debugging), passwords or secrets, full request/response payloads containing user data, stack traces sent to the client, or other PII.
Log Access and Retention
Logs are accessible via the forge logs command and require an authenticated Forge CLI session limited to app developers. The Forge platform manages retention (typically 7–30 days); the application performs no long-term log archival.
Security Monitoring
Monitored events include authentication failures, unusual activity (excessive API call rates, large data retrieval, repeated errors, timeouts), and security events (input-validation failures, blocked JQL injection attempts, invalid project-key access attempts). Alerting is a manual log-review process.
Incident Response
Incident Response Plan
The objective is to quickly detect, respond to, and recover from security incidents.
Incident Classification
Severity | Definition | Response Time |
|---|---|---|
Critical | Active exploitation, data breach, service outage | Immediate (< 1 hour) |
High | Vulnerability with high risk, no active exploitation | < 4 hours |
Medium | Vulnerability with medium risk, mitigations in place | < 24 hours |
Low | Minor issue, low risk, no immediate threat | < 1 week |
Incident Response Phases
The phases are: detection (via vulnerability reports, Forge alerts, log monitoring, user reports, automated scans); triage and assessment (classify severity, determine scope and impact); containment (disable the app immediately for critical incidents, apply temporary mitigations for high); eradication (identify root cause, develop and test a fix, security-review it, deploy); recovery (deploy to production, verify, re-enable, monitor); and a post-incident review within one week.
Communication Plan
Internally, the development team is notified immediately and High/Critical incidents are escalated to the security lead. Externally, Critical/High incidents are communicated to affected customers via the Atlassian Marketplace, Medium incidents via release notes, and Low incidents via the changelog. Vulnerabilities are disclosed after a fix is deployed.
Compliance and Standards
Compliance Frameworks
The application is designed to support GDPR (data minimization, purpose limitation, storage limitation, data-subject rights, privacy by design), SOC 2, and ISO 27001 — the latter two largely inherited via Atlassian's certifications.
Inherited Compliance
The application inherits infrastructure security, encryption at rest and in transit, physical data-center security, business continuity and disaster recovery, security monitoring, penetration testing, and third-party audits (SOC 2, ISO 27001) from the Atlassian Forge platform. Reference: Atlassian Trust & Security.
Data Residency
Data is processed within Atlassian's infrastructure, follows Atlassian's data-residency policies, and is not transferred across borders outside Atlassian's control.
Vulnerability Disclosure
Responsible Disclosure Policy
We encourage responsible disclosure of security vulnerabilities. Please report vulnerabilities by emailing support@divim.io with the subject "Security Vulnerability Report - Flow Metrics Charts".
What to Include
Please provide a description of the vulnerability, steps to reproduce, a proof of concept (if available), an impact assessment, suggested remediation (if any), and your contact information. Please do not run exploits against production systems, include data from customer installations, or disclose publicly before a fix is available.
Our Commitment
When you report a vulnerability, we commit to acknowledgment within 5 business days, regular updates during investigation, and remediation on a severity-based timeline (critical within 7 days, high within 30 days, medium within 60 days, low within 90 days or the next release). We provide public credit to reporters who wish it; we do not currently operate a paid bug-bounty program.
Out of Scope
The following are not considered vulnerabilities: denial of service (Forge enforces a 25-second timeout), social-engineering attacks, physical attacks, vulnerabilities in Atlassian's infrastructure, issues requiring a compromised Jira administrator account, issues in third-party dependencies (report to the dependency maintainer), and theoretical vulnerabilities without a realistic attack scenario.
Security Testing
Testing Strategy
The objective is to ensure security controls are effective through comprehensive testing: unit security tests (JQL injection prevention, input validation, cache-key sanitization, auth-mode isolation), integration security tests (HTTP error handling, parameterized SQL), BDD security scenarios, and periodic manual testing (injection attempts, path traversal, authorization bypass, rate limiting, error-message validation).
Security Test Coverage
Required coverage includes input validation at all entry points, JQL and SQL injection prevention, path-traversal prevention, authentication/authorization checks, error handling without data leakage, cache-key sanitization, and rate-limiting behavior. Security tests run automatically in the CI/CD pipeline on every commit, alongside dependency vulnerability scanning.
Penetration Testing
External penetration testing is not currently performed; the app relies on Atlassian's security testing of the Forge platform and is open to coordinated security research (see Vulnerability Disclosure). Professional penetration testing and a bug-bounty program are future considerations if the app scales significantly.
Appendix: Security Controls Checklist
This appendix summarizes the implemented controls across authentication and authorization, input validation, output encoding, injection prevention, data protection, API security, storage security, dependency security, monitoring and logging, incident response, testing, and compliance. Each control area above documents the specific safeguards in place.
Document History
Version | Date | Changes |
|---|---|---|
1.0 | January 2026 | Initial security policy document |
End of Security Policy Document