> ## Documentation Index
> Fetch the complete documentation index at: https://docs.livingsecurity.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Okta 連携のセットアップ

> Okta を Living Security に接続し、ユーザーライフサイクル、認証、MFA、管理アクティビティのデータを取り込みます。

export const PublicIntegrationNextSteps = () => <>
    <hr />
    <h2>関連リソース</h2>
    <ul>
      <li>
        <a href="/ja/signals/data-sources">連携データがヒューマンリスクマネジメントのシグナルになる仕組みを確認する</a>
      </li>
      <li>
        <a href="https://www.livingsecurity.com/integrations">Living Security の連携を探す</a>
      </li>
      <li>
        <a href="https://app.livingsecurity.ai/">Living Security Platform を開く</a>
      </li>
      <li>
        <a href="https://www.livingsecurity.com/request-demo/">Living Security のデモをリクエストする</a>
      </li>
    </ul>
  </>;

export const EgressIpSafelist = ({system}) => <Note>
    <strong>Living Security の同期用の送信元 IP アドレス 4 つすべてを</strong>、{system} の許可リストに追加してください。{system} が CIDR 表記を要求する場合は、各アドレスを単一ホストとして <code>/32</code> を付けて入力してください。
    <br />
    <code>52.34.139.153/32</code>, <code>54.69.127.183/32</code>, <code>44.247.133.183/32</code>,{' '}
    <code>52.26.211.56/32</code>
    <br />
    <br />
    トラフィックは 4 つのいずれからも送信される可能性があるため、一部のみを許可リストに追加すると、同期が断続的に失敗します。これら 4 つのアドレスは、Living Security のすべてのリージョンで共通です。完全な一覧、変更ポリシー、トラブルシューティングについては、{' '}
    <a href="/ja/integrations/managing/egress-ip-addresses">
      連携の送信元 IP アドレスの設定
    </a>{' '}
    を参照してください。
  </Note>;

export const ConnectInPlatform = ({tile, children}) => <Step title="Living Security Platform で認証情報を入力します">
    <p>
      この手順は、Living Security にアクセスできる担当者(プログラムオーナー、または招待されている場合はシステム管理者(委任によるセットアップ))が実施します。
    </p>
    <ol>
      <li>
        <strong>設定 → 連携 → カタログ</strong>に移動し、<strong>{tile}</strong> タイルを見つけて、<strong>接続</strong>をクリックします。
      </li>
      <li>
        以下のフィールドに入力し、<strong>接続</strong>をクリックします。
      </li>
    </ol>
    {children}
  </Step>;

## 概要

Okta は、正規化されたユーザーライフサイクル、認証、MFA、管理アクティビティのデータを提供できます。確認済みの例は次のとおりです。

* `account.locked` — アカウントのロック
* `mfa.factor.activated` — 追加の MFA 要素の有効化
* `auth.login.failed` — ログインの失敗

どちらの接続方法でも、ユーザーディレクトリ（`/api/v1/users`）とシステムログ（`/api/v1/logs`）という同じ 2 つのストリームを読み取ります。詳細は[連携データがシグナルになる仕組み](/ja/signals/data-sources)を参照してください。

## 接続方法の選択

| | **Okta (SSWS)** | **Okta (OAuth 2.0)** |
| - | - | - |
| 認証情報 | 管理コンソールで作成する API トークン | 生成して登録するクライアント ID と秘密 JWK |
| セットアップ | 3 ステップ、鍵の生成は不要 | RSA 鍵ペアの生成を含む 9 ステップ |
| 必要な管理者ロール | 読み取り専用管理者（トークンの所有者に割り当て） | 読み取り専用管理者（アプリケーションに割り当て） |
| トークンの有効期間 | 30 日間使用しないと無効化される | 有効期限なし。鍵ペアのローテーションはお客様が行う |
| 使用する場合 | ほとんどの組織に推奨される方法 | セキュリティポリシーで長期間有効な API トークンが禁止されている場合 |

どちらの方法も必要なアクセス権は同じです。したがって、選択の基準は認証情報の取り扱いであり、プラットフォームが読み取れる内容ではありません。

***

## オプション A — API トークン (SSWS)

*推奨。*

### Living Security に必要な情報

