Okta User Context ログを収集する
このドキュメントでは、サードパーティ API を使用して Google Security Operations フィードを設定し、Okta ユーザー コンテキスト ログを収集する方法について説明します。
始める前に
次の前提条件を満たしていることを確認します。
- Google SecOps インスタンス
- Okta テナントまたは管理コンソールへの特権アクセス
- Okta での API トークン作成権限
IP 許可リストを構成する
フィードを作成する前に、Okta のファイアウォールまたはネットワーク設定で Google SecOps の IP 範囲を許可リストに登録する必要があります。
Google SecOps の IP 範囲を取得する
- Google IP アドレス範囲の JSON ファイルから IP 範囲を取得します。
IP 範囲を Okta ユーザー コンテキストに追加する
- Okta 管理コンソールにログインします。
- [セキュリティ] > [ネットワーク] に移動します。
- [IP アドレス制限] で、[編集] をクリックします。
- 各 Google SecOps IP 範囲を CIDR 表記で信頼できる IP アドレスに追加します。
- [保存] をクリックします。
Okta User Context API へのアクセスを構成する
Google SecOps がユーザー コンテキスト データを取得できるようにするには、読み取り権限を持つ API トークンを作成する必要があります。
API トークンを作成する
- Okta 管理コンソールにログインします。
- [セキュリティ] > [API] に移動します。
- [トークン] タブを選択します。
- [トークンの作成] をクリックします。
- 次の構成の詳細を入力します。
- 名前: わかりやすい名前を入力します(例:
Google SecOps Integration)。 - 説明(省略可): 説明を入力します。
- 名前: わかりやすい名前を入力します(例:
- [トークンの作成] をクリックします。
API 認証情報を記録する
API トークンを作成すると、次の認証情報が届きます。
- API トークン: API トークンの値(例:
00QCGr-1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1)
必要な API 権限
API トークンには、Okta で次の権限が必要です。
| 権限/ロール | アクセスレベル | 目的 |
|---|---|---|
| 読み取り専用管理者 | 読み取り | ユーザー プロファイル データにアクセスする |
| 特権管理者 | 読み取り | すべてのユーザーデータへの完全なアクセス |
フィードを設定する
フィードを構成する手順は次のとおりです。
- [SIEM 設定] > [フィード] に移動します。
- [Add New Feed] をクリックします。
- 次のページで [単一フィードを設定] をクリックします。
- [フィード名] フィールドに、フィードの名前を入力します(例:
Okta User Context)。 - [ソースタイプ] として [サードパーティ API] を選択します。
- [ログタイプ] として [Okta User Context] を選択します。
- [次へ] をクリックします。
次の入力パラメータの値を指定します。
Authentication HTTP header: 認証情報を次の形式で入力します。
Authorization:SSWS your-api-token- 次に例を示します。
Authorization:SSWS 00QCGr-1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1
- 次に例を示します。
API Hostname: Okta インスタンスの完全修飾ドメイン名(構成されている可能性のあるカスタム ドメインではなく、example.okta.com など)。
- 次に例を示します。
company.okta.com
- 次に例を示します。
Manager ID Reference Field(マネージャー ID 参照フィールド): Okta 以外の ID を使用してマネージャーを参照する場合に必要な ID(省略可)。
アセットの名前空間: アセットの名前空間。
Ingestion labels: このフィードのイベントに適用されるラベル。
[次へ] をクリックします。
[Finalize] 画面で新しいフィードの設定を確認し、[送信] をクリックします。
設定が完了すると、フィードは Okta User Context インスタンスからログを時系列順に取得し始めます。
リージョン エンドポイント
Okta では、組織の地域に基づいて異なる API エンドポイントが使用されます。
| 地域 | ベース URL / ホスト名 |
|---|---|
| 米国(デフォルト) | {org-name}.okta.com |
| EU(EMEA) | {org-name}.okta-emea.com |
| アジア太平洋 | {org-name}.okta.com.au |
| プレビュー(テスト) | {org-name}.oktapreview.com |
Okta インスタンスのリージョンに対応するホスト名を使用します。
API レート上限
Okta API には次のレート制限があります。
- デフォルトのレート制限: ほとんどのエンドポイントで 1 分あたり 600 件のリクエスト
- システムログ API: 1 分あたり 60 件のリクエスト
- ユーザー エンドポイント: 1 分あたり 600 件のリクエスト
Google SecOps は、指数バックオフを使用してレート制限を自動的に処理します。問題が発生した場合は、Okta サポートに連絡して API 上限を引き上げてください。
UDM マッピング テーブル
| ログフィールド | UDM マッピング | ロジック |
|---|---|---|
activated |
event.idm.entity.entity.labels |
activated が存在する場合、その値はキー「activated」で Key-Value ペアとして追加されます。 |
created |
event.idm.entity.entity.labels |
created が存在する場合、その値はキー「created」で Key-Value ペアとして追加されます。 |
profile.costCenter |
event.idm.entity.entity.labels |
profile.costCenter が存在する場合、その値はキー「costCenter」で Key-Value ペアとして追加されます。 |
profile.Function |
event.idm.entity.entity.labels |
profile.Function が存在する場合、その値はキー「Function」で Key-Value ペアとして追加されます。 |
statusChanged |
event.idm.entity.entity.labels |
statusChanged が存在する場合、その値はキー「statusChanged」で Key-Value ペアとして追加されます。 |
type.id |
event.idm.entity.entity.labels |
type.id が存在する場合は、その値がキー「type_id」で Key-Value ペアとして追加されます。 |
profile.location |
event.idm.entity.entity.location.name |
profile.location から取得された値。 |
profile.AD_ObjectGUID |
event.idm.entity.entity.user.attribute.labels |
profile.AD_ObjectGUID が存在する場合、その値はキー「AD_ObjectGUID」で Key-Value ペアとして追加されます。 |
profile.ADpwdLastSet |
event.idm.entity.entity.user.attribute.labels |
profile.ADpwdLastSet が存在する場合、その値はキー「ADpwdLastSet」で Key-Value ペアとして追加されます。 |
profile.AFF_Code |
event.idm.entity.entity.user.attribute.labels |
profile.AFF_Code が存在する場合、その値はキー「AFF_Code」で Key-Value ペアとして追加されます。 |
profile.Desk_Location_WD |
event.idm.entity.entity.user.attribute.labels |
profile.Desk_Location_WD が存在する場合、その値はキー「Desk_Location_WD」で Key-Value ペアとして追加されます。 |
profile.Mailing_Address_WD |
event.idm.entity.entity.user.attribute.labels |
profile.Mailing_Address_WD が存在する場合、その値はキー「Mailing_Address_WD」で Key-Value ペアとして追加されます。 |
profile.Manager_UPN |
event.idm.entity.entity.user.attribute.labels |
profile.Manager_UPN が存在する場合、その値はキー「Manager_UPN」で Key-Value ペアとして追加されます。 |
profile.PRIVATE_CONF_Profile |
event.idm.entity.entity.user.attribute.labels |
profile.PRIVATE_CONF_Profile が存在する場合、その値はキー「PRIVATE_CONF_Profile」で Key-Value ペアとして追加されます。 |
profile.Region_WD |
event.idm.entity.entity.user.attribute.labels |
profile.Region_WD が存在する場合、その値はキー「Region_WD」で Key-Value ペアとして追加されます。 |
profile.Subsidiary_Company |
event.idm.entity.entity.user.attribute.labels |
profile.Subsidiary_Company が存在する場合、その値はキー「Subsidiary_Company」で Key-Value ペアとして追加されます。 |
profile.Telephone_Work |
event.idm.entity.entity.user.attribute.labels |
profile.Telephone_Work が存在する場合、その値はキー「Telephone_Work」で Key-Value ペアとして追加されます。 |
profile.Temp_WD_Primary_Email |
event.idm.entity.entity.user.attribute.labels |
profile.Temp_WD_Primary_Email が存在する場合、その値はキー「Temp_WD_Primary_Email」で Key-Value ペアとして追加されます。 |
profile.VMware_WS1_Username |
event.idm.entity.entity.user.attribute.labels |
profile.VMware_WS1_Username が存在する場合、その値はキー「VMware_WS1_Username」で Key-Value ペアとして追加されます。 |
profile.Work_Street_Address_WD |
event.idm.entity.entity.user.attribute.labels |
profile.Work_Street_Address_WD が存在する場合、その値はキー「Work_Street_Address_WD」で Key-Value ペアとして追加されます。 |
profile.Workato_WD_Primary_Email |
event.idm.entity.entity.user.attribute.labels |
profile.Workato_WD_Primary_Email が存在する場合、その値はキー「Workato_WD_Primary_Email」で Key-Value ペアとして追加されます。 |
profile.Workday_ID |
event.idm.entity.entity.user.attribute.labels |
profile.Workday_ID が存在する場合、その値はキー「Workday_ID」で Key-Value ペアとして追加されます。 |
profile.Worker_Type_WD |
event.idm.entity.entity.user.attribute.labels |
profile.Worker_Type_WD が存在する場合、その値はキー「Worker_Type_WD」で Key-Value ペアとして追加されます。 |
profile.businessUnit |
event.idm.entity.entity.user.attribute.labels |
profile.businessUnit が存在する場合、その値はキー「businessUnit」で Key-Value ペアとして追加されます。 |
profile.companyName |
event.idm.entity.entity.user.attribute.labels |
profile.companyName が存在する場合、その値はキー「companyName」で Key-Value ペアとして追加されます。 |
profile.contingentSupplierName |
event.idm.entity.entity.user.attribute.labels |
profile.contingentSupplierName が存在する場合、その値はキー「contingentSupplierName」で Key-Value ペアとして追加されます。 |
profile.conversationId |
event.idm.entity.entity.user.attribute.labels |
profile.conversationId が存在する場合、その値はキー「conversationId」で Key-Value ペアとして追加されます。 |
profile.distinguishedName |
event.idm.entity.entity.user.attribute.labels |
profile.distinguishedName が存在する場合、その値はキー「distinguishedName」で Key-Value ペアとして追加されます。 |
profile.division |
event.idm.entity.entity.user.attribute.labels |
profile.division が存在する場合、その値はキー「division」で Key-Value ペアとして追加されます。 |
profile.emailPrefix |
event.idm.entity.entity.user.attribute.labels |
profile.emailPrefix が存在する場合、その値はキー「emailPrefix」で Key-Value ペアとして追加されます。 |
profile.employeeType |
event.idm.entity.entity.user.attribute.labels |
profile.employeeType が存在する場合、その値はキー「employeeType」で Key-Value ペアとして追加されます。 |
profile.homePostalAddress |
event.idm.entity.entity.user.attribute.labels |
profile.homePostalAddress が存在する場合、その値はキー「homePostalAddress」で Key-Value ペアとして追加されます。 |
profile.isManager |
event.idm.entity.entity.user.attribute.labels |
profile.isManager が存在する場合、その値はキー「isManager」で Key-Value ペアとして追加されます。 |
lastLogin |
event.idm.entity.entity.user.attribute.labels |
lastLogin が存在する場合、その値はキー「lastLogin」で Key-Value ペアとして追加されます。 |
profile.leaveOfAbsence |
event.idm.entity.entity.user.attribute.labels |
profile.leaveOfAbsence が存在する場合、その値はキー「leaveOfAbsence」で Key-Value ペアとして追加されます。 |
profile.managerDn |
event.idm.entity.entity.user.attribute.labels |
profile.managerDn が存在する場合、その値はキー「managerDn」で Key-Value ペアとして追加されます。 |
profile.payGroup |
event.idm.entity.entity.user.attribute.labels |
profile.payGroup が存在する場合、その値はキー「payGroup」で Key-Value ペアとして追加されます。 |
profile.wdemployeeID |
event.idm.entity.entity.user.attribute.labels |
profile.wdemployeeID が存在する場合、その値はキー「wdemployeeID」で Key-Value ペアとして追加されます。 |
profile.zipCode |
event.idm.entity.entity.user.attribute.labels |
profile.zipCode が存在する場合は、その値がキー「zipCode」で Key-Value ペアとして追加されます。 |
profile.userType |
event.idm.entity.entity.user.attribute.roles |
profile.userType が存在する場合は、その値がロールの配列に追加されます。 |
profile.organization、profile.company |
event.idm.entity.entity.user.company_name |
profile.organization から取得された値。profile.organization が存在しない場合は profile.company。 |
profile.department |
event.idm.entity.entity.user.department |
profile.department から取得された値。 |
profile.email、profile.secondEmail、profile.login |
event.idm.entity.entity.user.email_addresses |
profile.email、profile.secondEmail、profile.login の値(メールで重複がない場合)がこのフィールドに統合されます。 |
profile.employeeNumber |
event.idm.entity.entity.user.employee_id |
profile.employeeNumber から取得された値。 |
profile.firstName、profile.Preferred_First_Name |
event.idm.entity.entity.user.first_name |
profile.firstName から取得された値。profile.firstName が存在しない場合は profile.Preferred_First_Name。 |
profile.EmployeeWorkGroup |
event.idm.entity.entity.user.group_identifiers |
profile.EmployeeWorkGroup から取得された値。 |
profile.HireDate、profile.hiredate |
event.idm.entity.entity.user.hire_date |
profile.HireDate が存在しない場合、値は profile.HireDate または profile.hiredate から解析されます。 |
profile.lastName、profile.preferred_Last_Name |
event.idm.entity.entity.user.last_name |
profile.lastName または profile.preferred_Last_Name のいずれかが存在する場合、profile.lastName から取得された値。 |
lastLogin |
event.idm.entity.entity.user.last_login_time |
値は lastLogin から解析されます。 |
passwordChanged |
event.idm.entity.entity.user.last_password_change_time |
値は passwordChanged から解析されます。 |
profile.manager、profile.managerEmail、profile.managerId |
event.idm.entity.entity.user.managers |
profile.manager の user_display_name、profile.managerEmail の email_addresses、profile.managerId の employee_id を含むオブジェクトが入力されます。 |
profile.city、profile.firstBaseCity |
event.idm.entity.entity.user.office_address.city |
profile.city から取得された値。profile.city が存在しない場合は profile.firstBaseCity。 |
profile.countryCode、profile.country |
event.idm.entity.entity.user.office_address.country_or_region |
profile.countryCode から取得された値。profile.countryCode が存在しない場合は profile.country。 |
profile.streetAddress |
event.idm.entity.entity.user.personal_address.name |
profile.streetAddress から取得された値。 |
profile.state |
event.idm.entity.entity.user.personal_address.state |
profile.state から取得された値。 |
profile.primaryPhone、profile.mobilePhone、profile.mobile |
event.idm.entity.entity.user.phone_numbers |
profile.primaryPhone、profile.mobilePhone、profile.mobile の値がこのフィールドに統合されます。 |
profile.terminationDate、profile.terminationdate |
event.idm.entity.entity.user.termination_date |
profile.terminationDate が存在しない場合、値は profile.terminationDate または profile.terminationdate から解析されます。 |
profile.title |
event.idm.entity.entity.user.title |
profile.title から取得された値。 |
status |
event.idm.entity.entity.user.user_authentication_status |
status からマッピング: ACTIVE/RECOVERY/LOCKED_OUT/PASSWORD_EXPIRED -> ACTIVE、SUSPENDED -> SUSPENDED、DEPROVISIONED -> DELETED、それ以外は UNKNOWN_AUTHENTICATION_STATUS。 |
profile.displayName |
event.idm.entity.entity.user.user_display_name |
profile.displayName から取得された値。 |
profile.samAccountName、profile.samaccountname、profile.login、profile.ldapUid |
event.idm.entity.entity.user.userid |
優先順位 profile.samAccountName、profile.samaccountname、profile.login(メール以外の場合)、profile.ldapUid(profile.login がメール以外の場合)が入力されます。 |
event.idm.entity.metadata.entity_type |
USER に設定します。 |
|
id |
event.idm.entity.metadata.product_entity_id |
id から取得された値。 |
event.idm.entity.metadata.product_name |
Identity Cloud に設定します。 |
|
event.idm.entity.metadata.vendor_name |
Okta に設定します。 |
さらにサポートが必要な場合 コミュニティ メンバーや Google SecOps のプロフェッショナルから回答を得ることができます。