Skip to main content

概要

Okta は、正規化されたユーザーライフサイクル、認証、MFA、管理アクティビティのデータを提供できます。確認済みの例は次のとおりです。
  • account.locked — アカウントのロック
  • mfa.factor.activated — 追加の MFA 要素の有効化
  • auth.login.failed — ログインの失敗
どちらの接続方法でも、ユーザーディレクトリ(/api/v1/users)とシステムログ(/api/v1/logs)という同じ 2 つのストリームを読み取ります。詳細は連携データがシグナルになる仕組みを参照してください。

接続方法の選択

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

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

推奨。

Living Security に必要な情報

前提条件

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

トークンを所有するユーザーを作成する

Okta の API トークンは、作成したユーザーの権限を引き継ぎ、そのユーザーが無効化されると使用できなくなります。担当者の変更があっても接続が維持されるよう、個人の管理者アカウントではなく、専用のサービスアカウントを作成してください。
  1. 管理コンソールで、Directory → 人 に移動します。
  2. Add person をクリックし、svc-livingsecurity@yourcompany.com などのユーザーを作成します。
  3. アカウントを有効化します。
2

読み取り専用管理者ロールを割り当てる

プラットフォームは読み取りのみを行います。読み取り以上の権限を付与すると、トークンに使用されない権限を与えることになります。
  1. セキュリティ → Administrators に移動します。
  2. Add administrator をクリックし、前のステップで作成したユーザーを選択します。
  3. Read-only Administrator ロールを割り当てます。
  4. 保存します。
管理者ロールがない場合、Okta Management API の呼び出しは 200 OK で成功しますが、空のリストが返されます。ロールが不足していることを知らせる 403 はなく、ストリームは単に空のままとなります。
3

API トークンを作成する

  1. ステップ 1 で作成したサービスアカウントユーザーとして管理コンソールにサインインします。トークンは、作成したアカウントの権限を引き継ぎます。
  2. セキュリティ → API に移動し、Tokens タブを開きます。
  3. Create token をクリックし、Living Security Platform などの名前を付けて、Create token をクリックします。
  4. トークンの値をこの時点でコピーしてください。Okta が表示するのは一度だけで、再表示されることはありません。
Okta は、30 日間使用されなかった API トークンを無効化します。この連携の同期は少なくとも 1 日に 1 回実行されるため、有効な接続では自動的にトークンが使用され続けます。1 か月間一時停止したままの接続には、新しいトークンが必要です。
上記のアドレス一覧が必要となるのは、Okta 組織でネットワークゾーンによる API アクセス制限を行っている場合のみです。ほとんどの組織では該当しません。
4

テナントのサブドメインを確認する

管理コンソールの URL は https://acme-admin.okta.com のような形式です。テナントのサブドメインは acme です。-admin サフィックス、.okta.com、https:// は含めません。
これで Okta (SSWS) に接続されました。

トラブルシューティング

トークンが無効であるか、失効されたか、30 日間使用されなかったために無効化されています。サービスアカウントユーザーとして新しいトークンを作成し、接続に再入力してください。
トークンの所有者に管理者ロールがありません。サービスアカウントに Read-only Administrator を割り当ててください(ステップ 2)。ロールがない場合、API はエラーではなく、空のリストとともに 200 OK を返します。
トークンを作成したユーザーが無効化されると、そのトークンは使用できなくなります。このため、トークンは個人ではなくサービスアカウントに所属させる必要があります。

オプション 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 からサインアップできます。

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

  1. Okta 管理コンソールにログインします。
  2. 左側のサイドバーで、Applications > Applications に移動します。
  3. Create App Integration をクリックします。
  4. サインイン方法として API Services を選択し、次 をクリックします。
  1. アプリケーションに名前を付けて、保存 をクリックします。
  2. アプリケーションの General タブで クライアント ID を確認します。最後のステップで必要になります。
  3. Client authentication を Public key / Private key に設定します。okta.* スコープは、この認証方法でのみサポートされています。
  1. Proof of possession (DPoP) を無効にします。サポートされていません。
アプリケーションは API Services として作成する必要があります。

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

Okta の鍵生成機能を使用する
Okta では、管理コンソール上で RSA 鍵ペアを直接生成できます。
  1. 管理コンソールで、API Services アプリケーションを開きます。
  2. General タブに移動し、PUBLIC KEYS セクションまでスクロールします。
  3. Add Key をクリックし、Generate new key を選択します。
  4. 保存 をクリックします。Okta が鍵ペアを生成し、秘密鍵 (JWK) を一度だけ表示します。
  5. 秘密鍵の JSON をすぐにコピーして保存してください。再表示されることはありません。
  1. 公開鍵は自動的にアプリケーションに登録されます。
ダイアログを閉じる前に、秘密 JWK をコピーしてください。最後のステップで、Living Security Platform の 秘密鍵 フィールドに貼り付けます。
独自の鍵を作成する
Okta は API Services アプリで private_key_jwt を使用します。RSA 鍵ペアを生成し、公開 JWK を Okta に登録して、秘密 JWK を Living Security Platform に提供します。 次の Node.js スクリプト(Node.js 18 以上が必要)を使用して、秘密 JWK を生成します。
公開 JWK を Okta に登録します。
  1. 管理コンソールで、API Services アプリケーションを開きます。
  2. General タブに移動し、PUBLIC KEYS セクションまでスクロールします。
  3. Add Key をクリックし、上記のスクリプトが出力した公開 JWK の JSON を貼り付けて、保存 をクリックします。
Living Security Platform に貼り付けるのは秘密 JWK です。これにはすべての鍵素材(d、p、q、dp、dq、qi)と kid が含まれます。機密として厳重に管理してください。

ステップ 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 リファレンスを参照してください。

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

スコープの付与だけでは不十分です。アプリケーションに管理者ロールがない場合、Okta Management API のエンドポイント(例: /api/v1/users)は、何も通知せずに空の 200 [] レスポンスを返します。少なくとも Read-Only Administrator を割り当てる必要があります。
  1. 管理コンソールで、セキュリティ > Administrators に移動します(または、Applications > Applications > 対象のアプリ > Admin roles に移動します)。
  2. Add administrator assignment をクリックし、API Services アプリケーションを選択します。
  1. Read-Only Administrator ロール(または、必要なスコープに応じてそれ以上のロール)を割り当てます。
  2. 保存 をクリックします。
管理者ロールがない場合、API 呼び出しは 200 OK で成功しますが、結果は空となり、問題を示す 403 エラーも表示されません。

ステップ 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) に接続されました。
本ドキュメントの一部は、Elastic License 2.0 に基づいて使用されている Nango のドキュメントを翻案したものです。