> For the complete documentation index, see [llms.txt](https://docs.keeper.io/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.keeper.io/keeperpam/jp/secrets-manager/integrations/sailpoint-iiq-connector.md).

# SailPoint IIQ Connector

SailPoint IdentityIQコネクターによるKeeperボルトのアイデンティティおよびアクセス管理

***

<figure><img src="https://859776093-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FPL6k1aGsLiFiiJ3Y7zCl%2Fuploads%2Fgit-blob-82a9860d6d6c28a2ab6ce6f4fa67984adaecb5d0%2FKeeper%2BSailPoint.png?alt=media" alt=""><figcaption></figcaption></figure>

## 概要 <a href="#overview" id="overview"></a>

SailPoint IdentityIQ (IIQ) 経由で、Keeperエンタープライズのアイデンティティガバナンスを行えます。

アカウントの集約や個別アカウントの更新に加え、ノード、チーム、ロール、フォルダ、レコードのエンタイトルメントも集約できます。Keeperアカウントの作成、更新、有効化、無効化、削除も行えます。

本コネクターは、IdentityIQ 8.4、8.5、9.0 (各パッチリリースを含む) に対応しています。

## 機能 <a href="#features" id="features"></a>

| SailPointコネクターの機能 | 説明                                                                                                                                                                                                                                                                                                                                                                        |
| ----------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| 接続テスト             | <ol><li>IdentityIQとKeeperコマンダーサービスモード間の接続を確認</li></ol>                                                                                                                                                                                                                                                                                                                    |
| エンタイトルメント集約       | <ol><li>Keeper組織で利用可能なロールの一覧表示</li><li>Keeper組織で利用可能なチームの一覧表示</li><li>Keeper組織で利用可能なノードの一覧表示</li><li>レコードとその権限の一覧表示</li><li>フォルダとその権限の一覧表示</li><li>Keeperで変更された名前を既存のエンタイトルメントに反映し、Keeperに存在しなくなったエンタイトルメントを削除</li></ol>                                                                                                                                                  |
| アカウント集約           | <ol><li>Keeper組織のユーザーをIdentityIQ上に一覧表示</li><li>ユーザーを既存のKeeperボルトエンタイトルメントへマッピング</li><li>単一アカウントの更新</li><li>Keeperに存在しなくなったユーザーのアカウントを削除</li></ol>                                                                                                                                                                                                                         |
| アカウント更新           | <ol><li>IdentityIQからユーザーを招待し、各ユーザーにKeeperボルトをプロビジョニング</li><li>IdentityIQでユーザーの名前、役職、メールアドレスを更新</li><li>IdentityIQのエンタイトルメント割り当てでロール、チーム、ノードを割り当て</li><li>IdentityIQのレコードおよびフォルダエンタイトルメントのプロビジョニングでレコードとフォルダを共有</li><li>IdentityIQ経由でKeeperボルトへのアクセスを有効化または無効化</li><li>アカウントを削除。<code>sailpoint-app-setup</code> で構成した対象ユーザーへKeeperボルトを移管したあと、該当するKeeperアカウントを削除</li></ol> |

## 活用事例 <a href="#example-use-case" id="example-use-case"></a>

### Keeperボルトへのユーザー招待とレコード共有 <a href="#invite-user-to-keeper-vault-and-share-record" id="invite-user-to-keeper-vault-and-share-record"></a>

{% stepper %}
{% step %}

#### IdentityIQでアイデンティティを選択 <a href="#select-identity-in-identityiq" id="select-identity-in-identityiq"></a>

IdentityIQでアイデンティティを選択します。アイデンティティのメールアドレスは、ユーザーのKeeperメールアドレスと一致している必要があります。

**\[Manage User Access]** または **\[Manage Accounts]** から、そのアイデンティティに対してKeeperアカウントをリクエストします。リクエストすると、コネクターがKeeperの招待を作成します。

<figure><img src="https://859776093-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FPL6k1aGsLiFiiJ3Y7zCl%2Fuploads%2Fgit-blob-34388fc1fc41f6f557941eed37b534ae34557cd7%2FFunc24.png?alt=media" alt=""><figcaption></figcaption></figure>
{% endstep %}

{% step %}

#### Keeperアカウントのセットアップを完了 <a href="#complete-keeper-account-setup" id="complete-keeper-account-setup"></a>

ユーザーはメールで届いたKeeper招待を承認し、ボルトのセットアップを完了します。

レコードをユーザーに直接共有する前に、ユーザーのボルトがアクティブである必要があります。詳しくは、[ユーザーの作成と招待](/keeperpam/jp/commander-cli/command-reference/enterprise-management-commands/creating-and-inviting-users.md)をご参照ください。
{% endstep %}

{% step %}

#### レコードエンタイトルメントを割り当て <a href="#assign-the-record-entitlement" id="assign-the-record-entitlement"></a>

IdentityIQで、必要な **\[Record]** エンタイトルメントをアイデンティティにリクエストします。ユーザーのアクセス要件に合った権限レベルを選択します。

<div><figure><img src="https://859776093-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FPL6k1aGsLiFiiJ3Y7zCl%2Fuploads%2Fgit-blob-239fe94ca4da3d1d8d7589151e3b1d404e8034f0%2FFunc19.png?alt=media" alt=""><figcaption></figcaption></figure> <figure><img src="https://859776093-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FPL6k1aGsLiFiiJ3Y7zCl%2Fuploads%2Fgit-blob-916aeefbe98753ac995295bf3fc0dd94e9f6698a%2FFunc20.png?alt=media" alt=""><figcaption></figcaption></figure></div>

リクエストすると、コネクターがユーザーのKeeperアカウントにレコード共有をプロビジョニングします。
{% endstep %}

{% step %}

#### アクセスを確認 <a href="#verify-access" id="verify-access"></a>

IdentityIQでアイデンティティを開き、**\[Entitlements]** タブを確認します。アイデンティティにレコードエンタイトルメントが表示されることを確認します。

<figure><img src="https://859776093-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FPL6k1aGsLiFiiJ3Y7zCl%2Fuploads%2Fgit-blob-9c497dad633e329e02b6a45c15ba35265f1e5d2e%2FFunc22.png?alt=media" alt=""><figcaption></figcaption></figure>
{% endstep %}
{% endstepper %}

## 要件 <a href="#prerequisites" id="prerequisites"></a>

1. **Keeperエンタープライズ:** ユーザー、チーム、ロール、共有を管理できる管理者アクセスがあること
2. **Keeperコマンダーのサービスモード (API v2):** すべてのIdentityIQサーバーからHTTPSで到達可能で、有効なサービスモードAPIキーがあること
3. **SailPoint IdentityIQ:** 8.4、8.5、9.0 (いずれもパッチレベルを問わない)。サーバーファイル (またはコンテナ) にアクセスでき、IdentityIQのUIで **System Administrator** 権限があること
4. **Java 11**以降、およびご利用のIdentityIQリリースが対応するアプリケーションサーバーとデータベース (IdentityIQ 9.0ではTomcat 10.1または11、MySQL 8.4)
5. **Lifecycle Manager** (任意): アクセスリクエストとManage Accountsページで使用

{% hint style="info" %}
本コネクターにサードパーティの依存関係はありません。JDKとIdentityIQに同梱されているライブラリのみを使用します。
{% endhint %}

## コマンダーサービスモードのセットアップ <a href="#commander-service-mode-setup" id="commander-service-mode-setup"></a>

ゼロ知識およびエンドツーエンド暗号化を維持するため、**コマンダーサービスモード**をお客様のインフラ上で稼働させます。IdentityIQコネクターからKeeperへの通信は、この経路のみを使用します。

`sailpoint-app-setup` を実行すると、DockerベースのサービスモードのデプロイとSailPoint向け設定をまとめて準備できます。

#### 開始前に <a href="#before-you-start" id="before-you-start"></a>

1. ワークステーションに[Keeperコマンダーをインストール](/keeperpam/jp/commander-cli/commander-installation-setup.md)します。
2. IdentityIQから管理するフォルダやレコードの共有、およびエンタープライズユーザーの管理権限を持つ、専用のKeeper**サービスアカウント**の利用を推奨します。
3. そのアカウントでコマンダーにログインします。

```
keeper shell
login serviceuser@company.com
```

4. サービスモードを実行するホストでDockerが利用できることを確認します。

#### SailPointセットアップの実行 <a href="#run-sailpoint-setup" id="run-sailpoint-setup"></a>

```
My Vault> sailpoint-app-setup
```

本コマンドは2つのフェーズで実行され、**コマンダー専用**サービスを含む `docker-compose.yml` を書き出します。

**フェーズ1 (サービスモード / Docker)**

共有フォルダ、Docker構成レコード、KSMアプリケーション、クライアント構成を作成したあと、以下の入力を求めます。

| プロンプト                        | 説明                                                 |
| ---------------------------- | -------------------------------------------------- |
| **Port**                     | コマンダーサービスモードのローカルポート。デフォルト: `8900`                 |
| **Enable ngrok?**            | ngrokによる任意の公開URL。デフォルト: No                         |
| **Ngrok Auth Token**         | ngrokを有効にした場合は必須                                   |
| **Ngrok Custom Domain**      | 任意 (例: `myapp.ngrok.io`)。スキップする場合はEnter            |
| **Enable Cloudflare?**       | ngrokが無効の場合のみ表示。デフォルト: No                          |
| **Cloudflare Tunnel Token**  | Cloudflareを有効にした場合は必須                              |
| **Cloudflare Custom Domain** | Cloudflareを有効にした場合は必須 (例: `commander.company.com`) |

{% hint style="info" icon="pencil-line" %}
NgrokとCloudflareは同時に有効にできません。IdentityIQはお客様自身のネットワーク内で稼働するため、通常はトンネルは不要です。すべてのIdentityIQサーバーからHTTPSで到達できるサービスモードのURLを使用してください。**ngrok** または **Cloudflare Tunnel** を有効にするのは、サービスモードがIdentityIQから直接到達できないネットワーク上で稼働している場合のみです。
{% endhint %}

キューモード (API v2) は自動的に有効になります。コマンドの許可リストは、ユーザーライフサイクルと共有など、SailPoint向けに安全な操作に限定されます。`get`、`export`、`find-password` などシークレットを扱うコマンドは除外されます。

**フェーズ2 (SailPointオプション)**

| プロンプト                      | 説明                                                                                     |
| -------------------------- | -------------------------------------------------------------------------------------- |
| **Allow folder shares?**   | IdentityIQがフォルダ共有エンタイトルメント (`share-folder` / `nsf-share-folder`) を管理できるかどうか。デフォルト: Yes |
| **Allow record shares?**   | IdentityIQがレコード共有エンタイトルメント (`share-record` / `nsf-share-record`) を管理できるかどうか。デフォルト: Yes |
| **Allow role assignment?** | IdentityIQが `enterprise-user` / `enterprise-role` 経由でロールを割り当てられるかどうか。デフォルト: Yes        |
| **Allow team assignment?** | IdentityIQが `enterprise-user` 経由でチームを割り当てられるかどうか。デフォルト: Yes                            |
| **Transfer target email**  | IdentityIQが `transfer-user` 経由でアカウントを削除する際に、ボルトデータを受け取るアクティブユーザー (必須)                  |
| **Interval seconds**       | 招待済みユーザーを再確認し、**Active** になった後にキューされたエンタイトルメントを適用する間隔 (秒)。デフォルト: `60`。最小: `15`         |

{% hint style="info" icon="pencil-line" %}
無効にした機能を呼び出すと、サービスモード側で拒否されます (HTTP 403)。ノードは制限対象外であり、招待や移動向けに `--node` は常に利用できます。
{% endhint %}

作成されるリソース (デフォルト)

| リソース              | デフォルト名                                             |
| ----------------- | -------------------------------------------------- |
| 共有フォルダ            | `Commander Service Mode - SailPoint`               |
| KSMアプリケーション       | `Commander Service Mode - KSM App`                 |
| Docker構成レコード      | `Commander Service Mode Docker Config`             |
| SailPoint構成レコード   | `Commander Service Mode SailPoint Config`          |
| Dockerサービス / コンテナ | `commander-sailpoint` / `keeper-service-sailpoint` |

{% hint style="info" icon="pencil-line" %}
セットアップを再実行すると `docker-compose.yml` は上書きされます (手動編集は失われます)。SailPoint構成レコード上のキュー済み保留エンタイトルメントは保持されます。
{% endhint %}

{% hint style="info" icon="lightbulb-exclamation-on" %}
サービスモードは `service-create` 単体ではなく、`sailpoint-app-setup` で起動してください。`service-create` だけで起動したサービスモードには移管先がありません。その場合、削除リクエストは受理されますがKeeper側ではユーザーが残り、アクセスリクエストが **Pending / Verifying** のままになります。
{% endhint %}

#### デプロイ <a href="#deploy" id="deploy"></a>

```
My Vault> quit
rm ~/.keeper/config.json
docker compose up -d
docker ps
docker logs keeper-service-sailpoint
curl http://localhost:<port>/health
```

Docker起動前にローカルの `config.json` を削除し、同一のデバイストークンによる競合を避けます。Dockerコンテナ側の構成はKSM経由で読み込まれます。

#### IdentityIQアプリケーション用の値 <a href="#values-for-the-identityiq-application" id="values-for-the-identityiq-application"></a>

サービスが正常になったあと、以下の値を使用します。

1. **Service Mode URL:** `/api/v2` を含まないベースURLで、すべてのIdentityIQサーバーから到達できるもの (ngrok/Cloudflareを有効にした場合はそのトンネルURL、それ以外は到達可能なホストURL)
2. **API Key:** セットアップ時に作成されたDocker/サービス構成レコードから取得 (コンテナがサービスモードを開始したあと、ボルト内に保存)

これらの値をアプリケーション構成で使用します。

{% hint style="info" icon="pencil-line" %}
サービスモードがログインに使用するサービスアカウントは、IdentityIQのプロビジョニング対象に含めないでください。コネクターは、サービスモードがログインに使用しているKeeperアカウントの削除、無効化、更新を行いません。
{% endhint %}

#### 遅延エンタイトルメント (招待済みユーザー) <a href="#deferred-entitlements-invited-users" id="deferred-entitlements-invited-users"></a>

ユーザーが **Active** になるまで、一部のエンタイトルメントは完全には適用できません。ユーザーがまだ **Invited** の間に要求されたロール、チーム、フォルダ、レコードの付与はコマンダーのキューに入り、アクティベーション後 (フェーズ2のポーリング間隔) に適用されます。

新しいアカウントは、ユーザーがKeeperの招待を承認するまで **Invited** のままです (IdentityIQ上では無効と表示されます)。作成時に指定した初期の**ロール** / **チーム**は、ユーザーがアクティブになった時点で適用されます。

#### 任意のCLIフラグ <a href="#optional-cli-flags" id="optional-cli-flags"></a>

```
My Vault> sailpoint-app-setup \
  --folder-name "Commander Service Mode - SailPoint" \
  --app-name "Commander Service Mode - KSM App" \
  --config-record-name "Commander Service Mode Docker Config" \
  --sailpoint-record-name "Commander Service Mode SailPoint Config" \
  --skip-device-setup
```

| フラグ                       | 説明                         |
| ------------------------- | -------------------------- |
| `--folder-name`           | 共有フォルダ名                    |
| `--app-name`              | KSMアプリケーション名               |
| `--config-record-name`    | Docker/サービス構成レコード名         |
| `--sailpoint-record-name` | SailPoint構成レコード名           |
| `--config-path`           | コマンダーの `config.json` へのパス  |
| `--timeout`               | デバイスのタイムアウト (デフォルト: `30d`) |
| `--skip-device-setup`     | すでに構成済みの場合にデバイス登録をスキップ     |

***

## コネクターZIPのダウンロード <a href="#download-the-connector-zip" id="download-the-connector-zip"></a>

1. [Keeper Security SailPoint IdentityIQ Connector Releases](https://github.com/Keeper-Security/sailpoint-iiq-connector/releases) ページにアクセスします。
2. 最新のリリースを確認します。
3. コネクターのZIPファイルとチェックサムファイルをダウンロードします。通常、以下のような名前です。

```
keeper-iiq-connector-<version>.zip
keeper-iiq-connector-<version>.zip.sha256
```

4. ZIPファイルをIdentityIQサーバー (またはコンテナ) にコピーし、ZIPファイルのあるディレクトリでターミナルを開きます。

ZIPには以下が含まれます。

| パス                                                   | 用途                                                |
| ---------------------------------------------------- | ------------------------------------------------- |
| `lib/keeper-iiq-connector-<version>.jar`             | コネクター                                             |
| `web/define/applications/KeeperAttributesForm.xhtml` | アプリケーション設定ページ                                     |
| `config/Keeper.xml`                                  | コネクターのレジストリエントリ (アプリケーションタイプ **Keeper Security**) |
| `config/Keeper-Application.xml`                      | **Keeper Security** アプリケーションとそのメール相関を作成           |
| `config/Keeper-Tasks.xml`                            | **Keeper Security** アプリケーションの集約タスク                |
| `config/Keeper-Entitlement-Refresh.xml`              | エンタイトルメント集約がKeeperで変更された名前を反映する際に使用するルール          |
| `install.sh`                                         | コネクター、アプリケーションタイプ、アプリケーション、タスクを1回の実行でインストール       |
| `uninstall.sh`                                       | コネクター、そのアプリケーション、タスク、アプリケーションタイプを削除               |

***

## IdentityIQへのコネクターのインストール <a href="#install-the-connector-in-identityiq" id="install-the-connector-in-identityiq"></a>

コネクターは、クラスター内の**すべてのIdentityIQサーバー**にインストールします。1台目のサーバーでは通常のインストールを実行し、それ以外のサーバーでは `install.sh -n` (またはオプションCの手順1〜5) を実行します。

{% hint style="info" icon="pencil-line" %}
jarと設定ページは、サーバー上で直接コピーする必要があります。IdentityIQのUIからはファイルをインストールできません。
{% endhint %}

### IdentityIQディレクトリの確認 <a href="#locate-the-identityiq-directory" id="locate-the-identityiq-directory"></a>

以下のコマンドで、`<identityiq>` は `WEB-INF` を含むIdentityIQのウェブアプリケーションディレクトリを指します。

| IdentityIQの稼働環境  | 一般的な `<identityiq>`                                                 |
| ---------------- | ------------------------------------------------------------------- |
| Linux上のTomcat    | `<tomcat>/webapps/identityiq` (例: `/opt/tomcat/webapps/identityiq`) |
| Windows上のTomcat  | `<tomcat>\webapps\identityiq`                                       |
| 公式Tomcatコンテナイメージ | `/usr/local/tomcat/webapps/identityiq` (コンテナ内)                      |

ディレクトリを確認するには、`iiq.properties` を探し、2階層上へ移動します。

```bash
find / -path "*WEB-INF/classes/iiq.properties" 2>/dev/null
# /opt/tomcat/webapps/identityiq/WEB-INF/classes/iiq.properties
#   -> <identityiq> is /opt/tomcat/webapps/identityiq
```

### オプションA: インストールスクリプト (Linux / macOS) <a href="#option-a-install-script-linux-macos" id="option-a-install-script-linux-macos"></a>

IdentityIQのファイルを所有するユーザーで実行します。

```bash
unzip keeper-iiq-connector-*.zip
cd keeper-iiq-connector-*/
./install.sh -d <identityiq>
```

スクリプトは、1回の実行で以下を行います。

1. 以前のバージョンをバックアップし、jarと設定ページをコピーします。
2. **Keeper Security** アプリケーションタイプと **Keeper Entitlement Refresh** ルールを登録します。
3. メール相関付きの **Keeper Security** アプリケーションを作成します。同じ名前のアプリケーションがすでにある場合は、その設定を保持します。
4. 3つの集約タスクを作成または更新します。

| オプション                | 説明                                                            |
| -------------------- | ------------------------------------------------------------- |
| `-d <identityiq>`    | IdentityIQのウェブアプリケーションディレクトリ (必須)                             |
| `-a "My Keeper App"` | 別のアプリケーション名を使用                                                |
| `-n`                 | ファイルとアプリケーションタイプのみインストールし、アプリケーションとタスクはスキップ。クラスター内のほかのサーバーで使用 |

インストール後、アプリケーションサーバーを再起動します。以下は、その例です。

```bash
sudo systemctl restart tomcat
```

### オプションB: コンテナ (Docker) で稼働するIdentityIQ <a href="#option-b-identityiq-in-a-container-docker" id="option-b-identityiq-in-a-container-docker"></a>

`iiq console` がIdentityIQデータベースに接続できるよう、Tomcatを実行しているコンテナ内でスクリプトを実行します。

```bash
docker cp keeper-iiq-connector-*.zip <container>:/opt/
docker exec -it <container> bash

cd /opt
jar xf keeper-iiq-connector-*.zip
cd keeper-iiq-connector-*/
sh ./install.sh -d <identityiq>
exit

docker restart <container>
```

{% hint style="info" icon="pencil-line" %}
コンテナに `unzip` がない場合は、上記のようにJDKの `jar` ツールを使用します。`jar` は実行権限を保持しないため、スクリプトは `sh` で起動します。`<identityiq>` がマウントされたボリューム上にない場合、コンテナを再作成するとjarと設定ページが失われます。
{% endhint %}

### オプションC: 手動インストール (Windowsまたはその他のOS) <a href="#option-c-manual-install-windows-or-any-os" id="option-c-manual-install-windows-or-any-os"></a>

1. アプリケーションサーバーを停止します。
2. `<identityiq>/WEB-INF/lib` から古い `keeper-iiq-connector*.jar` を削除します。
3. `lib/keeper-iiq-connector-<version>.jar` を `<identityiq>/WEB-INF/lib/` にコピーします。
4. `web/define/applications/KeeperAttributesForm.xhtml` を `<identityiq>/define/applications/` にコピーします。
5. アプリケーションサーバーを起動します。
6. **Gear icon → Global Settings → Import from File** に移動し、以下のファイルを順番にインポートします。
   1. `config/Keeper.xml`
   2. `config/Keeper-Entitlement-Refresh.xml`
   3. `config/Keeper-Application.xml`
   4. `config/Keeper-Tasks.xml`

`iiq console` (Windowsでは `iiq.bat console`) でもインポートできます。

```
cd <identityiq>/WEB-INF/bin
iiq console
> import /full/path/to/config/Keeper.xml
> quit
```

{% hint style="info" icon="pencil-line" %}
jarは `WEB-INF/lib` に配置する必要があります。アプリケーションの `connector-classpath` 経由で読み込むだけでは不十分です。アプリケーション定義ページはコネクタークラスを直接読み込むため、見つからない場合は空白のまま表示されます。
{% endhint %}

***

## アプリケーション構成 <a href="#application-configuration" id="application-configuration"></a>

1. 管理者資格情報でIdentityIQにログインし、**\[Applications]** → **\[Application Definition]** に移動します。
2. インストーラーが作成した **\[Keeper Security]** アプリケーションを開きます。
3. 設定ページを開きます。IdentityIQ 8.xでは **\[Configuration]** → **\[Settings]**、9.0では **\[Settings]** です。Keeperコマンダーサービスモードの接続設定を入力します。

<figure><img src="https://859776093-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FPL6k1aGsLiFiiJ3Y7zCl%2Fuploads%2Fgit-blob-76266490325a9291020990aea2219f2e5cb5cc88%2FFunc3.png?alt=media" alt=""><figcaption></figcaption></figure>

| 設定                   | 必須  | デフォルト | 説明                                                   |
| -------------------- | --- | ----- | ---------------------------------------------------- |
| **Service Mode URL** | はい  |       | `/api/v2` を含まない、コマンダーサービスモードのベースURL                  |
| **API Key**          | はい  |       | サービスモードのAPIキー。暗号化されて保存される                            |
| **Poll Timeout**     | いいえ | `60`  | 1回のコマンダーコマンドを待機する秒数                                  |
| **Sync Cache TTL**   | いいえ | `30`  | エンタープライズまたはボルトの同期結果が有効な秒数。この時間を過ぎると、次回の読み取り時に再度同期される |

4. **\[Test Connection]** をクリックしてサービスモードとIdentityIQ間の接続を確認し、**\[Save]** をクリックします。

{% hint style="info" icon="pencil-line" %}
アプリケーションを手動で作成する場合は、**\[Applications]** → **\[Application Definition]** → **\[Add New Application]** に移動し、アプリケーションタイプ **Keeper Security** を選択して上記の設定を入力します。さらに **\[Correlation]** タブで、アカウント属性 `email` をアイデンティティ属性 `email` に対応付けます。アプリケーションには、アカウントスキーマ、5つのエンタイトルメントスキーマ、**Create** プロビジョニングポリシーが含まれます。
{% endhint %}

## エンタイトルメント集約 <a href="#entitlement-aggregation" id="entitlement-aggregation"></a>

サービスモードとIdentityIQの接続を確立したあと、エンタイトルメント集約を実行します。

この手順により、利用可能なノード、ロール、チーム、レコード、フォルダとその権限が一覧化されます。

Keeper Security IdentityIQ Connectorで利用できるエンタイトルメントタイプは以下です。

## エンタイトルメントタイプ <a href="#entitlement-types" id="entitlement-types"></a>

| タイプ    | 説明                                                                                      |
| ------ | --------------------------------------------------------------------------------------- |
| Node   | Keeperエンタープライズ階層内の組織単位。各ユーザーは1つのノードに所属。ノードパス (例: `Org\Sales`) として表示                     |
| Team   | Keeperユーザーのグループ。このエンタイトルメントを割り当てると、ユーザーがチームに追加される                                       |
| Role   | Keeperのロール。このエンタイトルメントを割り当てると、その権限が付与される                                                |
| Folder | 共有フォルダへのアクセス (割り当てられた権限レベルを含む)。`Name [Permission]` として表示。従来型および階層型共有フォルダ (NSF) に対応      |
| Record | ユーザーに直接共有されたレコード (割り当てられた権限レベルを含む)。`Title [Permission]` として表示。従来型および階層型共有フォルダ (NSF) に対応 |

権限レベルごとに別個のエンタイトルメントとなり、リクエスト、承認、認定の対象にできます。

| 種類              | 権限コード                                                                                             |
| --------------- | ------------------------------------------------------------------------------------------------- |
| 従来型共有フォルダ       | `NP` No permissions、`MU` Manage users、`MR` Manage records、`MUR` Manage users & records            |
| 階層型共有フォルダ (NSF) | `VW` Viewer、`SM` Share manager、`CM` Content manager、`CSM` Content share manager、`FM` Full manager |
| 従来型レコード         | `RO` Read-only、`CE` Can edit、`CS` Can share、`OW` Owner                                            |
| NSFレコード         | `VW`、`SM`、`CM`、`CSM`、`FM`、`OW`                                                                    |

<figure><img src="https://859776093-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FPL6k1aGsLiFiiJ3Y7zCl%2Fuploads%2Fgit-blob-c695a63f6e016ffb7a306c5fba4cee010d218f9c%2FFunc14.png?alt=media" alt=""><figcaption></figcaption></figure>

{% hint style="info" icon="pencil-line" %}
ユーザーのフォルダおよびレコードエンタイトルメントとして集約されるのは、そのユーザーに直接付与された共有のみです。チームのフォルダ共有は、チームのエンタイトルメントに一覧表示されます。
{% endhint %}

インストーラーは、3つの集約タスクを作成します。

<figure><img src="https://859776093-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FPL6k1aGsLiFiiJ3Y7zCl%2Fuploads%2Fgit-blob-e8768157b09fe24739f2cf4bf3184046b4fb60ac%2FFunc10.png?alt=media" alt=""><figcaption></figcaption></figure>

| タスク                                         | 説明                                                                                           |
| ------------------------------------------- | -------------------------------------------------------------------------------------------- |
| **Keeper Security Entitlement Aggregation** | ノード、チーム、ロール、フォルダ、レコードを集約。Keeperで変更された名前を反映し、Keeperに存在しなくなったエンタイトルメントを削除                      |
| **Keeper Security Account Aggregation**     | Keeperユーザーとそのエンタイトルメントを集約。Keeperに存在しなくなったユーザーのアカウントを削除                                       |
| **Keeper Security Full Aggregation**        | 上記2つのタスクを順に実行したあと、**Full Text Index Refresh** と **Perform Identity Request Maintenance** を実行 |

1. **\[Setup]** → **\[Tasks]** に移動し、**\[Keeper Security Entitlement Aggregation]** を選択して **\[Run Now]** をクリックします。

エンタイトルメント集約の完了後、**\[Applications]** → **\[Entitlement Catalog]** で、Keeper Securityアプリケーションに絞り込んでエンタイトルメントを確認できます。

{% hint style="info" icon="pencil-line" %}
エンタイトルメント集約を単独で実行した場合は、新しいエンタイトルメントを **\[Manage User Access]** で検索できるよう、その後に **Full Text Index Refresh** を実行してください。Full Aggregationでは自動的に実行されます。
{% endhint %}

## アカウント集約 <a href="#account-aggregation" id="account-aggregation"></a>

エンタイトルメント集約の完了後、アカウント集約を実行します。Keeperエンタープライズからユーザーをインポートし、各ユーザーを割り当て済みのエンタイトルメントおよび既存のアクセスにマッピングします。

1. **\[Setup]** → **\[Tasks]** に移動し、**\[Keeper Security Account Aggregation]** を選択して **\[Run Now]** をクリックします。

集約の完了後、**\[Identities]** → **\[Identity Warehouse]** でアカウントを確認できます。

ユーザーを選択して **\[Entitlements]** タブを開くと、割り当て済みのエンタイトルメントを確認できます。

{% hint style="info" icon="pencil-line" %}
Keeperとの同期を保つため、**Keeper Security Full Aggregation** をスケジュール (例: 毎晩) して実行してください。IdentityIQで有効になるのはステータスが `Active` のユーザーのみです。`Invited`、`Locked` などのステータスは無効と表示されます。
{% endhint %}

{% hint style="info" icon="pencil-line" %}
既存のアイデンティティに相関しないKeeperアカウントは、新しいアイデンティティとして作成されます。アイデンティティマッピングでメールを設定しない限り、そのメールは空のままです。Keeperからマッピングするには、**\[Global Settings]** → **\[Identity Mappings]** → **\[email]** → **\[Add Source]** に移動して、**Keeper Security** アプリケーションと **email** 属性を選択し、**Refresh Identity Cube** を実行します。

<img src="https://859776093-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FPL6k1aGsLiFiiJ3Y7zCl%2Fuploads%2Fgit-blob-beb972caeb0752483267af4c4678ed65b5a89daf%2FFunc6.png?alt=media" alt="" data-size="original"><img src="https://859776093-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FPL6k1aGsLiFiiJ3Y7zCl%2Fuploads%2Fgit-blob-4df894d52d150192c0f472f157bbfb24bd156050%2FFunc7.png?alt=media" alt="" data-size="original"><img src="https://859776093-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FPL6k1aGsLiFiiJ3Y7zCl%2Fuploads%2Fgit-blob-e4489acda88e3cea9eaa46d0d61ca6a5de7471ff%2FFunc8.png?alt=media" alt="" data-size="original"><img src="https://859776093-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FPL6k1aGsLiFiiJ3Y7zCl%2Fuploads%2Fgit-blob-9188dda55cf3b95122a8c0a84ba2899cd6f7b49a%2FFunc9.png?alt=media" alt="" data-size="original">
{% endhint %}

## エンタイトルメントの割り当て <a href="#entitlement-assignment" id="entitlement-assignment"></a>

エンタイトルメントは、以下の手順でアクセスリクエストを通じて割り当てます。

1. **\[Manage User Access]** に移動し、アクセスが必要なアイデンティティを選択します。
2. Keeperのエンタイトルメント (チーム、ロール、ノード、フォルダ、レコード) を検索し、リクエストに追加します。
3. リクエストを送信します。承認されると、コネクターがユーザーのKeeperアカウントにエンタイトルメントをプロビジョニングします。

### プロビジョニングの動作 <a href="#provisioning-behavior" id="provisioning-behavior"></a>

| 操作                           | Keeperでの動作                                                                                    |
| ---------------------------- | --------------------------------------------------------------------------------------------- |
| **Create**                   | 名前、ノード、役職、リクエストされたロールとチームを指定してユーザーを招待する。ユーザーは、Keeperの招待を承認するまで `Invited` のまま                  |
| **Update**                   | ノード、ロール、チームの変更を適用し、続いてフォルダ共有、レコード共有、最後にメールアドレスの変更を適用する。失敗はそれぞれリクエストに報告され、ほかの変更は引き続き実行される      |
| **Folder permission change** | ユーザーは共有フォルダごとに1つの権限レベルを持つ。新しいレベルをリクエストすると、現在のレベルが置き換えられる                                      |
| **Record rights**            | `CE` または `CS` のレコードエンタイトルメントを削除すると、その権限のみが削除され、読み取り専用アクセスは残る。共有を完全に削除するには、`RO` エンタイトルメントを削除する |
| **Record ownership (`OW`)**  | IdentityIQからは付与も削除もできない。所有権はKeeperボルトで変更する                                                    |
| **Email change**             | Keeperのエイリアス昇格を使用する。新しいアドレスがプライマリメールになる                                                       |
| **Disable / Enable**         | Keeperユーザーをロックまたはロック解除する                                                                      |
| **Delete**                   | `sailpoint-app-setup` で構成した移管先にユーザーのボルトを移管したあと、ユーザーを削除する                                      |

***

## アップグレードとアンインストール <a href="#upgrade-and-uninstall" id="upgrade-and-uninstall"></a>

**アップグレード:** 新しいZIPを、最初のインストールと同じ方法でインストールします。アプリケーション、その設定、集約済みのデータは保持され、`install.sh` がタスクを更新します。すべてのIdentityIQサーバーでアプリケーションサーバーを再起動します。

{% hint style="info" icon="pencil-line" %}
既存のKeeperアプリケーションに、古いコネクターjarを指す `connector-classpath` エントリがある場合は、そのエントリと古いjarを削除してください。削除しないと、IdentityIQが古いコネクターを読み込み続けます。
{% endhint %}

**アンインストール:** Keeper側は変更されません。アンインストールスクリプトを実行し、アプリケーションサーバーを再起動します。

```bash
cd keeper-iiq-connector-*/
./uninstall.sh -d <identityiq>
```

スクリプトは、すべての **Keeper Security** アプリケーション (アカウント、エンタイトルメント、タスクを含む)、メール相関、**Keeper Entitlement Refresh** ルール、アプリケーションタイプ、コネクターファイルを削除します。クラスター内のほかのサーバーでは、`WEB-INF/lib/keeper-iiq-connector-*.jar` と `define/applications/KeeperAttributesForm.xhtml` を削除してください。集約で作成されたアイデンティティは保持されます。アカウントのないアイデンティティを削除するには、**Prune Identity Cubes** を実行します。

## トラブルシューティングとログ <a href="#troubleshooting-and-logging" id="troubleshooting-and-logging"></a>

プロビジョニングのアクティビティやエラーを確認するには、**\[My Work]** → **\[Access Requests]** に移動し、対象のリクエストを開いて **\[Details]** をクリックします。Keeperからのエラーは、アプリケーションサーバーのログにも出力されます。

各集約のオブジェクト数をログに記録するには、`WEB-INF/classes/log4j2.properties` で `com.keeper.identityiq` のログレベルを `info` に設定します。

| 症状                                                                              | 原因と対処                                                                                                                                                                                        |
| ------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Test Connection: `status 401`                                                   | APIキーが正しくありません。サービスモードの構成レコードから再度コピーしてください。                                                                                                                                                  |
| Test Connection: `status 403`                                                   | `whoami` が許可されていません。`sailpoint-app-setup` でサービスモードをセットアップしてください。                                                                                                                             |
| `ClassNotFoundException: com.keeper.identityiq.KeeperConnector`、またはSchemaページが空白 | このサーバーの `WEB-INF/lib` にjarがありません。                                                                                                                                                            |
| IdentityIQ 9.0: Settingsページにフィールドが表示されない                                        | jarがない、または古いか、別のアプリケーションタイプからアプリケーションが作成されています。最新のZIPをインストールして再起動し、アプリケーションタイプが **Keeper Security** であることを確認してください。                                                                          |
| `Keeper API poll timed out`                                                     | コマンダーの応答が遅いか、処理中です。**Poll Timeout** を大きくしてください。                                                                                                                                              |
| 削除は成功したがKeeperにユーザーが残り、リクエストが **Pending / Verifying** のままになる                    | サービスモードに移管先がありません。`sailpoint-app-setup` で (移管先メールアドレスを指定して) セットアップし、ユーザーのロールでアカウント移管が有効になっていることを確認してから、再度削除してください。                                                                           |
| Keeperで名前を変更したエンタイトルメントが古い名前のまま                                                 | 古いバージョンで作成されたタスクは、**Keeper Entitlement Refresh** ルールを使用しません。`install.sh` を再実行し、Full Aggregationを実行してください。                                                                                    |
| 作成直後にロールやチームが反映されない                                                             | ユーザーが招待を承認した時点で、Keeperが適用します。                                                                                                                                                                |
| アクセスリクエストが **Verifying** のまま                                                    | **Perform Identity Request Maintenance** が実行されるまでは想定どおりの動作です。                                                                                                                                |
| ノード変更後、ユーザーがボルトにログインできない                                                        | 新しいノードがSSOを使用しており、ユーザーがそのIDプロバイダに設定されていません。                                                                                                                                                  |
| Manage User Accessでエンタイトルメントが見つからない                                             | **Full Text Index Refresh** を実行し、Entitlement Catalogでエンタイトルメントが **Requestable** になっていることを確認してください。                                                                                           |
| Remove Accessに現在のエンタイトルメントが表示されない                                               | Account Aggregationタスクで **Refresh assigned, detected roles and promote additional entitlements** をオンにする必要があります (同梱のタスクはオンです)。既存のアイデンティティでは、同じオプションを指定して **Refresh Identity Cube** を実行してください。 |


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation by asking a question.

Perform an HTTP GET request on the following URL with the `ask` and `goal` query parameters:

```
GET https://docs.keeper.io/keeperpam/jp/secrets-manager/integrations/sailpoint-iiq-connector.md?ask=<question>&goal=<user_goal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is what the user is ultimately trying to achieve, the reason they need the answer. Sharing it helps GitBook give you a better, more relevant answer. A goal is most helpful when it describes the outcome the user wants rather than restating the question. For example, with `ask=how do I create an API token`, a goal like `automate deployments from our CI pipeline` lets GitBook tailor the answer to that use case.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
