# Jira Workflow

<figure><img src="https://762006384-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MJXOXEifAmpyvNVL1to%2Fuploads%2FP6in8Pz0FT0AS6fxMb31%2FJira%20Workflow.png?alt=media&#x26;token=a03b004a-313d-499d-9063-b86a73e1ac66" alt=""><figcaption></figcaption></figure>

## About

The Keeper Security Integration for Jira is an Atlassian Forge application that enables seamless management of Keeper vault operations directly from Jira issues. This integration bridges the gap between project management workflows and secrets management, allowing teams to request, approve, and execute credential operations without leaving their Jira environment.

The Jira integration also provides management over Endpoint Privilege Manager (KEPM) approvals. All actions are logged as Jira comments with timestamps and user information.

### Record Management Features

| Feature                | Description                                                           |
| ---------------------- | --------------------------------------------------------------------- |
| **Create New Records** | Add credentials, secure notes, payment cards, and custom record types |
| **Update Records**     | Modify existing vault records with new information                    |
| **Share Records**      | Manage folder-level access for teams and users                        |
| **Manage Permissions** | Control granular access rights for records in shared folders          |
| **Share Folders**      | Manage folder-level access for teams and users                        |
| **Manage Permissions** | Control granular access rights for records in shared folders          |

### **Endpoint Privilege Management Features**

| Feature                           | Description                                                      |
| --------------------------------- | ---------------------------------------------------------------- |
| **Real-Time Approval Workflows**  | Review and approve privilege elevation requests from endpoints   |
| **Live Request Monitoring**       | View pending requests with countdown timers and detailed context |
| **One-Click Actions**             | Approve or deny requests instantly with full audit trail         |
| **Comprehensive Request Details** | User identity, application, justification, and expiration status |

## Prerequisites

To maintain Keeper's strict zero knowledge encryption model, the Jira integration requires that the customer hosts the Commander Service Mode container on a VM and hosts the customized Forge app in their Jira Cloud.

| Requirement                             | Description                                                                                                                                                                                                                                                                                                                                                                              |
| --------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Keeper Commander Service Mode**       | A service account running Commander Service Mode with REST API access through **Ngrok** or **Cloudflare Tunnel** for routing requests.                                                                                                                                                                                                                                                   |
| **Jira Cloud Administrator Access**     | <p>Needs <strong>Jira Administrator</strong> or <strong>Manage apps</strong> permission to install and configure the Forge app.<br><br>Must access <strong>Jira Settings → Apps</strong> to set up and manage app connections.</p>                                                                                                                                                       |
| **Jira End-User Access**                | <p>Requires <strong>Edit Issues</strong> and <strong>Add Comments</strong> permissions to view and use the Keeper panel<br><br>Works across all Jira Cloud project types; no extra setup needed. See <a href="https://support.atlassian.com/jira-cloud-administration/docs/manage-project-permissions/">Jira Project Permissions</a> for details</p>                                     |
| **Keeper Standard Features**            | <p>Requires an active <a href="https://keepersecurity.com">Keeper Business, Enterprise, or PAM</a> subscription with vault access.</p><p><br>Service account with permissions to create, update, and share records.</p>                                                                                                                                                                  |
| **Endpoint Privilege Manager Features** | <ul><li>Active KeeperPAM subscription</li><li>KEPM module enabled and configured in your Keeper environment</li><li>KEPM deployments, agents, and policies configured</li><li>For more information, see <a href="https://github.com/Keeper-Security/gitbook-secrets-manager/blob/master/endpoint-privilege-manager/overview/README.md">Endpoint Privilege Manager Overview</a></li></ul> |

## **Setup and Configuration**

In order to communicate between the Jira service and Keeper, the customer is responsible for hosting a Keeper Commander Service Mode instance with an Ngrok or Cloudflare Tunnel. This can be accomplished many ways depending on your IT requirements. Commander Service Mode can run as a foreground service on any machine, or it can be run in a Docker container locally or remotely on a server.

### **Step 1.** Commander Setup

