Community
Questions Library
Docs
Blog
Events
Swag
Github
Slack
JupiterOne
Discussions
Release Notes
Contact Us
Jira - AskJ1 Community
<main> <article class="userContent"> <h2 data-id="jira-jupiterone-integration-benefits">Jira + JupiterOne Integration Benefits</h2> <ul><li>Visualize Jira projects, users, and issues in the JupiterOne graph.</li> <li>Map Jira users to employees in your JupiterOne account.</li> <li><p>Monitor Jira issues configured as vulnerabilities or findings within the<br> alerts app.</p></li> <li><p>Monitor changes to Jira users, projects, and issues using JupiterOne alerts.</p></li> <li><p>Create Jira issues from JupiterOne alerts and monitor progress against those<br> issues in JupiterOne.</p></li> <li><p>Create Jira issues from JupiterOne compliance controls that need attention.</p></li> </ul><h2 data-id="how-it-works">How it Works</h2> <ul><li><p>JupiterOne periodically fetches Jira projects, users, and issues* to update<br> the graph.</p></li> <li><p>Write JupiterOne queries to review and monitor updates to the graph.</p></li> <li>Configure alerts to take action when the JupiterOne graph changes.</li> <li>Jira issue entities will have additional <code class="code codeInline" spellcheck="false" tabindex="0">_class</code> values when custom types are<br> used in Jira: <ul><li><code class="code codeInline" spellcheck="false" tabindex="0">Change</code> (also added when the issue key starts with <code class="code codeInline" spellcheck="false" tabindex="0">PRODCM</code>)</li> <li><code class="code codeInline" spellcheck="false" tabindex="0">Finding</code></li> <li><code class="code codeInline" spellcheck="false" tabindex="0">Incident</code></li> <li><code class="code codeInline" spellcheck="false" tabindex="0">Risk</code></li> <li><code class="code codeInline" spellcheck="false" tabindex="0">Vulnerability</code></li> </ul></li> </ul><p>(*) The integration performs a rolling ingestion of up to 2000 of the most<br> recently created or updated issues <strong>per project</strong> since the last integration<br> execution in Jupiterone. If it is the integration's first run, all issues in<br> each project are fair game for ingestion (up to 2000).</p> <p>(*) Already ingested issues that are not modified will remain in the graph when<br> the integration runs again. Issues are only deleted along with other entities<br> associated with the integration instance when the integration instance is<br> deleted.</p> <p>(*) Note that for projects with > 2000 issues, the first run of the integration<br> will not ingest all issues. Nor will they get ingested in subsequent integration<br> runs. If you have a need for all Jira issues to be ingested for a large project,<br> please contact Support.</p> <p>(*) This integration logs a warning anytime the per-project issue cap is<br> encountered. It is technically possible to encounter this warning on an<br> integration execution other than the first, but it is quite rare (over 2000<br> issues would have had to have been updated since the last integration<br> execution). If this happens, it is likely your <code class="code codeInline" spellcheck="false" tabindex="0">Polling Interval</code> in Jupiterone<br> is too large. We recommend setting it to a smaller value. If you require<br> re-ingestion of missed issue updates as a result of hitting our limits, please<br> contact Support.</p> <h2 data-id="requirements">Requirements</h2> <ul><li><p>JupiterOne requires the hostname for your Jira organization. JupiterOne also<br> requires the username/email and an API key for a user having the correct<br> permissions granted.</p></li> <li><p>The integration supports Jira Cloud with Jira API v3 and Jira Data Center with<br> Jira API v2. Other setups may work.</p></li> <li><p>You must have permission in JupiterOne to install new integrations.</p></li> </ul><h2 data-id="support">Support</h2> <p>If you need help with this integration, please contact<br><a rel="nofollow" href="https://support.jupiterone.io">JupiterOne Support</a>.</p> <h2 data-id="integration-walkthrough">Integration Walkthrough</h2> <p>Customers authorize access to JupiterOne by creating a Jira user and providing<br> the username and password (or <a rel="nofollow" href="https://confluence.atlassian.com/cloud/api-tokens-938839638.html">API token</a> when passwords require MFA) to<br> JupiterOne for HTTP Basic Auth as described in the <a rel="nofollow" href="https://developer.atlassian.com/cloud/jira/platform/security-for-other-integrations/">Jira Security for Other<br> Integrations</a> documentation.</p> <h3 data-id="in-jira">In Jira</h3> <h4 data-id="configure-an-user-for-api-access">Configure an User for API Access</h4> <p><strong>Option 1 - Create a New User</strong></p> <ol><li>Create a new service account for JupiterOne use or use an existing account.</li> <li>Login to Jira and navigate to <em>User Management</em>.</li> <li>Send an invite to the service account.</li> </ol><p><strong>Option 2 - Leverage an Existing User</strong></p> <p>Before you use an existing user, you should verify a couple of things.</p> <ul><li><p>Make sure the appropriate permissions are configured/can be added to the<br> account (see the <em>Permissions</em> section below).</p></li> <li><p>Make sure you have the ability to login to the user's Jira account.</p></li> </ul><h4 data-id="permissions">Permissions</h4> <ul><li><p>Authorize the user to read groups and users by granting the <a rel="nofollow" href="https://confluence.atlassian.com/adminjiraserver/managing-global-permissions-938847142.html">"Browse Users"<br> global permission</a>. This allows JupiterOne to provide visibility into Jira<br> access.</p></li> <li><p>Authorize browse access to projects configured in JupiterOne. Use <a rel="nofollow" href="https://support.atlassian.com/jira-core-cloud/docs/how-do-jira-permissions-work/">group,<br> project, role, and issue security features of Jira</a> to manage the user's<br> access. Note that restricting to read-only access will require explicit<br> removal of write permissions. Please see the Jira article on <a rel="nofollow" href="https://confluence.atlassian.com/jirakb/jira-cloud-how-to-create-a-read-only-user-779160729.html">How to Create a<br> Read Only User</a>.</p></li> <li><p>Authorize "Create Issues" permissions in projects that serve as JupiterOne<br> Alert Rule action targets.</p></li> </ul><h4 data-id="create-an-api-token">Create an API Token</h4> <ol><li>Log in to Jira as the JupiterOne user and follow the Jira guide to <a rel="nofollow" href="https://confluence.atlassian.com/cloud/api-tokens-938839638.html">create an<br> API token</a>.</li> </ol><h3 data-id="in-jupiterone">In JupiterOne</h3> <ol><li>From the top navigation of the J1 Search homepage, select <strong>Integrations</strong>.</li> <li>Scroll to the <strong>Jira</strong> integration tile and click it.</li> <li>Click the <strong>Add Configuration</strong> button and configure the following settings: <ul><li>Enter the <strong>Account Name</strong> by which you'd like to identify this Jira<br> account in JupiterOne. Ingested entities will have this value stored in<br><code class="code codeInline" spellcheck="false" tabindex="0">tag.AccountName</code> when <strong>Tag with Account Name</strong> is checked.</li> <li>Enter a <strong>Description</strong> that will further assist your team when identifying<br> the integration instance.</li> <li>Select a <strong>Polling Interval</strong> that you feel is sufficient for your<br> monitoring needs. You may leave this as <code class="code codeInline" spellcheck="false" tabindex="0">DISABLED</code> and manually execute the<br> integration.</li> <li>Enter the <strong>Hostname</strong> of your organization.</li> <li>Enter the <strong>User Email</strong> used to authenticate with Jira.</li> <li>Enter the <strong>User Password</strong> associated with the user email, or the <strong>API<br> Key</strong> if the password requires MFA.</li> <li>Enter the <strong>Project Keys</strong> that the integration will retrieve data from.</li> </ul></li> <li>Click <strong>Create Configuration</strong> once all values are provided.</li> </ol><h2 data-id="how-to-uninstall">How to Uninstall</h2> <ol><li>From the top navigation of the J1 Search homepage, select <strong>Integrations</strong>.</li> <li>Scroll to the <strong>Jira</strong> integration tile and click it.</li> <li>Identify and click the <strong>integration to delete</strong>.</li> <li>Click the <strong>trash can</strong> icon.</li> <li>Click the <strong>Remove</strong> button to delete the integration.</li> </ol><h2 data-id="jira-cloud-vs-jira-on-prem">Jira Cloud vs Jira On-Prem</h2> <p>This integration supports both Jira Cloud and Jira on-prem deployments and will<br> automatically detect which is being ingested. It is important to note that there<br> are some minor differences in the APIs for cloud and on-prem. For this reason,<br> we recommended that you recreate your integration configuration in the event of<br> an on-prem -> cloud migration or vice versa.</p> <h2 data-id="data-model">Data Model</h2> <h3 data-id="entities">Entities</h3> <p>The following entities are created:</p> <table><thead><tr><th>Resources</th> <th>Entity <code class="code codeInline" spellcheck="false" tabindex="0">_type</code></th> <th>Entity <code class="code codeInline" spellcheck="false" tabindex="0">_class</code></th> </tr></thead><tbody><tr><td>Account</td> <td><code class="code codeInline" spellcheck="false" tabindex="0">jira_account</code></td> <td><code class="code codeInline" spellcheck="false" tabindex="0">Account</code></td> </tr><tr><td>Jira Issue</td> <td><code class="code codeInline" spellcheck="false" tabindex="0">jira_issue</code></td> <td><code class="code codeInline" spellcheck="false" tabindex="0">Record</code>, <code class="code codeInline" spellcheck="false" tabindex="0">Issue</code></td> </tr><tr><td>Jira Project</td> <td><code class="code codeInline" spellcheck="false" tabindex="0">jira_project</code></td> <td><code class="code codeInline" spellcheck="false" tabindex="0">Project</code></td> </tr><tr><td>Jira User</td> <td><code class="code codeInline" spellcheck="false" tabindex="0">jira_user</code></td> <td><code class="code codeInline" spellcheck="false" tabindex="0">User</code></td> </tr></tbody></table><h3 data-id="relationships">Relationships</h3> <p>The following relationships are created:</p> <table><thead><tr><th>Source Entity <code class="code codeInline" spellcheck="false" tabindex="0">_type</code></th> <th>Relationship <code class="code codeInline" spellcheck="false" tabindex="0">_class</code></th> <th>Target Entity <code class="code codeInline" spellcheck="false" tabindex="0">_type</code></th> </tr></thead><tbody><tr><td><code class="code codeInline" spellcheck="false" tabindex="0">jira_account</code></td> <td><strong>HAS</strong></td> <td><code class="code codeInline" spellcheck="false" tabindex="0">jira_project</code></td> </tr><tr><td><code class="code codeInline" spellcheck="false" tabindex="0">jira_account</code></td> <td><strong>HAS</strong></td> <td><code class="code codeInline" spellcheck="false" tabindex="0">jira_user</code></td> </tr><tr><td><code class="code codeInline" spellcheck="false" tabindex="0">jira_project</code></td> <td><strong>HAS</strong></td> <td><code class="code codeInline" spellcheck="false" tabindex="0">jira_issue</code></td> </tr><tr><td><code class="code codeInline" spellcheck="false" tabindex="0">jira_user</code></td> <td><strong>CREATED</strong></td> <td><code class="code codeInline" spellcheck="false" tabindex="0">jira_issue</code></td> </tr><tr><td><code class="code codeInline" spellcheck="false" tabindex="0">jira_user</code></td> <td><strong>REPORTED</strong></td> <td><code class="code codeInline" spellcheck="false" tabindex="0">jira_issue</code></td> </tr></tbody></table> </article> </main>