| 認証情報 | 説明 |
| - | - |
| **API キー** | Okta の API トークン。接続ダイアログでは、このフィールドのラベルは **API キー** です |
| **テナントのサブドメイン** | `<tenant>.okta.com` の `<tenant>` — 完全な URL ではなく、サブドメインのみ |

### 前提条件

* サービスアカウントユーザーの作成、管理者ロールの割り当て、API トークンの作成を行うには、Okta の **Super Administrator** である必要があります。

<Steps>
  <Step title="トークンを所有するユーザーを作成する">
    Okta の API トークンは、作成したユーザーの権限を引き継ぎ、そのユーザーが無効化されると使用できなくなります。担当者の変更があっても接続が維持されるよう、個人の管理者アカウントではなく、専用のサービスアカウントを作成してください。

    1. 管理コンソールで、**Directory** → **人** に移動します。
    2. **Add person** をクリックし、`svc-livingsecurity@yourcompany.com` などのユーザーを作成します。
    3. アカウントを有効化します。
  </Step>

  <Step title="読み取り専用管理者ロールを割り当てる">
    プラットフォームは読み取りのみを行います。読み取り以上の権限を付与すると、トークンに使用されない権限を与えることになります。

    1. **セキュリティ** → **Administrators** に移動します。
    2. **Add administrator** をクリックし、前のステップで作成したユーザーを選択します。
    3. **Read-only Administrator** ロールを割り当てます。
    4. 保存します。

    <Note>
      管理者ロールがない場合、Okta Management API の呼び出しは `200 OK` で成功しますが、空のリストが返されます。ロールが不足していることを知らせる `403` はなく、ストリームは単に空のままとなります。
    </Note>
  </Step>

  <Step title="API トークンを作成する">
    1. ステップ 1 で作成した**サービスアカウントユーザーとして**管理コンソールにサインインします。トークンは、作成したアカウントの権限を引き継ぎます。
    2. **セキュリティ** → **API** に移動し、**Tokens** タブを開きます。
    3. **Create token** をクリックし、`Living Security Platform` などの名前を付けて、**Create token** をクリックします。
    4. トークンの値をこの時点でコピーしてください。Okta が表示するのは一度だけで、再表示されることはありません。

    <Warning>
      Okta は、**30 日間使用されなかった** API トークンを無効化します。この連携の同期は少なくとも 1 日に 1 回実行されるため、有効な接続では自動的にトークンが使用され続けます。1 か月間一時停止したままの接続には、新しいトークンが必要です。
    </Warning>

    <EgressIpSafelist system="Okta" />

    <Note>
      上記のアドレス一覧が必要となるのは、Okta 組織で**ネットワークゾーン**による API アクセス制限を行っている場合のみです。ほとんどの組織では該当しません。
    </Note>
  </Step>

  <Step title="テナントのサブドメインを確認する">
    管理コンソールの URL は `https://acme-admin.okta.com` のような形式です。テナントのサブドメインは `acme` です。`-admin` サフィックス、`.okta.com`、`https://` は含めません。
  </Step>

  <ConnectInPlatform tile="Okta (SSWS)">
    | フィールド | 値 |
    | - | - |
    | **API キー** | ステップ 3 で作成した API トークン |
    | **テナントのサブドメイン** | ステップ 4 で確認したサブドメイン（例: `acme`） |
  </ConnectInPlatform>
</Steps>

これで Okta (SSWS) に接続されました。

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

<AccordionGroup>
  <Accordion title="401 Unauthorized">
    トークンが無効であるか、失効されたか、30 日間使用されなかったために無効化されています。サービスアカウントユーザーとして新しいトークンを作成し、接続に再入力してください。
  </Accordion>

  <Accordion title="接続はできているが、すべてのストリームが空である">
    トークンの所有者に管理者ロールがありません。サービスアカウントに **Read-only Administrator** を割り当ててください（ステップ 2）。ロールがない場合、API はエラーではなく、空のリストとともに `200 OK` を返します。
  </Accordion>

  <Accordion title="担当者の変更後に同期が失敗する">
    トークンを作成したユーザーが無効化されると、そのトークンは使用できなくなります。このため、トークンは個人ではなくサービスアカウントに所属させる必要があります。
  </Accordion>
</AccordionGroup>

***

## オプション B — OAuth 2.0 サービスアプリケーション

セキュリティポリシーで長期間有効な API トークンが許可されていない場合は、この方法を使用します。トークンの代わりに、クライアント ID と、お客様が所有する RSA 鍵ペアを使用します。プラットフォームでは、**設定 → 連携 → カタログ** にある **Okta (OAuth 2.0)** タイルが該当します。