Follow the setup steps documented in the [Commander Service Mode REST API](https://docs.keeper.io/en/keeperpam/commander-cli/service-mode-rest-api) section to install Keeper Commander and start the service. You need to follow the instructions using either Ngrok or Cloudflare tunnels to properly route requests from the Forge app to your Commander instance. Commander Service Mode can run directly in the CLI, in the background on a local machine, on a remote server as a service, or under a Docker container. Using Docker is the recommended method.

**Note the following Important Items:**

1\) The Request Queue System (API v2) must be enabled, e.g. `-q=y`

2\) For Vault Management features, make sure the following commands are in the list:

{% code overflow="wrap" %}

```
record-add,list,ls,get,record-type-info,record-update,share-record,share-folder,rti,record-permission,service-status
```

{% endcode %}

3\) For Vault + KEPM features, make sure the following commands are in the list:

{% code overflow="wrap" %}

```
record-add,list,ls,get,record-type-info,record-update,share-record,share-folder,rti,record-permission,epm,service-status
```

{% endcode %}

4\) For Ngrok Tunneling, ensure the following parameters are included:

```
-ng <ngrok-auth-token> -cd <custom-domain>
```

5\) For Cloudflare Tunneling, ensure the following parameters are included:

```
-cf <cloudflare-tunnel-token> -cfd <cloudflare-custom-domain>
```

After service creation, the API key will be displayed in the console output. Make sure to copy and store it securely. If you are using Docker, you can pull the API key from the logs with this command:

```
docker compose logs | grep -i "generated api key"
```

When the Commander service is up and running, you should be able to submit a curl request to the endpoint. For example:

```bash
curl -X POST 'https://mytunnel.company.com:8080/api/v2/executecommand-async' \
--header 'Content-Type: application/json' \
    --header 'api-key: <your-api-key>' \
    --data '{"command": "ls"}'
```

If the tunnel is running and the API key is correct, you should get a response like this:

```json
{
    "success": true,
    "request_id": "550e8400-e29b-41d4-a716-446655440000",
    "status": "queued",
    "message": "Request queued successfully..."
}
```

Now that the service is up and running, move to the Jira configuration steps.

***

### Step 2. Install the Keeper Forge App <a href="#step-1-install-the-module" id="step-1-install-the-module"></a>

Before configuring the integration, you must install the Keeper Forge app in your Jira Cloud instance.

