このドキュメントでは、 Netskope Cloud ExchangeプラットフォームのCloud Risk Exchangeモジュールを使用して Okta プラグインを構成する方法について説明します。 Okta プラグインは、Okta プラットフォームからユーザー ( [ディレクトリ] > [ユーザー]ページ)、そのリスク レベル、およびアプリケーション ([アプリケーション]ページ)を取得します。 このプラグインは、Oktaユーザーに対して、グループへのユーザーの追加、グループからのユーザーの削除、ユーザーリスクのアップサート、リスクスコアのプッシュなどのアクションも実行します( セキュリティイベントプロバイダー)。
プッシュリスクスコアは、グループメンバーシップの変更によるアクションを可能にします Okta認証でNetskopeリスクの高いユーザーを特定し、リスクシグナルをOkta Identity Threat Protectionと共有します。 Netskope正規化スコアマッピング = リスクレベル低: 875、リスクレベル中: 625、リスクレベル高: 375、リスクレベルなし。
前提条件
この統合を完了するには、以下が必要です。
- Netskopeテナント(または、例えば本番環境と開発/テスト環境など、複数のテナント)。
- Netskope Cloud Exchangeテナントには、テナントプラグインとリスクエクスチェンジプラグインが既に設定済みです。
- Netskopeテナントには既に高度なUEBAが設定されています。高度なUEBAのベストプラクティスについては、こちらの記事を参照してください。
- グループ操作を実行するための、OktaドメインおよびAPIトークンへのアクセス権。
- プッシュリスクスコアの場合:
- 以下の手順で生成された公開鍵は、公開して保管する必要があります。
- Netskope Advanced UEBAライセンス。
- Okta Identity Protectionのライセンス。詳細はこちらをご覧ください。
- 以下のいずれかのホストへの接続:
- https://<user>.oktapreview.com/
- https://<user>.okta.com/
- https://<user>.okta-emea.com/
プラグインには、上記で挙げたURLのうちいずれか1つだけが必要です。
Oktaプラグインのサポート
Oktaは、ディレクトリ>プロファイルページからユーザーとそのリスクレベルを、アプリケーションページからアプリケーションを取得する機能をサポートしています。このプラグインは、ユーザーに対して様々な操作を実行することをサポートします。
| 取得したデータの種類 |
|
| Actions |
|
マッピング
アプリケーションのプルマッピング
| プラグインフィールド | 想定されるデータ型 | 提案されたフィールド名 | 提案された集約戦略 |
|---|---|---|---|
| ID | String | Okta ID | Unique |
| 名前 | String | Okta App Name | Unique |
| ラベル | String | Okta App Label | Overwrite |
| 状態 | String | Okta Status | Overwrite |
| SignOnMode | String | Oktaサインオンモード | Overwrite |
ユーザー向けプルマッピング
| プラグインフィールドラベル | 想定されるデータ型 | 推奨フィールドラベル | 提案された集約戦略 |
|---|---|---|---|
| ユーザーID | String | ユーザーID | Unique |
| 主要電子メール | String | 主要電子メール | Unique |
| ログインユーザー名(電子メール) | String | Login Email | Unique |
| 2回目の電子メール | String | 2回目の電子メール | Overwrite |
| 名 | String | 名 | Overwrite |
| 姓 | String | 姓 | Overwrite |
| リスクレベル | String | リスクレベル | Overwrite |
| Netskope正規化スコア | Number | 正規化スコア | Overwrite |
スコアマッピング
Oktaで想定されるスコアの種類は、低、中、高の3つです。スキーマを作成する際に、上記の Okta でサポートされているスコアとともに、スコアが文字列としてマッピングされていることを確認してください。 プッシュリスクスコアアクション。
マッピングは 取得されたユーザー、それぞれの詳細情報、およびアプリケーションの詳細を表示します。 プラグイン設定時にマッピングされたフィールドは、データ取得後にレコードページに表示されます。以下は、プラグインの設定時に使用すべき推奨マッピングです。 プラグインの設定時に使用してください。
過去のスコアフィールドマッピング
Oktaの「リスクスコアをプッシュ」アクションの過去のスコアレベルを保存できるフィールドを作成します。
- スキーマエディタのページで、 +アイコンをクリックしてフィールドを追加します。
- フィールドラベルを入力してください。
- データ タイプとしてRange Map Select 。
- スコアマッピングフィールドで、 Netskope正規化スコアを保存するフィールドを選択します(これはマージフィールドである必要があります)。
- 下記の画像に従ってマッピングを追加してください。
- 集計戦略パラメーターにはAppend Select 。
- Save .
をクリックしてください
権限
APIトークンを設定するには、スーパー管理者権限を持っていることを確認してください。
APIの詳細
使うAPI一覧
| APIの詳細 | 方法 | Endpoint |
|---|---|---|
| すべてのユーザーを取得 | 得る | /api/v1/users |
| リスクレベルを取得 | 得る | /api/v1/users/ <user_id>/risk |
| すべてのグループを取得 | 得る | /api/v1/groups |
| グループを作成する | 役職 | /api/v1/groups |
| グループに追加 | PUT | /api/v1/groups/ <group_id>/users/<user_id> |
| グループから削除 | DELETE | /api/v1/groups/ <group_id>/users/<user_id> |
| セキュリティプロバイダーを生成する | 役職 | /api/v1/securityイベントプロバイダー |
| すべてのセキュリティイベントプロバイダーを取得します | 得る | /api/v1/securityイベントプロバイダー |
| セキュリティイベントプロバイダーを更新する | PUT | /api/v1/security -events-providers/{provider_id} |
| アップサートユーザーリスク | PUT | /api/v1/users/ <user_id>/risk |
| リスクスコアを押し上げる | 役職 | /security/api/v1/security-events |
| アプリケーションの取得 | 得る | /api/v1/apps |
SETトークンの生成 – プッシュリスクスコアアクション用:SETトークンは JWTライブラリ RS256アルゴリズムとイベントスキーマによって生成されます。
すべてのユーザーを取得
Endpoint: {{base_url}}/api/v1/users
Method: GET
Data
| パラメータ | Value |
|---|---|
| limit | 200 |
Headers
| 鍵 | Value |
|---|---|
| Accept | アプリケーション/json |
| Content-Type | アプリケーション/json |
| okta-response | omitCredentials、omitCredentialsLinks、omitTransitioningToStatus |
| Authorization | SSWS <TOKEN> |
Sample Response
[
{
"id": "00ua91artpqbRy3J61d7",
"status": "STAGED",
"created": "2023-09-27T09:50:36.000Z",
"activated": null,
"statusChanged": null,
"lastLogin": null,
"lastUpdated": "2023-09-27T12:24:26.000Z",
"passwordChanged": null,
"type": {
"id": "oty72m75ugKF1nf6T1d7"
},
"profile": {
"firstName": "KeshavTest",
"lastName": "KeshavTest",
"mobilePhone": null,
"secondEmail": null,
"login": "keshavtest@hackermob.co.in",
"email": "keshavtest@hackermob.co.in"
},
"credentials": {
"provider": {
"type": "OKTA",
"name": "OKTA"
}
},
"_links": {
"self": {
"href": "https://cae-netskope.oktapreview.com/api/v1/users/00ua91artpqbRy3J61d7"
}
}
}
]
すべてのグループを取得
Endpoint: {{base_url}}/api/v1/groups
Method: GET
Params
| パラメータ | Value |
|---|---|
| limit | 200 |
| filter | type eq OKTA_GROUP |
Headers
| 鍵 | Value |
|---|---|
| Accept | アプリケーション/json |
| Content-Type | アプリケーション/json |
| Authorization | SSWS <TOKEN> |
Sample Response
[
{
"id": "00g8lfgw3bGRdOEIw1d7",
"created": "2023-06-20T09:31:38.000Z",
"lastUpdated": "2023-06-20T09:31:38.000Z",
"lastMembershipUpdated": "2023-10-18T10:47:25.000Z",
"objectClass": [
"okta:user_group"
],
"type": "OKTA_GROUP",
"profile": {
"name": "addchiragtogroup",
"description": "Created From Netskop CRE"
},
"_links": {
"logo": [
{
"name": "medium",
"href": "https://op3static.oktacdn.com/assets/img/logos/groups/odyssey/okta-medium.30ce6d4085dff29412984e4c191bc874.png",
"type": "image/png"
},
{
"name": "large",
"href": "https://op3static.oktacdn.com/assets/img/logos/groups/odyssey/okta-large.c3cb8cda8ae0add1b4fe928f5844dbe3.png",
"type": "image/png"
}
],
"users": {
"href": "https://cae-netskope.oktapreview.com/api/v1/groups/00g8lfgw3bGRdOEIw1d7/users"
},
"apps": {
"href": "https://cae-netskope.oktapreview.com/api/v1/groups/00g8lfgw3bGRdOEIw1d7/apps"
}
}
},
|
グループを作成する
Endpoint: {{base_url}}/api/v1/groups
Method: POST
Data
{
"profile": {
"name": "<GROUP NAME>",
"description": "GROUP DESCRIPTION"
}
}
Headers
| 鍵 | Value |
|---|---|
| Accept | アプリケーション/json |
| Content-Type | アプリケーション/json |
| Authorization | SSWS<TOKEN> |
Sample Response
{
"id": "00gdpnanjcFNe98yE1d7",
"created": "2024-03-28T04:06:24.000Z",
"lastUpdated": "2024-03-28T04:06:24.000Z",
"lastMembershipUpdated": "2024-03-28T04:06:24.000Z",
"objectClass": [
"okta:user_group"
],
"type": "OKTA_GROUP",
"profile": {
"name": "West Coast Users2",
"description": "West Coast Users"
},
"_links": {
"logo": [
{
"name": "medium",
"href": "https://op3static.oktacdn.com/assets/img/logos/groups/odyssey/okta-medium.30ce6d4085dff29412984e4c191bc874.png",
"type": "image/png"
},
{
"name": "large",
"href": "https://op3static.oktacdn.com/assets/img/logos/groups/odyssey/okta-large.c3cb8cda8ae0add1b4fe928f5844dbe3.png",
"type": "image/png"
}
],
"users": {
"href": "https://cae-netskope.oktapreview.com/api/v1/groups/00gdpnanjcFNe98yE1d7/users"
},
"apps": {
"href": "https://cae-netskope.oktapreview.com/api/v1/groups/00gdpnanjcFNe98yE1d7/apps"
}
}
}
グループに追加
Endpoint: {{base_url}}/api/v1/groups/{{group_Id}}/users/{{user_Id}}
Method: PUT
Headers
| 鍵 | Value |
|---|---|
| Accept | アプリケーション/json |
| Content-Type | アプリケーション/json |
| Authorization | SSWS <TOKEN> |
Sample Response
204 - <No Content>
グループから削除
Endpoint: {{nase_url}}/api/v1/groups/{{group_Id}}/users/{{user_Id}}
Method: DELETE
Headers
| 鍵 | Value |
|---|---|
| Accept | アプリケーション/json |
| Content-Type | アプリケーション/json |
| Authorization | SSWS <TOKEN> |
Sample Response
204 <No Content>
セキュリティプロバイダーを生成する
Endpoint:{{base_url}}/api/v1/security-events-providers
Method: POST
Data
{
"name": "Netskope Security Events Provider",
"type": "Netskope",
"settings": {
"issuer": "<ISSUER URL>",
"jwks_url": "JWKS URL"
}
}
Headers
| 鍵 | Value |
|---|---|
| Accept | アプリケーション/json |
| Content-Type | アプリケーション/json |
| Authorization | SSWS <TOKEN> |
Sample Response
{
"id": "ssedpne7xpmtBACBk1d7",
"name": "Netskope Security Events Provider",
"type": "App",
"status": "ACTIVE",
"settings": {
"issuer": "https://tanushree12.pythonanywhere.com",
"jwks_url": "https://tanushree12.pythonanywhere.com/jwks"
},
"_links": {
"self": {
"href": "https://cae-netskope.oktapreview.com/api/v1/security-events-providers/ssedpne7xpmtBACBk1d7",
"hints": {
"allow": [
"GET",
"PUT",
"DELETE"
]
}
},
"deactivate": {
"href": "https://cae-netskope.oktapreview.com/api/v1/security-events-providers/ssedpne7xpmtBACBk1d7/lifecycle/deactivate",
"hints": {
"allow": [
"POST"
]
}
}
}
}
すべてのセキュリティイベントプロバイダーを取得します
Endpoint:{{base_url}}/api/v1/security-events-providers
Method: GET
Headers
| 鍵 | Value |
|---|---|
| Accept | アプリケーション/json |
| Content-Type | アプリケーション/json |
| Authorization | SSWS <TOKEN> |
Sample Response
[
{
"id": "ssedv9tn73Q679Pvw1d7",
"name": "SecurityABC",
"type": "App",
"status": "ACTIVE",
"settings": {
"issuer": "https://netskope-tech.workflows.okta.com/api/flo/b8a6fc8f1a6446fe0074fa7fc783150c/invoke",
"jwks_url": "https://netskope-tech.workflows.okta.com/api/flo/b8a6fc8f1a6446fe0074fa7fc783150c/invoke"
},
"_links": {
"self": {
"href": "https://cae-netskope.oktapreview.com/api/v1/security-events-providers/ssedv9tn73Q679Pvw1d7",
"hints": {
"allow": [
"GET",
"PUT",
"DELETE"
]
}
},
"deactivate": {
"href": "https://cae-netskope.oktapreview.com/api/v1/security-events-providers/ssedv9tn73Q679Pvw1d7/lifecycle/deactivate",
"hints": {
"allow": [
"POST"
]
}
}
}
},
{
"id": "ssedwd2i36lLkzfrJ1d7",
"name": "Netskope Security Events Provider",
"type": "Netskope",
"status": "ACTIVE",
"settings": {
"issuer": "https://trial-5192595.workflows.okta.com/",
"jwks_url": "https://trial-5192595.workflows.okta.com/api/flo/932a84212b5fc8c633c2255859fa565e/invoke"
},
"_links": {
"self": {
"href": "https://cae-netskope.oktapreview.com/api/v1/security-events-providers/ssedwd2i36lLkzfrJ1d7",
"hints": {
"allow": [
"GET",
"PUT",
"DELETE"
]
}
},
"deactivate": {
"href": "https://cae-netskope.oktapreview.com/api/v1/security-events-providers/ssedwd2i36lLkzfrJ1d7/lifecycle/deactivate",
"hints": {
"allow": [
"POST"
]
}
}
}
}
]
セキュリティイベントプロバイダーを更新する
Endpoint:{{base_url}}/api/v1/security-events-providers/{provider_id}
Method: PUT
Data
{
"name":"Netskope Security Events Provider",
"type":"Netskope CE",
"settings":{
"issuer":"https://tanushree1234.pythonanywhere.com",
"jwks_url":"https://tanushree1234.pythonanywhere.com/jwks"
}
}
Headers
| 鍵 | Value |
|---|---|
| Accept | アプリケーション/json |
| Content-Type | アプリケーション/json |
| Authorization | SSWS <TOKEN> |
Sample Response
{
"id": "ssedv9tn73Q679Pvw1d7",
"name": "SecurityABC",
"type": "Netskope CE",
"status": "ACTIVE",
"settings": {
"issuer": "https://tanushree1234.pythonanywhere.com",
"jwks_url": "https://tanushree1234.pythonanywhere.com/jwks"
},
"_links": {
"self": {
"href": "https://cae-netskope.oktapreview.com/api/v1/security-events-providers/ssedv9tn73Q679Pvw1d7",
"hints": {
"allow": [
"GET",
"PUT",
"DELETE"
]
}
},
"deactivate": {
"href": "https://cae-netskope.oktapreview.com/api/v1/security-events-providers/ssedv9tn73Q679Pvw1d7/lifecycle/deactivate",
"hints": {
"allow": [
"POST"
]
}
}
}
}
アップサートユーザーリスク
Endpoint: {{base_url}}/api/v1/users/00ufen752glXW1gMs1d7/risk
Headers
| 鍵 | Value |
|---|---|
| Accept | アプリケーション/json |
| Content-Type | アプリケーション/json |
| Authorization | SSWS <TOKEN> |
Method: PUT
Data:
{
"riskLevel": "<RISK_LEVEL>"
}
Headers
| 鍵 | Value |
|---|---|
| Accept | アプリケーション/json |
| Content-Type | アプリケーション/json |
| Authorization | SSWS <TOKEN> |
Sample Response
{
"riskLevel": "HIGH",
"reason": "Admin override risk",
"_links": {
"user": {
"href": "https://cae-netskope.oktapreview.com/api/v1/users/00ufen752glXW1gMs1d7",
"hints": {
"allow": [
"GET"
]
}
},
"self": {
"href": "https://cae-netskope.oktapreview.com/api/v1/users/00ufen752glXW1gMs1d7/risk",
"hints": {
"allow": [
"GET",
"PUT"
]
}
}
}
}
アプリケーションの取得
Endpoint: {{base_url}}/api/v1/apps
Method: GET
Data
| パラメータ | Value |
|---|---|
| limit | 200 |
Headers
| 鍵 | Value |
|---|---|
| Accept | アプリケーション/json |
| Content-Type | アプリケーション/json |
| Authorization | SSWS <TOKEN> |
Sample Response
[
{
"id": "0oa72m75tw1XO0r3D1d7",
"name": "saasure",
"label": "Okta Admin Console",
"status": "ACTIVE",
"lastUpdated": "2023-02-21T16:38:58.000Z",
"created": "2023-02-21T16:38:58.000Z",
"accessibility": {
"selfService": false,
"errorRedirectUrl": null,
"loginRedirectUrl": null
},
"visibility": {
"autoSubmitToolbar": false,
"hide": {
"iOS": false,
"web": false
},
"appLinks": {
"admin": true
}
},
"features": [],
"signOnMode": "OPENID_CONNECT",
"credentials": {
"userNameTemplate": {
"template": "${source.login}",
"type": "BUILT_IN"
},
"signing": {
"kid": "R11xtpeeNRodOH4suQSc2Hl253u4nQgC8iDDL-HLgf0"
}
},
"settings": {
"app": {},
"notifications": {
"vpn": {
"network": {
"connection": "DISABLED"
},
"message": null,
"helpUrl": null
}
},
"manualProvisioning": false,
"implicitAssignment": false
},
"_links": {
"uploadLogo": {
"href": "https://cae-netskope.oktapreview.com/api/v1/apps/0oa72m75tw1XO0r3D1d7/logo",
"hints": {
"allow": [
"POST"
]
}
},
"appLinks": [
{
"name": "admin",
"href": "https://cae-netskope.oktapreview.com/home/saasure/0oa72m75tw1XO0r3D1d7/2",
"type": "text/html"
}
],
"profileEnrollment": {
"href": "https://cae-netskope.oktapreview.com/api/v1/policies/rst72m7606HryRjZZ1d7"
},
"policies": {
"href": "https://cae-netskope.oktapreview.com/api/v1/apps/0oa72m75tw1XO0r3D1d7/policies",
"hints": {
"allow": [
"PUT"
]
}
},
"groups": {
"href": "https://cae-netskope.oktapreview.com/api/v1/apps/0oa72m75tw1XO0r3D1d7/groups"
},
"logo": [
{
"name": "medium",
"href": "https://op3static.oktacdn.com/assets/img/logos/okta_admin_app.da3325676d57eaf566cb786dd0c7a819.png",
"type": "image/png"
}
],
"accessPolicy": {
"href": "https://cae-netskope.oktapreview.com/api/v1/policies/rst72m75yvZwMnApH1d7"
},
"users": {
"href": "https://cae-netskope.oktapreview.com/api/v1/apps/0oa72m75tw1XO0r3D1d7/users"
},
"deactivate": {
"href": "https://cae-netskope.oktapreview.com/api/v1/apps/0oa72m75tw1XO0r3D1d7/lifecycle/deactivate"
}
}
}
]
リスクスコアを押し上げる
Endpoint: {{base_url}}/security/api/v1/security-events
Method: POST
Data: < SET TOKEN >
Headers
| 鍵 | Value |
|---|---|
| Accept | アプリケーション/json |
| Content-Type | アプリケーション/json |
Sample Response
202 response
アプリケーションの取得
Endpoint: {{base_url}}/api/v1/apps
Method: GET
Data
| Parameter | Value |
|---|---|
| limit | 200 |
Headers
| 鍵 | Value |
|---|---|
| Accept | アプリケーション/json |
| Content-Type | アプリケーション/json |
| Authorization | SSWS<TOKEN> |
Sample Response
[
{
"id": "0oa72m75tw1XO0r3D1d7",
"name": "saasure",
"label": "Okta Admin Console",
"status": "ACTIVE",
"lastUpdated": "2023-02-21T16:38:58.000Z",
"created": "2023-02-21T16:38:58.000Z",
"accessibility": {
"selfService": false,
"errorRedirectUrl": null,
"loginRedirectUrl": null
},
"visibility": {
"autoSubmitToolbar": false,
"hide": {
"iOS": false,
"web": false
},
"appLinks": {
"admin": true
}
},
"features": [],
"signOnMode": "OPENID_CONNECT",
"credentials": {
"userNameTemplate": {
"template": "${source.login}",
"type": "BUILT_IN"
},
"signing": {
"kid": "R11xtpeeNRodOH4suQSc2Hl253u4nQgC8iDDL-HLgf0"
}
},
"settings": {
"app": {},
"notifications": {
"vpn": {
"network": {
"connection": "DISABLED"
},
"message": null,
"helpUrl": null
}
},
"manualProvisioning": false,
"implicitAssignment": false
},
"_links": {
"uploadLogo": {
"href": "https://cae-netskope.oktapreview.com/api/v1/apps/0oa72m75tw1XO0r3D1d7/logo",
"hints": {
"allow": [
"POST"
]
}
},
"appLinks": [
{
"name": "admin",
"href": "https://cae-netskope.oktapreview.com/home/saasure/0oa72m75tw1XO0r3D1d7/2",
"type": "text/html"
}
],
"profileEnrollment": {
"href": "https://cae-netskope.oktapreview.com/api/v1/policies/rst72m7606HryRjZZ1d7"
},
"policies": {
"href": "https://cae-netskope.oktapreview.com/api/v1/apps/0oa72m75tw1XO0r3D1d7/policies",
"hints": {
"allow": [
"PUT"
]
}
},
"groups": {
"href": "https://cae-netskope.oktapreview.com/api/v1/apps/0oa72m75tw1XO0r3D1d7/groups"
},
"logo": [
{
"name": "medium",
"href": "https://op3static.oktacdn.com/assets/img/logos/okta_admin_app.da3325676d57eaf566cb786dd0c7a819.png",
"type": "image/png"
}
],
"accessPolicy": {
"href": "https://cae-netskope.oktapreview.com/api/v1/policies/rst72m75yvZwMnApH1d7"
},
"users": {
"href": "https://cae-netskope.oktapreview.com/api/v1/apps/0oa72m75tw1XO0r3D1d7/users"
},
"deactivate": {
"href": "https://cae-netskope.oktapreview.com/api/v1/apps/0oa72m75tw1XO0r3D1d7/lifecycle/deactivate"
}
}
}
]
パフォーマンスマトリックス
以下のパフォーマンス測定は、Oktaプラグインからアプリケーションレコードとユーザーレコードをそれぞれ50万件ずつ取得し、下記のVM仕様を持つ大規模CEスタック上で実施されました。
| スタックの詳細 | サイズ:大 RAM:32 GB CPU:16コア |
| 取得したアプリケーションレコードを保存するのにかかる時間 | 約15分 |
| リスクレベルとともに取得したユーザーレコードを保存するのにかかる時間 | 約80分 |
ユーザーエージェント
netskope-ce-5.1.0-cre-okta-v1.1.0
ワークフロー
- Oktaエンティティリスクポリシーを設定します。
- Oktaユーザーを作成します。
- ユーザーに役割とアプリケーションを割り当てる
- APIトークンを取得してください。
- Oktaドメインを取得しましょう。
- JWKSの公開鍵と秘密鍵を生成します。
- 発行者とJWKSのURLを取得してください。
- 公開鍵をホストしてください。
- Configure the Okta plugin.
- ビジネスルールを設定します。
- アクションを設定します。
- Validate the Okta plugin.
再生ボタンをクリックして動画をご覧ください。
Oktaエンティティリスクポリシーを設定する
Oktaエンティティリスクポリシーを追加するには、以下のリンクを参照し、検出方法として「セキュリティイベントプロバイダーが報告したリスク」を選択してください。
https://help.okta.com/oie/en-us/content/topics/itp/detections.htm?cshid=csh-detections
https://help.okta.com/oie/en-us/content/topics/itp/add-entity-risk-policy-rule.htm
Oktaユーザーを作成する
- Oktaにログインしてください。Directory > Peopleへ移動してください。Add Personをクリックして詳細を入力し、次にSaveをクリックしてください。

- ユーザーが作成されると、「ユーザー」ページに表示されます。ユーザーをクリックし、 Admin Rolesに移動してから、 Add individual admin privilegesをクリックします。

- 役割ドロップダウンでSuper Administratorを選択し、 Save Changesをクリックします。

ユーザーに役割とアプリケーションを割り当てる
- APIトークンの生成とAPI操作の実行を行うための別のユーザーを作成します。
- Okta プラットフォームに管理者アカウントでログインし、クリックします。 Admin.
- Directory > Peopleに移動してAdd Personをクリックしてください。

- ユーザータイプにはUser Select 。
- 名、姓、ユーザー名を入力してください。
- 必要に応じてパスワードSelect 、 Saveをクリックしてください。

- 選択したパスワードでログインし、新しく作成したユーザーの認証を設定します。
- 「ディレクトリ」>「ユーザー」ページで、管理者アカウントから最近作成したユーザーを選択します。
- 新しいアカウントに正常にログインすると、Peopleページに管理者役割タブが表示されます。Admin Rolesをクリックしてください。
- Add assignmentをクリックしてください。
- ロールのドロップダウンでSelect Organization Administratorし、Saveをクリックします。

- 同じユーザーの「アプリケーション」タブに移動し、 Assign Applicationsをクリックして、 Okta WorkflowsとOkta Workflow OAUTHアプリケーションを選択し、 Saveをクリックします。

- Okta管理コンソールにログインしてください 新しく作成したユーザーでAPIトークンを生成してください。
APIトークンを取得してください
- Okta プラットフォームにログインし、クリックします Admin.
- 左側のパネルでSecurity > APIに移動し、 Create Tokenをクリックします。

- トークン名を入力してクリック Create Token.
- トークン値は一度しか表示されないため、コピーしてください。プラグインの設定に必要となります。
Oktaドメインを取得
Oktaドメインは、Oktaページの左上隅から取得できます。ユーザー名をクリックすると、ユーザー名の下にベースURLが表示されます。
Oktaドメインにhttps://を追加することを忘れないでください。 プラグインを設定するために使用します。

JWKS公開鍵と秘密鍵のペアを生成します(Okta Identity Threat Protectionのリスクスコアプッシュアクションに必要です)。
プッシュリスクスコアでは、公開鍵が公開URLにホストされている必要があります。公開鍵と秘密鍵のペアを生成する方法の一つを以下に示します。
- https://mkjwk.org/にアクセスしてください。
- RSAタブから鍵ペアを生成するには、以下の値を指定してください。
- キーサイズ:2048
- キーを使う: 署名
- アルゴリズム: RS256
- キーID: SHA-256
- X.509を表示: はい
- Generateをクリックしてください。
- 公開鍵をコピーして保存してください。この公開鍵を公開URLにホストしてください。この公開URLは、共有設定に必要となります。公開キーを投稿するために使用するベース URL が発行者 URL として使用されます。

- 下にスクロールして、秘密鍵(X.509 PEM形式)をコピーしてメモしてください。これは共有設定で必要です( クリップボードにコピーボタンは使用しないでください。代わりに手動でコピーしてください。改行文字(\n)が含まれている場合があり、プラグイン設定時に無効なOEM形式になります)。
公開鍵はJWK形式(公開して保管するため)である必要があり、秘密鍵はPEM形式である必要があることに注意してください。
JWKS Format
{
"keys":
[
<public key>
]
}
発行者とJWKSのURLを取得します(リスクスコアプッシュアクションに必須)。
公開鍵は、公開されているURLにホストする必要があります。ここでは、Okta プラグインの Okta ワークフローで API エンドポイントを作成する手順を示します。パブリック API エンドポイントは、パブリックにホストされる JWKS URL として使用されます。
公開鍵をホストする
- Oktaにログインし、右上隅のAdminをクリックして管理コンソールに移動します。

- 左側のパネルのWorkflow > Workflows consoleをクリックしてワークフローコンソールに移動します。

- トップパネルのFlows タブをSelectしてください。

- New Flow .
をクリックしてください
- Add Event .
をクリックしてください
- API Endpoint .
をクリックしてください
- APIエンドポイント設定ダイアログが開きます。 セキュリティレベルをNone (public service)にSelect 、 Closeをクリックします。

- Add function .
をクリックしてください
- 検索ボックスに「Return raw」と入力して検索し、リストからReturn Rawを選択してください。

- 次に、Return Raw 関数のヘッダーとボディに以下の変更を加えます。
- ヘッダー欄に以下の内容を貼り付けてください。
{ "Content-Type": "application/json" } - 公開鍵をJWKS形式で本文に貼り付けてください。
{ "keys":[ { "kty":"RSA", "e":"AQAB", "use":"sig", "kid":"1pXZQNc3YiNjWUD2rZ2WqFNQzBANcSzrGhrlhBExLzA", "alg":"RS256", ************"n":"g5r_OAU9OE-ybhedeFDWv7XGKmF18R6JUFXmOKO0TWlkR2wfhtA8vXCH0il60ICUNmZV_axnnqUjzGezF_3D6coNt1NEocCiaYeX46tdJCLg8ac9furS0g-VbftPcg6DpkwrIN5t1UphNlPvkxhnmfMYxzSo9Pq_Sb0LPImL2h9a32Iw-GY2Zr69ctNQxhghR6_Aqaps5iQRqjAPs3CQ" } ] }
- ヘッダー欄に以下の内容を貼り付けてください。
- 上部のSaveをクリックして、フローの名前を入力してください。

- 上部の「フローがオフ」ドロップダウンを展開してオンにします。

- エンドポイント設定から呼び出しURLをコピーし、 </>をクリックしてエンドポイント設定を開きます。

- 公開鍵は公開URLでホストされ、そこから閲覧できます。 Invoke URL 。 次の手順で示すように、URLをコピーしてブラウザに貼り付けてください。
- 公開キーをホストするために使用される Okta アカウントのテナント URL が発行者 URL として使用されます。 テナントのURLをメモしておいてください。

Configure the Okta Plugin
- Cloud ExchangeにログインしてSettings > Pluginsに移動してください。Okta 1.1.0 (CRE)プラグインボックスを検索して選択します。

- 基本情報を入力してください:
- 設定名:設定の名前を入力してください。
- 同期間隔:プラグインを同期する時間を入力してください。

- Nextをクリックしてください。認証のための設定パラメータを入力してください。
- Oktaドメイン:以前取得したOktaドメインを入力してください。
- APIトークン:以前取得したAPIトークンを入力してください。
- 初期範囲(日数):初回実行時にユーザーを取得する日数。

- Nextをクリックしてください。エンティティのドロップダウンリストからエンティティSelect 。
エンティティフィールドは、スキーマエディタページから作成できます。 ドロップダウンメニューから+ Add Fieldオプションを選択してください。
現場のマッピング情報を提供してください。推奨されるマッピングについては、 「マッピング」セクションを参照してください。

- Save .
をクリックしてください
Okta のリスク交換ビジネスルールを追加する
アクションを実行したいユーザーを絞り込むためのビジネスルールを追加します。ビジネスルールを設定するには、以下の手順に従ってください。
- Risk Exchange > Business Ruleに移動してCreate New Ruleをクリックしてください。
- ビジネスルールエンティティSelect 、ユーザーに対してアクションを実行するための要件に応じてフィルタを指定してください。 Save .
をクリックしてください
Okta のリスク交換アクションを追加する
以下は、Oktaプラグインで利用可能なアクションの一覧です。
グループに追加
アクションがトリガーされるたびに、このアクションは、アクション設定の作成時に指定されたグループにユーザーを追加します。
- Risk Exchange > Actionsに移動してAdd Action Configurationをクリックしてください。
- ビジネスルール、設定(プラグイン)、およびアクション(グループに追加) Select 。
- ユーザーの電子メールを静的値またはビジネス ルール レコード フィールドとして指定します。
- Staticで利用可能な既存のグループリストからグループ名Selectか、 Create New Groupを選択してStaticのグループ名テキストボックスにグループ名を入力してください。 グループを追加する際は、 ビジネスルールレコードフィールドではなく、静的グループを追加するようにしてください。
- Saveをクリックしてください。

グループから削除
アクションがトリガーされるたびに、このアクションは、アクション設定の作成時に指定されたグループからユーザーを削除します。
- Risk Exchange > Actionsに移動してAdd Action Configurationをクリックしてください。
- ビジネスルール、設定(プラグイン)、およびアクション(グループからの削除) Select 。
- ユーザー電子メールを静的値またはビジネス ルール レコード フィールドとして指定します。
- 既存のグループからユーザーを削除するには、グループドロップダウンから既存のグループSelect 。
- Save .
をクリックしてください
リスクスコアを押し上げる
アクションがトリガーされるたびに、このアクションはユーザーの現在および以前のスコアレベルをOktaに送信します(ただし、ユーザーがOktaテナントに存在する場合に限ります)。
スコアは、ユーザーがOktaに登録されている場合にのみ送信されます。ユーザー評価が初めてプッシュされた場合、Okta のprevious_levelの値はnoneになります。
Oktaユーザーに対してリスクスコアのプッシュアクションを実行するには、以下の手順に従ってください。
- Risk Exchange > Actionsに移動してAdd Action Configurationをクリックしてください。
- ビジネスルール、構成、およびアクションタイプ(リスクスコアのプッシュ) Select 。
- 以下のアクションパラメータを入力してください。
- ユーザー名:操作を実行する対象の固定ユーザー名を入力してください。ビジネスルールフィールドに対してアクションを実行する場合は、ビジネスルールレコードフィールドのドロップダウンリストから該当のフィールドを選択してください。
- ユーザースコア: ユーザー電子メールに関連付けられたスコア。 レベルは「低」「中」「高」の3段階で表すべきです。このフィールドで「静的」オプションを選択した場合は、カンマで区切られた値を入力してください。「previous_level」、「current_level」のように、low、medium のように入力します。ビジネスルールレコードフィールドを選択した場合は、選択したフィールドのスキーマエディタで、マージアクションが「マージ」に設定されていることを確認してください。
このパラメーターに必要なフィールドを設定するには、 「履歴スコアフィールドマッピング」セクションを参照してください。
- 理由管理者: イベントの説明を提供する理由管理者フィールド。例:Netskopeイベントのポリシー名。
- 発行者 URL: JWK 公開キーを公開でホストするために使用される URL (このケースで公開キーをホストするために使用される Okta テナント URL)。
- JWKS URL: JWK公開鍵が公開されているURL(このケースでは呼び出しURL)。
- 秘密鍵:公開鍵に対応する、公開されている秘密鍵(PEM形式)。
発行者URL、JWKS URL、および秘密鍵は、ソースフィールドではなく、静的フィールドとして指定してください。
- Save .
をクリックしてください
アップサートユーザーリスク
アクションがトリガーされるたびに、このUpsertアクションはOkta上のユーザーリスクを更新します。
- Risk Exchange > Actionsに移動してAdd Action Configurationをクリックしてください。
- ビジネスルール、構成(プラグイン)、およびアクション(アップサートユーザーリスク) Select 。
- ユーザー電子メールを静的値またはソースフィールドとして指定します。 リスクレベルを静的として追加し、
- Saveをクリックしてください。
このアクションのリスクレベルに許容される値は、LOWとHIGHです。これら以外の値はすべて無視され、ユーザーに対してアクションは実行されません。


No Action
この操作は、ユーザーに対していかなる影響も及ぼしません。次のように この操作を実行すると、 Netskope CTO モジュールで UBA アラートを生成できます。
Netskopeテナント上で、Oktaから取得したアプリケーションとユーザーに対して操作を実行できます。
Validate the Okta Plugin
Netskope CEでの検証
Oktaから取得したアプリケーションとユーザーのレコードを検証するには、 Loggingに移動して、Oktaプラグインから取得したログを検索してください。
例: メッセージ「CRE Okta」

取得したデータを確認するには、 Recordsに移動し、Okta プラグインの設定時に選択したエンティティのタイプを選択します。 Okta プラグインの設定時に選択したエンティティのタイプを選択します。 取得したレコードを確認してください。
ユーザーの皆様へ:

アプリケーションについて:

OktaプラグインのLoggingからのログを確認し、ユーザーに対して実行されたアクションを確認してください。
グループに追加アクションの場合:

グループから削除する操作の場合:

プッシュリスクスコアアクションの場合:

Upsertユーザーリスクアクションの場合:

リスク交換の「アクションログ」に移動して、ユーザーに対して実行されたアクションのログを確認してください。
アクションの設定時に「承認が必要」トグルが有効になっている場合は、上記のアクションログページで保留中の承認エントリを選択し、 「承認が必要」トグルを有効にして、必ず承認を提供してください。

Validate on Okta
このプラグインは、Oktaで利用可能なアプリケーションページからアプリケーション情報を取得します。

Okta Adminセクションを開き、 Directories > Groups. に移動します。アクション設定で選択したグループを見つけます。ここでは、作成されたグループ、グループに追加されたユーザー、またはグループから削除されたユーザーを確認できます。


プッシュリスクスコアとアップサートユーザーリスクアクションを確認するには、レポートシステムログにアクセスしてください。プッシュリスクスコアアクションのログには、イベント情報として「セキュリティイベントプロバイダーが報告したリスク」が記録され、アップサートユーザーリスクのログには、イベント情報として「ユーザーリスクが検出されました」が記録されます。
プッシュリスクスコアアクションのログ:

Upsertユーザーリスクアクションのログ:

Reports > Reportsに移動し、Identity Threat Protection までスクロールダウンして、 Entity Risk Reportをクリックします。

エンティティリスク検出を確認すると、ユーザーのプッシュリスクスコアがすべて表示されます。ユーザーは同じページから取得されます。ユーザーは、このページでリスクレベルが検出された場合にのみ呼び出されます。
CE上でアクションが実行された後、Oktaのエンティティリスク検出におけるプッシュされたスコアが反映されるまでには時間がかかります。プッシュリスクスコアとアップサートユーザーリスクの両方について、リスクレベルの変化は以下のとおりです。

Oktaプラグインのトラブルシューティング
プラグインのワークフローでエラーが発生しました
- 共有設定を保存できず、ロガーに以下のエラーが表示されます: CRE Okta [CRE Okta]: エラーコード 400 を受信しました。エラー概要: API検証に失敗しました: name。エラーの原因: [{'errorSummary': 'name: セキュリティイベントプロバイダー名は一意である必要があります'}]。
CE上に宛先Oktaとの共有設定が現在存在する場合、または以前に作成されて削除された場合、このエラーが発生する可能性があります。
Cause:共有構成を作成する際に、Oktaテナントに「Netskope Security Events Provider」という名前の新しいセキュリティイベントプロバイダーが作成されます。
しかし、Okta Netskope CREはセキュリティイベントプロバイダーとの1:1の共有マッピングを受け入れています。
What to do: Oktaプラットフォームから既存のセキュリティイベントプロバイダーを削除し、 Netskope CEでOktaで新しい共有構成を作成または編集してください。 既存のセキュリティイベントプロバイダーを削除する手順は以下のとおりです。- Oktaテナントにログインしてください。
- Security > Device Integrations .
へ移動してください。
- Click the Receive shared signals tab
- Netskope Security Events Providerという共有信号については、Actionsを展開してDeleteを選択します。

この後、Oktaプラグインの新しい共有設定を作成するか、既存の設定を編集することができます。
- CRE Okta [configuration_name]: エラーコード400を受信しました。エラーの概要: API検証に失敗しました: settings.jwksUrl。エラーの原因: [{'errorSummary': 'settings.jwksUrl:有効なURLではありません。有効な例: http://www.okta.com '}].
What to do:公開URLでホストされている公開鍵を確認します。
- CRE Okta [CRE Okta]: 「キー ID の取得」中に Okta プラットフォームとの接続を確立できませんでした。プロキシサーバーまたはOktaサーバーに接続できません。エラー: HTTPConnectionPool(host='35.172.183.204',port=8080): URL: /jwks で最大再試行回数を超えました (原因: NewConnectionError('<urllib3.connection.HTTPConnection object at 0x7f075a904430>: 接続の確立に失敗しました: [Errno 111] 接続が拒否されました'))
What to do: 公開鍵をホストしているサイトを確認してください。 スクリプトを使用している場合は、スクリプトが起動して実行されていることを確認してください。
- CRE Okta [CRE Okta]: エラーコード400を受信しました。エラー概要:エラー概要は利用できません。エラー: 無効なキー。エラーデスクリプション: JWKS uri、kid=8s4cciA4UPIN7aVyTwVEhE9JTUSL87XALbCY9SUKvws に一致するキーが見つかりませんでした。
What to do:これは、アクション構成で指定された秘密鍵が、構成で指定された公開鍵ペアと一致しないか、公開鍵が正しくホストされていないことを示しています。公開鍵と秘密鍵を再生成するか、追加された公開鍵と秘密鍵を確認し、ホストされている鍵にアクセスできることを確認してください。
- CRE Okta [Okta]: ID '00ga2i326jTvm8sxV1d7' のグループは Okta に存在しません。
What to do:上記のエラーが表示された場合、アクション構成で指定されたグループ名が Okta プラットフォームに存在しないことを意味します。グループ名を変更するか、Okta で同じグループを作成してください。 - CRE Okta [CRE Okta]: 無効な秘密鍵が指定されました。秘密鍵がPEM形式であることを確認してください。
What to do:上記のエラーが表示された場合、提供された秘密鍵が無効であるか、有効な PEM 形式ではないことを意味します。
- CRE Okta [Okta]: 無効なOktaドメインが指定されました。
What to do: 上記のエラーが表示された場合、プラグイン設定で指定された Okta ドメインが無効であることを意味します。 - CRE Okta [okta]: Oktaプラグインは、「Scores」パラメータの値がlow、medium、highのいずれかであることを想定しています。
What to do:のエラーメッセージが表示される場合、アクション設定で指定されたスコア値が低、中、高以外の値になっている可能性があります。Oktaでは、スコアは低、中、高の範囲であることを想定しています。
- CRE Okta [Okta]: 検証エラーが発生しました。エラー:認証に失敗しました。提供されたAPIトークンを確認してください。
- CRE Okta [Okta]: 終了コード 401 を受信しました。検証エラーが発生しました。ページ 1 のアプリケーションを取得中に HTTP エラーが発生しました。
What to do: 上記のエラーを受信した場合、プラグイン構成で提供された Okta API トークンが無効または期限切れであることを意味します。
ユーザーに対して操作を実行できません
ユーザーに対してアクションを実行できない場合、以下のいずれかが原因である可能性があります。
- 当該ユーザーはOktaに登録されていません。
- ユーザーのリスクレベルがOktaのリスクレベルと一致しません。
- このアクションは、「承認が必要」切り替えボタンが有効になっている状態で設定されています。
What to do:
- 操作対象のユーザーがOktaに存在するかどうかを確認してください。ユーザーが存在しない場合、操作実行時に「Oktaにユーザーが見つかりませんでした」というログが出力されます。
- Oktaでは、Upsert User RiskアクションではリスクレベルとしてLOWとHIGHのみがサポートされ、Push Risk Scoreアクションではサポートされるタイプはlow、medium、highとなります。その他の形式のその他のリスクはOktaと同等とはみなされず、ユーザーに対するアクションは失敗します。
- ユーザーが存在するにもかかわらずアクションが実行されず、エラーも発生しない場合は、アクション設定で「承認が必要」の切り替えボタンが有効になっていることが原因である可能性があります。有効になっている場合は、CREモジュールの「アクションログ」ページに移動し、承認のために追加されたログを選択して、「承認」ボタンをクリックします。
アプリケーションはOktaから取得されません
アプリケーションのデータが取得できない場合、原因は以下のいずれかである可能性があります。
- プラットフォーム上でプル可能なアプリケーションがありません。
- アプリケーションを保存するためのマッピング機能は、プラグインには追加されていません。
What to do:
- Oktaにアクセスして、アプリケーションページからアプリケーションを取得できるかどうかを確認してください。
- プラグインの設定を編集し、エンティティソースページを確認してください。同じデータを取得するために、いくつかのフィールドがマッピングされているはずです。
プッシュ リスク スコアが Okta プラットフォームに反映されない
ロガーはプッシュリスクスコアアクションに対して正常な応答を返しますが、Okta のリスクレベルは更新されません。これは、 Netskopeユーザー が プッシュリスクスコアアクションに使用されていることが原因である可能性があります。Okta のユーザーのログインユーザー名と一致しません。
What to do:
使用中のNetskope電子メールが、Okta 上のユーザーのプライマリ電子メールとともにログイン電子メールと一致していることを確認してください。
特定のユーザーのリスクレベルが取得または更新されていません
特定のユーザーを除くすべてのユーザーのリスクレベルは取得できていますが、その特定のユーザーのリスクレベルを取得しようとするとエラーが発生します。これは以下の理由による可能性があります。
リスク レベルが取得されず、エラーが発生したユーザーは、同じユーザーのクレデンシャルが Okta にログインして API トークンを生成しました。 これはOktaの想定される動作であり、APIトークンを作成したユーザーについては、そのユーザーのリスクレベルを取得または更新することはできません。
What to do:
別のユーザーを作成し、 追跡対象の通常のユーザーではなく、このユーザーを使用してAPOトークンを生成します。 詳細については、「ユーザーへの役割とアプリケーションの割り当て」セクションを参照してください。
制限事項
このプラグインでは、以下のシナリオではプッシュリスクスコアアクションの設定を保存できません。
- 公開鍵と秘密鍵のペアが間違っている場合
- Netskope Security Eventsプロバイダが、構成で指定された発行者とJWKSペアとは異なるペアで既にプラットフォーム上に存在している場合。
- 指定された発行者と JWKS のペアが、別のセキュリティ イベント プロバイダーで既にプラットフォーム上に存在する場合。