クライアント認証情報 (Client Credentials) で Okta に認証するには、次の情報が必要です。

1. **クライアント ID** - Okta API Services アプリケーションの一意の識別子。
2. **秘密鍵 (JWK)** - JSON Web Key 形式の RSA 秘密鍵。対応する公開鍵は Okta アプリケーションに登録されている必要があります。
3. **Okta ドメイン** - 完全なホスト名ではなく、Okta テナントのサブドメインのみ（例: `dev-12345678`）。
4. **スコープ** - Okta Management API のスコープをスペースで区切った一覧（例: `okta.users.read okta.logs.read`）。

このガイドでは、`private_key_jwt` 認証を使用して Okta で API Services アプリケーションを作成する手順を説明します。

### 前提条件:

* Okta アカウントが必要です。無料の開発者アカウントは [developer.okta.com](https://developer.okta.com/signup/) からサインアップできます。

#### ステップ 1: Okta API Services アプリケーションを作成する

1. [Okta 管理コンソール](https://login.okta.com/)にログインします。
2. 左側のサイドバーで、**Applications** > **Applications** に移動します。
3. **Create App Integration** をクリックします。
4. サインイン方法として **API Services** を選択し、**次** をクリックします。

<img src="https://raw.githubusercontent.com/NangoHQ/nango/master/docs/api-integrations/okta-cc/select-api-service.png" style={{maxWidth: "550px"}} />

5. アプリケーションに名前を付けて、**保存** をクリックします。
6. アプリケーションの **General** タブで **クライアント ID** を確認します。最後のステップで必要になります。
7. Client authentication を **Public key / Private key** に設定します。`okta.*` スコープは、この認証方法でのみサポートされています。

<img src="https://raw.githubusercontent.com/NangoHQ/nango/master/docs/api-integrations/okta-cc/select-public-private-key.png" style={{maxWidth: "550px"}} />

8. **Proof of possession (DPoP)** を無効にします。サポートされていません。

<img src="https://raw.githubusercontent.com/NangoHQ/nango/master/docs/api-integrations/okta-cc/disable-dpop.png" style={{maxWidth: "550px"}} />

<Note>
  アプリケーションは **API Services** として作成する必要があります。
</Note>

#### ステップ 2: RSA 鍵ペアを生成して登録する

##### Okta の鍵生成機能を使用する

Okta では、管理コンソール上で RSA 鍵ペアを直接生成できます。

1. 管理コンソールで、API Services アプリケーションを開きます。
2. **General** タブに移動し、**PUBLIC KEYS** セクションまでスクロールします。
3. **Add Key** をクリックし、**Generate new key** を選択します。
4. **保存** をクリックします。Okta が鍵ペアを生成し、**秘密鍵 (JWK)** を一度だけ表示します。
5. 秘密鍵の JSON をすぐにコピーして保存してください。再表示されることはありません。

<img src="https://raw.githubusercontent.com/NangoHQ/nango/master/docs/api-integrations/okta-cc/create-public-key.png" style={{maxWidth: "550px"}} />

6. 公開鍵は自動的にアプリケーションに登録されます。

<Note>
  ダイアログを閉じる前に、秘密 JWK をコピーしてください。最後のステップで、Living Security Platform の **秘密鍵** フィールドに貼り付けます。
</Note>

##### 独自の鍵を作成する

Okta は API Services アプリで `private_key_jwt` を使用します。RSA 鍵ペアを生成し、**公開** JWK を Okta に登録して、**秘密** JWK を Living Security Platform に提供します。

次の Node.js スクリプト（Node.js 18 以上が必要）を使用して、**秘密 JWK を生成します**。

```javascript theme={null}
const { generateKeyPairSync } = require('crypto');
const { privateKey, publicKey } = generateKeyPairSync('rsa', { modulusLength: 2048 });

const privateJwk = privateKey.export({ format: 'jwk' });
const publicJwk  = publicKey.export({ format: 'jwk' });

// Assign a kid — must match between private and public JWK
const kid = require('crypto').randomUUID();
privateJwk.kid = kid;
publicJwk.kid  = kid;

console.log('=== PUBLIC JWK (upload to Okta) ===');
console.log(JSON.stringify(publicJwk, null, 2));
console.log('\n=== PRIVATE JWK (paste into the Living Security Platform) ===');
console.log(JSON.stringify(privateJwk));
```

**公開 JWK を Okta に登録します。**

1. 管理コンソールで、API Services アプリケーションを開きます。
2. **General** タブに移動し、**PUBLIC KEYS** セクションまでスクロールします。
3. **Add Key** をクリックし、上記のスクリプトが出力した**公開 JWK の JSON** を貼り付けて、**保存** をクリックします。

<Note>
  Living Security Platform に貼り付けるのは秘密 JWK です。これにはすべての鍵素材（`d`、`p`、`q`、`dp`、`dq`、`qi`）と `kid` が含まれます。機密として厳重に管理してください。
</Note>

#### ステップ 3: Okta ドメインを確認する

Okta テナントのサブドメインのみを入力します。`.okta.com` より前の部分です。

* 管理コンソールでは、ブラウザーのアドレスバーに `https://dev-12345678-admin.okta.com` のような URL が表示されます。
* **Okta ドメイン** はサブドメインのみ（例: `dev-12345678`）であり、`dev-12345678.okta.com` ではありません。
* または、管理コンソールの **設定** > **Account** で Okta ドメインを確認し、そのサブドメイン部分を使用します。

#### ステップ 4: アプリケーションに API スコープを付与する

Okta では、すべてのトークンリクエストに少なくとも 1 つのスコープが必要です。アプリケーションが特定のスコープをリクエストするには、事前にそれらを付与しておく必要があります。

1. 管理コンソールで、**Applications** > **Applications** に移動し、対象のアプリケーションを開きます。
2. **Okta API Scopes** タブをクリックします。
3. 連携に必要なスコープ（`okta.users.read` と `okta.logs.read`）を付与します。

利用可能なスコープの全一覧は、[Okta Management API リファレンス](https://developer.okta.com/docs/api/oauth2/#okta-admin-management)を参照してください。

#### ステップ 5: アプリケーションに管理者ロールを割り当てる

スコープの付与だけでは不十分です。アプリケーションに管理者ロールがない場合、Okta Management API のエンドポイント（例: `/api/v1/users`）は、何も通知せずに空の `200 []` レスポンスを返します。少なくとも **Read-Only Administrator** を割り当てる必要があります。

1. 管理コンソールで、**セキュリティ** > **Administrators** に移動します（または、**Applications** > **Applications** > 対象のアプリ > **Admin roles** に移動します）。
2. **Add administrator assignment** をクリックし、API Services アプリケーションを選択します。

<img src="https://raw.githubusercontent.com/NangoHQ/nango/master/docs/api-integrations/okta-cc/admin-role-dropdown.png" style={{maxWidth: "550px"}} />

3. **Read-Only Administrator** ロール（または、必要なスコープに応じてそれ以上のロール）を割り当てます。
4. **保存** をクリックします。

<img src="https://raw.githubusercontent.com/NangoHQ/nango/master/docs/api-integrations/okta-cc/add-admin-role.png" style={{maxWidth: "550px"}} />

<Note>
  管理者ロールがない場合、API 呼び出しは `200 OK` で成功しますが、結果は空となり、問題を示す `403` エラーも表示されません。
</Note>

#### ステップ 6: Living Security Platform に認証情報を入力する

**クライアント ID**、**秘密鍵 (JWK)**、**Okta ドメイン**、**スコープ**が揃ったら、次の手順を実行します。

1. Okta (Client Credentials) で認証するためのフォームを開きます。
2. **クライアント ID** を入力します。
3. **秘密鍵 (JWK)** を貼り付けます。上記のスクリプトで出力された JSON オブジェクト全体を、1 行でも整形された形式でも構いません。
4. **Okta ドメイン** を、テナントのサブドメインのみで入力します（例: `dev-12345678`）。
5. **スコープ** をスペース区切りの一覧で入力します（例: `okta.users.read okta.logs.read`）。
6. フォームを送信すると、認証が完了します。

これで Okta (Client Credentials) に接続されました。

***

<Note>本ドキュメントの一部は、[Elastic License 2.0](https://github.com/NangoHQ/nango?tab=License-1-ov-file#readme) に基づいて使用されている [Nango](https://nango.dev/docs/) のドキュメントを翻案したものです。</Note>

<PublicIntegrationNextSteps />


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.