See [Forge App Installation Guide](https://docs.keeper.io/en/keeperpam/secrets-manager/integrations/jira-workflow/forge-app-installation) for detailed instructions.

### Step 3. Jira Configuration <a href="#step-1-install-the-module" id="step-1-install-the-module"></a>

Configure the Integration in your Atlassian Jira instance as the Administrator.

* In Jira: Go to **Apps → Keeper**.
* Enter **API URL** including the /api/v2 path and **API Key**.
* Example URLs:
  * **Ngrok:** `https://your-subdomain.ngrok.io/api/v2`
  * **Cloudflare:** `https://your-subdomain.trycloudflare.com/api/v2`
* **Test Connection**
  * Click **Test Connection** → verify success.
* **Save Settings**

<figure><img src="https://762006384-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MJXOXEifAmpyvNVL1to%2Fuploads%2FQ5GuPYOGVejFAg2z9oBH%2FScreenshot%202026-01-19%20at%208.52.31%E2%80%AFAM.png?alt=media&#x26;token=29db2d59-b3d4-445f-85bd-02d9d2fb03e7" alt=""><figcaption></figcaption></figure>

Jira Admin configuration complete.

***

### Step 4. Endpoint Privilege Manager Webhook

To manage Keeper EPM approvals and generate tickets in Jira, a webhook notification is sent from Keeper to the Jira platform. The webhook URL is provided on the Keeper Jira integration screen. This webhook must be activated in the Keeper Admin Console following the steps below.

* Locate the Web Trigger URL from the Jira Forge app.

<figure><img src="https://762006384-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MJXOXEifAmpyvNVL1to%2Fuploads%2Fq3Rw2r9A2xhTeZollfNW%2FScreenshot%202026-01-19%20at%209.02.53%E2%80%AFAM.png?alt=media&#x26;token=07bfce20-bb33-4aee-9d2f-93b7070e2ff0" alt=""><figcaption></figcaption></figure>

* Generate Authentication Token:

<div><figure><img src="https://762006384-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MJXOXEifAmpyvNVL1to%2Fuploads%2FOoPdyETV4wXUbfWFrv4k%2FScreenshot%202026-01-29%20at%2012.05.41%E2%80%AFPM.png?alt=media&#x26;token=da4fcd20-3628-40b5-b223-01e0ae3fab0d" alt=""><figcaption></figcaption></figure> <figure><img src="https://762006384-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MJXOXEifAmpyvNVL1to%2Fuploads%2Fw7Qf4NIjzG9tI4Q2r9BU%2FScreenshot%202026-01-29%20at%2012.05.19%E2%80%AFPM.png?alt=media&#x26;token=2254e73c-f336-4170-9e7a-111c3371b129" alt=""><figcaption></figcaption></figure></div>

* Copy both the URL and the token (token shown only once)
* Login to the **Keeper Admin Console** > **Reporting & Alerts** > **Alerts** and click on "**Add Alert**"
* Set Alert Name to something like "Jira EPM Alerts"
* In Alert Condition, select the below events:
  * **Agent created approval request**
  * **Removed approval request**
  * **Changed approval request status**
* Click on "**Add Recipient**" and then click "**Webhook**"
* Paste the copied URL and Token from above
* Save the recipient and then save the alert

<figure><img src="https://762006384-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MJXOXEifAmpyvNVL1to%2Fuploads%2FHgvR92oiSiRz2mSVvMN9%2FScreenshot%202026-02-07%20at%207.08.52%E2%80%AFPM.png?alt=media&#x26;token=93d5a37d-6747-4691-b291-65f6b78043a9" alt=""><figcaption><p>Keeper Admin Console - Webhook Configuration</p></figcaption></figure>

* Back on the Jira Forge app, Configure which Jira project should receive automatically created tickets from Keeper Security alerts.
* Also select the target project and default issue type. The web trigger URL is automatically generated by Jira Forge and serves as the webhook endpoint for Keeper Security alerts.
* Save the Forge App configuration

<figure><img src="https://762006384-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MJXOXEifAmpyvNVL1to%2Fuploads%2FzMZ2m9fpJGkmoXs2B0zI%2FScreenshot%202026-02-07%20at%207.28.46%E2%80%AFPM.png?alt=media&#x26;token=091a4836-d808-4fb2-a064-50fcc238b271" alt=""><figcaption><p>Keeper Forge App Configuration of EPM Webhooks</p></figcaption></figure>

***

### User Guide for Jira Workflow <a href="#step-2-configure-hiera" id="step-2-configure-hiera"></a>

* **Navigate to your Jira project (e.g., IT Support, Security Operations)**
  * Create a new ticket.
* **Open a Jira Issue Page**
  * On the right side panel, look for **Keeper panel** on the right.
  * The panel will load and display available Keeper actions.
  * Select action: **Request Access to Record / Request Access to Folder / Request Record Permission Change.**
  * Fill in form fields (required fields marked \*).
* **Submit for Approval**
  * First submission: Click **Save Request** to submit for admin approval.
  * Updating existing request: Click **Update Request** to modify your previously saved request.
  * A confirmation message will appear: **"Request submitted successfully"** or **"Request updated successfully"**.

<table><thead><tr><th width="176.109375">Action</th><th width="571.59765625">When to Use</th></tr></thead><tbody><tr><td><a href="https://github.com/Keeper-Security/gitbook-secrets-manager/blob/master/commander-cli/command-reference/sharing-commands/README.md#share-record-command"><strong>Request Access to Record</strong></a></td><td>Grant or revoke access to individual records; use for time-bound access, temporary access, or team sharing.</td></tr><tr><td><a href="https://github.com/Keeper-Security/gitbook-secrets-manager/blob/master/commander-cli/command-reference/sharing-commands/README.md#share-folder-command"><strong>Request Access to Folder</strong></a></td><td>Manage folder-level access and permissions for users or teams; useful for temporary project or contractor access.</td></tr><tr><td><a href="https://github.com/Keeper-Security/gitbook-secrets-manager/blob/master/commander-cli/command-reference/sharing-commands/README.md#record-permission-command"><strong>Request Record Permission Change</strong></a></td><td>Manage granular access to records within shared folders; enforce least-privilege and compliance.</td></tr><tr><td><a href="../../../commander-cli/command-reference/record-commands#record-add-and-record-update-commands"><strong>Create New Secret</strong></a><br><strong>(Admin Only)</strong></td><td>Add new records to the Keeper vault; ideal for onboarding and provisioning new credentials.</td></tr><tr><td><a href="../../../commander-cli/command-reference/record-commands#record-add-and-record-update-commands"><strong>Update Record</strong></a><br><strong>(Admin Only)</strong></td><td>Modify existing record fields such as passwords, usernames, URLs, or custom fields; for credential updates and password rotation.</td></tr><tr><td><a href="https://github.com/Keeper-Security/gitbook-secrets-manager/blob/master/commander-cli/command-reference/endpoint-privilege-manager-commands/README.md#action"><strong>Endpoint Privilege Approval</strong></a><br><strong>(Admin Only)</strong></td><td>Review and approve/deny privilege elevation requests from endpoints in real-time</td></tr></tbody></table>

#### **Feature: Request Access to Record**

**Description:** Request shared access to specific Keeper records

**Capabilities:**

* Grant or revoke record access to users by email
* Transfer record ownership
* Set optional permissions (Allow Sharing, Allow Edit)
* Configure access expiration (specific date/time or duration)
* Apply permissions recursively to all records in a folder

<figure><img src="https://762006384-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MJXOXEifAmpyvNVL1to%2Fuploads%2FyokB73H0NttcbAckeMDn%2FRequest%20Access%20to%20Record.jpg?alt=media&#x26;token=5ba5e7ea-6d4b-4780-a423-0c691c43f9e3" alt=""><figcaption><p>Request Access to Record</p></figcaption></figure>

***

#### **Feature: Request Access to Folder**

**Description**: Request access to Keeper shared folders for users or teams.

**Capabilities:**

* Grant or remove folder access
* Assign to individual users or teams
* Configure folder permissions:
  * Can Manage Records
  * Can Manage Users
  * Can Share Records
  * Can Edit Records
* Set access expiration

<figure><img src="https://762006384-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MJXOXEifAmpyvNVL1to%2Fuploads%2FG3bpOLuXvPx1Wzpkvuwr%2FRequest%20Access%20to%20Folder.jpg?alt=media&#x26;token=03528ce5-fd36-4f49-9841-6122add7f537" alt=""><figcaption><p>Request Access to Folder</p></figcaption></figure>

***

#### **Feature: Create New Secret**

**Description:** Create new secret records directly in Keeper.

**Capabilities:**

* Select from available record types (Login, Bank Account, SSH Key, etc.)
* Fill in type-specific fields dynamically
* Store secrets securely in Keeper vault

{% hint style="info" %}
**Admin-Only:** Available to Jira Administrators and Project Administrators only
{% endhint %}

<figure><img src="https://762006384-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MJXOXEifAmpyvNVL1to%2Fuploads%2FnLAH4w3v6SucYm4a4h1i%2FScreenshot%202026-01-20%20at%205.27.00%E2%80%AFPM.png?alt=media&#x26;token=ab8aaec0-284e-4091-ba9b-924ddb9c8969" alt=""><figcaption><p>Create New Secret - Login type record</p></figcaption></figure>

***

#### **Feature: Update Record**

**Description:** Update existing Keeper records.

{% hint style="info" %}
**Admin-Only:** Available to Jira Administrators and Project Administrators only
{% endhint %}

**Capabilities:**

* Search and select records from the vault
* Modify record fields (title, login, password, URL, notes, etc.)
* Force update option to override warnings

**Note:** You must have "Edit Issues" permission to see and use the Keeper panel.

<figure><img src="https://762006384-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MJXOXEifAmpyvNVL1to%2Fuploads%2FVy4ZGyC4jCS4DMgamWto%2FUpdate%20Record%20-%20Admin%20Only.jpg?alt=media&#x26;token=18fdd2ae-65b8-4bbd-81bd-6352b5e67e5c" alt=""><figcaption><p>Update Record</p></figcaption></figure>

***

#### **Feature: Manage KEPM Approval Requests**

**Description:** Review, approve or deny Keeper Endpoint Privilege Manager (KEPM) requests directly in Jira.

**Capabilities:**

* Review outstanding requests
* Approve elevation or command execution
* Deny elevation or command execution

<figure><img src="https://762006384-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MJXOXEifAmpyvNVL1to%2Fuploads%2FzbFoQifnYmPRH8OcuD18%2FEPM%20Request%20Created%20Ticket%20Action%20Panel%20-%20Admin%20only.jpg?alt=media&#x26;token=3604dd5f-cb29-4a0a-b351-db2a28e02df4" alt=""><figcaption></figcaption></figure>

***

### Troubleshooting <a href="#troubleshooting" id="troubleshooting"></a>

#### Debug Mode <a href="#debug-mode" id="debug-mode"></a>

If the Commander Service Mode REST API is not behaving as expected, enable **debug mode** for detailed logs and troubleshooting. For example:

```ini
keeper service-create -p=9009 -c="list,get,record-add" -rm=foreground -q=y --debug
```

Or (Docker):

{% code overflow="wrap" %}

```
docker run -d -p 9009:9009 keeper-commander service-create -p 9009 -c "list,get,record-add" -rm foreground -q y --debug
```

{% endcode %}

When debug mode is enabled:

* Console or Docker logs show detailed request/response traces
* Useful for identifying configuration or API communication issues
* Should be **disabled in production** to avoid exposing sensitive logs

#### Checking Service Status

1. **Check Service Mode Status via CLI** keeper service-status
2. **Verify API Accessibility and Status**

   * Test API endpoint and check service status:

   ```
   curl -X POST 'http://localhost:8081/api/v2/executecommand-async' \
   --header 'Content-Type: application/json' \
   --header 'api-key: <your-api-key>' \
   --data '{"command": "service-status"}'
   ```

   * Check if server is running and accessible from Jira
   * Verify firewall rules allow access
3. **Restart Service Mode**

**Note**: Tickets will continue to be created using webhook payload data during service outages to ensure no security events are lost. Once service is restored, new tickets will include enriched data from the KEPM approval view command.

#### Troubleshooting Problems <a href="#common-issues" id="common-issues"></a>

<table><thead><tr><th width="197.94140625">Error / Symptom</th><th width="178.16796875">Cause</th><th>Recommended Solution</th></tr></thead><tbody><tr><td><strong>Connection Failed / Timeout</strong></td><td>Service Mode not running or tunnel not reachable</td><td>Verify the Service Mode instance is active and accessible. Ensure the Ngrok or Cloudflare tunnel is live and points to the correct port.</td></tr><tr><td><strong>401 Unauthorized / 403 Forbidden</strong></td><td>Invalid or expired API key</td><td>Retrieve the correct API key from Commander Service Mode logs and update it in the Jira configuration screen. Confirm no spaces or extra characters are included.</td></tr><tr><td><strong>404 Not Found</strong></td><td>Incorrect or incomplete API URL</td><td>404 Not Found | Incorrect or incomplete API URL | Use the complete API v2 URL including the /api/v2 path (e.g., <code>https://xxxxx.ngrok.io/api/v2</code> or <code>https://xxxxx.mycompany.com/api/v2</code>). Ensure the tunnel forwards to the same port used by Service Mode.</td></tr><tr><td><strong>502 Bad Gateway / 503 Service Unavailable</strong></td><td>Service Mode offline or unresponsive</td><td>Restart the Service Mode instance and allow it to fully initialize. Review recent logs for configuration or authentication issues.</td></tr><tr><td><strong>Actions Fail Despite Successful Connection</strong></td><td>Missing commands or insufficient permissions</td><td>Confirm all required commands are enabled in Service Mode. Verify Keeper vault access permissions for the account executing the actions.</td></tr></tbody></table>

{% hint style="info" %}
Feedback or feature requests? Please [open an issue](https://github.com/Keeper-Security/jira-connector-hub/issues).
{% endhint %}
