# Jira Workflow

<figure><img src="https://859776093-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FPL6k1aGsLiFiiJ3Y7zCl%2Fuploads%2FAjElfQTd1l1eVAdwf3cx%2Fimage.png?alt=media&#x26;token=28e3b004-188f-46f4-9449-c740df5c760d" alt=""><figcaption></figcaption></figure>

{% hint style="info" %}
本連携機能は現在パブリックプレビュー版です。フィードバックや機能要望がございましたら、[Issue](https://github.com/Keeper-Security/jira-connector-hub/issues)をご利用ください。
{% endhint %}

## 概要

Keeper Security for Jiraは、Atlassian Forge上で動作するアプリケーションであり、JiraチケットからKeeperボルトの操作を直接管理できるようにします。本連携により、プロジェクト管理ワークフローとシークレット管理を統合し、Jira環境を離れることなく、認証情報のリクエスト、承認、実行を行えます。

また、本Jira連携では、エンドポイント特権マネージャー (KEPM) の承認管理にも対応しています。すべての操作は、タイムスタンプおよび実行ユーザー情報付きでJiraのコメントとして記録されます。

## レコード管理機能

<table><thead><tr><th width="238.94921875">機能</th><th>説明</th></tr></thead><tbody><tr><td>新規レコード作成</td><td>認証情報、セキュアノート、支払いカード、カスタムレコードタイプを追加</td></tr><tr><td>レコード更新</td><td>既存のボルトレコードの情報を更新</td></tr><tr><td>レコード共有</td><td>チームおよびユーザーに対するフォルダ単位のアクセス管理</td></tr><tr><td>権限管理</td><td>共有フォルダ内のレコードに対する詳細なアクセス権を制御</td></tr><tr><td>共有フォルダ管理</td><td>チームおよびユーザーに対するフォルダ単位のアクセス管理</td></tr><tr><td>権限管理</td><td>共有フォルダ内のレコードに対する詳細なアクセス権を制御</td></tr></tbody></table>

## エンドポイント特権管理機能

<table><thead><tr><th width="294.27734375">機能</th><th>説明</th></tr></thead><tbody><tr><td>リアルタイム承認ワークフロー</td><td>エンドポイントからの特権昇格リクエストを確認し、承認または拒否</td></tr><tr><td>リクエストのリアルタイム監視</td><td>保留中のリクエストをカウントダウンタイマーおよび詳細情報とともに表示</td></tr><tr><td>ワンクリック操作</td><td>監査証跡を保持したまま、即時に承認または拒否</td></tr><tr><td>リクエスト詳細情報</td><td>ユーザー情報、アプリケーション、申請理由、有効期限の状態を表示</td></tr></tbody></table>

## 要件

Keeperの厳格なゼロ知識暗号化モデルを維持するため、本Jira連携では、お客様環境のVM上でコマンダーサービスモードのコンテナをホストし、Jira Cloud上でカスタマイズされたForgeアプリをホストする必要があります。

<table><thead><tr><th width="318.1171875">要件</th><th>説明</th></tr></thead><tbody><tr><td>Keeperコマンダーサービスモード</td><td>REST APIアクセスが可能なコマンダーサービスモードを実行するサービスアカウント。リクエストのルーティングには<strong>Ngrok</strong>または<strong>Cloudflare Tunnel</strong>を使用。</td></tr><tr><td>Jira Cloud管理者アクセス</td><td><p>Forgeアプリのインストールおよび設定には、<strong>Jira管理者</strong>または<strong>Manage Apps</strong> (アプリを管理) 権限が必要。</p><p><strong>Jira設定</strong> → <strong>アプリ</strong>から接続設定を実施。</p></td></tr><tr><td>Jiraエンドユーザーアクセス</td><td>Keeperパネルを表示および使用するには、<strong>Edit Issues</strong> (イシュー編集) および<strong>Add Comments</strong> (コメント追加) 権限が必要。すべてのJira Cloudプロジェクトタイプで動作し、追加設定は不要。詳細については<a href="https://support.atlassian.com/jira-cloud-administration/docs/manage-project-permissions/">こちらのAtlassianのウェブサイト</a>をご参照ください。</td></tr><tr><td>Keeper標準機能</td><td><p>ボルトアクセスを含む<a href="https://keepersecurity.com/">Keeperビジネス、エンタープライズ、PAM</a>のいずれかのサブスクリプションが必要。</p><p>レコードの作成、更新、共有が可能なサービスアカウント権限が必要。</p></td></tr><tr><td>エンドポイント特権マネージャー機能</td><td><ul><li>有効なKeeperPAMサブスクリプションが必要。</li><li>Keeper環境でKEPMモジュールが有効化および設定済みであること。</li><li>KEPMのデプロイメント、エージェント、ポリシーが構成済みであること。</li><li>詳細については、<a href="../../endpoint-privilege-manager/overview">エンドポイント特権マネージャーの概要ページ</a>をご参照ください。</li></ul></td></tr></tbody></table>

## セットアップおよび構成

JiraサービスとKeeper間で通信を行うには、お客様側でNgrokまたはCloudflare Tunnelを使用したKeeperコマンダーサービスモードのインスタンスをホストする必要があります。構成方法はIT要件に応じて異なります。

コマンダーサービスモードは、任意のマシン上でフォアグラウンドサービスとして実行することも、ローカルまたはリモートサーバー上でDockerコンテナとして実行することも可能です。

### 手順1. コマンダーのセットアップ

Keeperコマンダーをインストールし、サービスを起動するには、[コマンダーサービスモードREST API](https://docs.keeper.io/jp/keeperpam/commander-cli/service-mode-rest-api)のページに記載のセットアップ手順に従ってください。Forgeアプリからコマンダーインスタンスへリクエストを正しくルーティングするため、NgrokまたはCloudflare Tunnelを使用した設定手順を必ず実施してください。コマンダーサービスモードは、CLI上で直接実行することも、ローカルマシンでバックグラウンド実行することも、リモートサーバー上でサービスとして実行することも、Dockerコンテナで実行することも可能です。Dockerの使用を推奨します。

#### 重要事項

以下の点を必ず確認してください。

1. リクエストキューシステム (API v2) を有効にする必要があります (例: `-q=y`)
2. ボルト管理機能を使用する場合は、次のコマンドが許可リストに含まれていることを確認します。

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

3. ボルト + KEPM機能を使用する場合は、次のコマンドが許可リストに含まれていることを確認します。

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

4. Ngrokトンネリングを使用する場合は、次のパラメータを含めます。

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

5. Cloudflareトンネリングを使用する場合は、次のパラメータを含めます。

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

サービス作成後、APIキーがコンソール出力に表示されます。必ずコピーして安全に保管します。Dockerを使用している場合は、次のコマンドでログからAPIキーを取得します。

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

コマンダーサービスが正常に起動していれば、エンドポイントに対して以下のようにcurlリクエストを送信できます。

```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"}'
```

トンネルが稼働しており、APIキーが正しければ、次のようなレスポンスが返されます。

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

サービスが正常に稼働していることを確認したら、Jiraの設定手順に進みます。

***

### 手順2. Keeper Forgeアプリのインストール

連携設定を行う前に、Jira CloudインスタンスにKeeper Forgeアプリをインストールする必要があります。

詳細な手順については、[Forgeアプリのインストールについてのページ](https://docs.keeper.io/jp/keeperpam/secrets-manager/integrations/jira-workflow/forge-app-installation)をご参照ください。

***

### 手順3. Jiraの構成

Atlassian Jiraインスタンスで、管理者として連携の構成を行います。

* Jiraで **\[Apps]** (アプリ) → **Keeper**に移動します。
* **API URL** (/api/v2 パスを含む) および**APIキー**を入力します。
* URLの例
  * Ngrok: `https://your-subdomain.ngrok.io/api/v2`
  * Cloudflare: `https://your-subdomain.trycloudflare.com/api/v2`
* **\[Test Connection]** (接続をテスト) をクリックし、成功することを確認します。
* 設定を保存します。

<figure><img src="https://859776093-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FPL6k1aGsLiFiiJ3Y7zCl%2Fuploads%2F7i1TO1cH0CH6l8jq39cz%2Fimage.png?alt=media&#x26;token=d6531707-cba2-4dc6-aafc-5aa18f22b4eb" alt=""><figcaption></figcaption></figure>

Jira管理者の構成が完了しました。

***

### 手順4. エンドポイント特権マネージャーWebhookの設定

Keeper EPMの承認管理およびJiraでのチケット生成を行うには、KeeperからJiraプラットフォームへWebhook通知を送信します。Webhook URLは、Keeper Jira連携画面に表示されます。

以下の手順に従い、Keeper管理コンソールでWebhookを有効化してください。

* Jira Forgeアプリ画面からWebトリガーURLを確認します。

<figure><img src="https://859776093-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FPL6k1aGsLiFiiJ3Y7zCl%2Fuploads%2FFpgV7O7W1bOJRraJD48I%2Fimage.png?alt=media&#x26;token=d06f3b7a-a582-4c78-9a84-84a24226a79d" alt=""><figcaption></figcaption></figure>

* 認証トークンを生成します。

<div><figure><img src="https://859776093-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FPL6k1aGsLiFiiJ3Y7zCl%2Fuploads%2FrqdtZKe7md4JJMzdi0pZ%2Fimage.png?alt=media&#x26;token=2e1c2f5f-614e-4443-88e9-0d18556c304f" alt=""><figcaption></figcaption></figure> <figure><img src="https://859776093-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FPL6k1aGsLiFiiJ3Y7zCl%2Fuploads%2FQwnE18swNIlVInv2rC1H%2Fimage%20(1).png?alt=media&#x26;token=9a6220ac-cb6d-4b8a-aa6c-661eca50b9a5" alt=""><figcaption></figcaption></figure></div>

* Webhook URLとトークンをコピーします (トークンは一度だけ表示されます)。
* Keeper管理コンソールにログインし、**\[レポートとアラート]** → **\[アラート]** に移動して、**\[アラートを追加]** をクリックします。
* アラート名を「Jira EPM Alerts」などに設定します。
* 「アラート条件」で、以下のイベントを選択します。
  * **エージェントが承認リクエストを作成**
  * **承認リクエストを削除**
  * **承認リクエストのステータスを変更**
* **\[受信者を追加]** をクリックし、**\[Webhook]** を選択します。
* 先ほどコピーしたURLおよびトークンを貼り付けます。
* 受信者を保存し、続いてアラートを保存します。

<figure><img src="https://859776093-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FPL6k1aGsLiFiiJ3Y7zCl%2Fuploads%2FftR752aECYni8avgEhnb%2Fimage.png?alt=media&#x26;token=2330d205-e22f-452b-8e2d-b5534952947f" alt=""><figcaption><p>Keeper管理コンソールのWebhook構成</p></figcaption></figure>

* Jira Forgeアプリ画面に戻り、Keeper Securityのアラートから自動作成されるチケットを受け取るJiraプロジェクトを構成します。
* 対象プロジェクトおよび既定の課題タイプを選択します。WebトリガーURLはJira Forgeによって自動生成され、Keeper SecurityアラートのWebhookエンドポイントとして機能します。
* Forgeアプリの構成を保存します。

<figure><img src="https://859776093-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FPL6k1aGsLiFiiJ3Y7zCl%2Fuploads%2F97ii1sxvA1ejAIdv1ev5%2Fimage.png?alt=media&#x26;token=6e6a4025-24ca-418f-9c97-244df199f363" alt=""><figcaption><p>EPM WebhooksのKeeper Forgeアプリの構成</p></figcaption></figure>

## Jiraワークフローのユーザーガイド

* **Jiraプロジェクト (例: IT Support、Security Operations) に移動します。**
  * 新しいチケットを作成します。
* **作成したJiraチケットを開きます。**
  * 画面右側のパネルにあるKeeperパネルを確認します。
  * パネルが読み込まれ、利用可能なKeeperアクションが表示されます。
  * 次のいずれかのアクションを選択します。
    * **Request Access to Record** (レコードへのアクセスをリクエスト)
    * **Request Access to Folder** (フォルダへのアクセスをリクエスト)
    * **Request Record Permission Change** (レコード権限の変更をリクエスト)
  * フォームに必要事項を入力します (必須項目には \* が付いています)。
* **承認のため送信します。**
  * 初回送信の場は、**\[Save Request]** (リクエストを保存) をクリックして管理者承認へ送信します。
  * 既存のリクエストを更新する場合は、**\[Update Request]** (リクエストを更新) をクリックして保存済みのリクエストを修正します。
  * 送信後、「**Request submitted successfully**」または「**Request updated successfully**」という確認メッセージが表示されます。

<table><thead><tr><th width="241.28125">アクション</th><th>使用する場面</th></tr></thead><tbody><tr><td><a href="../../commander-cli/command-reference/sharing-commands">Request Access to Record</a></td><td>個別レコードへのアクセス付与または取り消しを行う場合。期間限定アクセス、一時的なアクセス、チーム共有に利用。</td></tr><tr><td><a href="../../commander-cli/command-reference/sharing-commands">Request Access to Folder</a></td><td>ユーザーまたはチームに対するフォルダ単位のアクセスおよび権限を管理する場合。一時的なプロジェクト対応や外部委託先へのアクセスに有効。</td></tr><tr><td><a href="../../commander-cli/command-reference/sharing-commands">Request Record Permission Change</a></td><td>共有フォルダ内のレコードに対する詳細なアクセス権を管理する場合。最小権限の原則やコンプライアンス要件の徹底に使用。</td></tr><tr><td><a href="../../commander-cli/command-reference/record-commands">Create New Secret (管理者のみ)</a></td><td>Keeperボルトに新しいレコードを追加する場合。新規ユーザーのオンボーディングや認証情報のプロビジョニングに最適。</td></tr><tr><td><a href="../../commander-cli/command-reference/record-commands">Update Record (管理者のみ)</a></td><td>パスワード、ユーザー名、URL、カスタムフィールドなど既存レコードの情報を更新する場合。認証情報の更新やパスワードローテーションに使用。</td></tr><tr><td><a href="../../commander-cli/command-reference/endpoint-privilege-manager-commands">Endpoint Privilege Approval (管理者のみ)</a></td><td>エンドポイントからの特権昇格リクエストをリアルタイムで確認し、承認または拒否する場合。</td></tr></tbody></table>

### Request Access to Record

**説明**: 特定のKeeperレコードに対する共有アクセスをリクエスト

**主な機能**

* メールアドレス指定でユーザーへのレコードアクセスを付与または取り消し
* レコード所有権の移管
* オプション権限の設定 (Allow Sharing、Allow Edit)
* アクセス有効期限の設定 (特定の日時または期間指定)
* フォルダ内のすべてのレコードに対して権限を再帰的に適用

<figure><img src="https://859776093-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FPL6k1aGsLiFiiJ3Y7zCl%2Fuploads%2F5wibifTxfja8CCncvGKr%2Fimage.png?alt=media&#x26;token=6c160f02-0883-4a7b-bb17-3ed842eac63e" alt=""><figcaption><p>Request Access to Record</p></figcaption></figure>

### Request Access to Folder

**説明**: ユーザーまたはチームに対するKeeper共有フォルダへのアクセスをリクエスト

**主な機能**

* フォルダアクセスの付与または取り消し
* 個別ユーザーまたはチームへの割り当て
* フォルダ権限の設定
* レコードの管理
* ユーザーの管理
* レコードの共有
* レコードの編集
* アクセス有効期限の設定

<figure><img src="https://859776093-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FPL6k1aGsLiFiiJ3Y7zCl%2Fuploads%2F45CkfMMOp7LSnUvz07lM%2Fimage.png?alt=media&#x26;token=7b2998d7-5953-4833-9dcc-943fc4ff8330" alt=""><figcaption><p>Request Access to Folder</p></figcaption></figure>

### Create New Secret

説明: Keeper内に新しいシークレットレコードを直接作成

**主な機能**

* 利用可能なレコードタイプ (ログイン情報、銀行口座、SSHキーなど) から選択
* レコードタイプに応じたフィールドを動的に入力
* シークレットをKeeperボルトに安全に保存

{% hint style="info" %}
Jira管理者およびプロジェクト管理者のみ利用可能
{% endhint %}

<figure><img src="https://859776093-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FPL6k1aGsLiFiiJ3Y7zCl%2Fuploads%2FpdFfq0cfNOtqkyVNaS5X%2Fimage.png?alt=media&#x26;token=d80ffa74-8034-4884-8ee4-faa7ee1a627a" alt=""><figcaption></figcaption></figure>

### Update Record

**説明**: 既存のKeeperレコードを更新

{% hint style="info" %}
Jira管理者およびプロジェクト管理者のみ利用可能
{% endhint %}

**主な機能**

・ボルト内のレコードを検索して選択\
・レコードフィールド (title、login、password、URL、notes など) を変更\
・警告を上書きして更新する強制更新オプション

注: Keeperパネルを表示および使用するには、「Edit Issues」(イシュー編集) 権限が必要です。

<figure><img src="https://859776093-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FPL6k1aGsLiFiiJ3Y7zCl%2Fuploads%2F5m2NMII3P7rlH1ZYP0JF%2Fimage.png?alt=media&#x26;token=c837b414-908b-4399-9b1c-c8d04ba561e2" alt=""><figcaption><p>Update Record</p></figcaption></figure>

### Manage KEPM Approval Requests

**説明**: Jira上でKeeperエンドポイント特権マネージャー (KEPM) のリクエストを確認し、承認または拒否

**主な機能**

* 保留中のリクエストを確認
* 特権昇格またはコマンド実行を承認
* 特権昇格またはコマンド実行を拒否

<figure><img src="https://859776093-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FPL6k1aGsLiFiiJ3Y7zCl%2Fuploads%2FthDfvk34Hnf3Jjl0bpsC%2Fimage.png?alt=media&#x26;token=1b24dcf2-e655-4d16-9d2f-28a2654060a2" alt=""><figcaption></figcaption></figure>

### トラブルシューティング

#### デバッグモード

コマンダーサービスモードREST APIが想定どおりに動作しない場合は、以下のようにデバッグモードを有効にして詳細ログを取得します。

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

Dockerの場合

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

デバッグモード有効時の動作

* コンソールまたはDockerログに詳細なリクエスト/レスポンスのトレースを表示
* 構成ミスやAPI通信の問題特定に有効
* 機密情報を含む可能性があるため、本番環境では**無効化**を推奨

#### サービスステータスの確認

1. CLIでコマンダーサービスモードの状態を確認します。

```
keeper service-status
```

2. APIの到達性およびステータス確認を確認します。

* APIエンドポイントを検証してサービス状態を確認します (以下のコマンドを参照)。
* サーバーが起動しており、Jiraからアクセス可能であることを確認します。
* ファイアウォール設定でアクセスが許可されていることを確認します。

{% code fullWidth="false" %}

```bash
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"}'
```

{% endcode %}

3. コマンダーサービスモードを再起動します。

{% hint style="info" %}
サービス停止中もWebhookペイロードデータを用いてチケットは作成されます。セキュリティイベントが失われることはありません。サービス復旧後は、KEPM承認ビューコマンドによる拡張データが新規チケットに含まれます。
{% endhint %}

### 問題の対処

<table><thead><tr><th width="220.8203125">エラー / 症状</th><th width="190.07421875">原因</th><th>推奨される対処方法</th></tr></thead><tbody><tr><td>Connection Failed / Timeout</td><td>コマンダーサービスモードが起動していない、またはトンネルに接続できない</td><td>コマンダーサービスモードインスタンスが稼働中でアクセス可能か確認。NgrokまたはCloudflareトンネルが有効で正しいポートを指していることを確認</td></tr><tr><td>401 Unauthorized / 403 Forbidden</td><td>APIキーが無効または期限切れ</td><td>コマンダーサービスモードログから正しいAPIキーを取得し、Jira設定画面で更新。余分な空白や文字が含まれていないか確認</td></tr><tr><td>404 Not Found</td><td>API URLが誤っている、または不完全</td><td>/api/v2 を含む完全なAPI URLを使用 (例 <code>https://xxxxx.ngrok.io/api/v2</code> または <code>https://xxxxx.mycompany.com/api/v2</code>)。トンネルがコマンダーサービスモードと同じポートに転送していることを確認</td></tr><tr><td>502 Bad Gateway / 503 Service Unavailable</td><td>コマンダーサービスモードが停止している、または応答していない</td><td>コマンダーサービスモードを再起動し、完全に初期化されるまで待機。直近のログで構成や認証エラーを確認</td></tr><tr><td>接続成功後も操作が失敗する</td><td>必要なコマンド未有効、または権限不足</td><td>コマンダーサービスモードで必要なコマンドが有効か確認。操作実行アカウントのKeeperボルト権限を確認</td></tr></tbody></table>
