このドキュメントでは、 Netskope Cloud Exchangeの URE モジュール用の URE Elastic プラグインを構成する方法について説明します。 このプラグインは、Elastic プラットフォームからユーザーとそのリスク スコアを取得するために使用されます。 このプラグインは、Elastic プラットフォームでのアクションの実行をサポートしていません。
前提条件
この設定を完了するには、以下が必要です。
- Netskopeテナント(または、例えば本番環境と開発/テスト環境など、複数のテナント)。
- Netskope Cloud Exchangeのテナントで、TenantプラグインとRisk Exchange プラグインが既に設定されています。
- Elastic インスタンスのクレデンシャル: ユーザー名、パスワード、Elastic Search の API ベース URL、API キー。
- 以下のホストへの接続:Elasticインスタンス。
CEバージョンの互換性
Netskope CE v4.2.0, v5.0.0
プラグインスコープ
このプラグインは、Elastic インスタンスから、 [セキュリティ] > [探索] > [ユーザー] > [すべてのユーザー]ページで利用可能なユーザーと、 [セキュリティ] > [探索] > [ユーザー] > [ユーザーリスク]ページで利用可能なそれぞれのリスクスコアを取得します。
Elasticプラグインのサポート
|
取得したデータの種類 | ユーザー |
| Actions |
No Action |
マッピング
Elastic – Netskope プルマッピング
| 弾性場 | Netskope CEフィールド |
|---|---|
|
user.name | |
| risk.calculated_score_norm |
score |
スコアマッピング
スコアはCloud Exchangeで正規化されます 以下の式:
UREスコア計算 > | 100 – 弾性リスクスコア | x 10
| Netskope Score | Netskopeスコア範囲 |
|---|---|
| 致命的 |
0-250 |
|
高い | 251-500 |
| 中くらい |
501-750 |
|
低い |
751-1000 |
| エラスティックスコア | 弾性スコア範囲 |
|---|---|
| 未知 |
20歳未満 |
|
低い | 20 – 40 |
| Moderate |
40 – 70 |
|
高い | 70 – 90 |
| 致命的 |
> 90 ** |
権限
以下は、このプラグインに必要な権限です。
- クラスタ権限 > manage_tokens
- インデックス権限 > logs-* および risk-score.*
- 特典 > 読む
- APIキー > 権限の制限
パフォーマンスマトリックス
以下は、下記のVM仕様を持つ大規模CEスタック上で、50万人のユーザーとそのそれぞれのリスクスコアを取得して実施したパフォーマンス測定結果です。
|
スタックの詳細 | サイズ:大 RAM:32 GB CPU:16コア |
| Elasticから取得したユーザーリスクスコアを持つユーザー |
500K |
|
ユーザーとそのリスクスコアを取り込むのにかかる時間 | 約20分 |
| 第三者製品に対して実行された操作 |
NA |
APIの詳細
使うAPI一覧
| API Endpoint | Method | API Client Scope | Use Case |
|---|---|---|---|
| /_security/oauth2/token | 役職 | manage_token | Get OAuth2 token |
| /logs-*/_search | 役職 | logs-* > 読むアクセス | Fetch Users |
| /risk-score*/_search | 役職 | リスクスコア* > 読むアクセス | ユーザーリスクスコアを取得する |
認証トークンを取得する
API Endpoint:
<Base URL>/_security/oauth2/token
Method: 役職
Headers:
| 鍵 | Value | デスクリプション |
|---|---|---|
| Content-Type | アプリケーション/json | |
|
Accept | アプリケーション/json | |
|
Authorization |
ApiKey <Token> |
ユーザー名とパスワードなどの基本認証の場合、トークンはUTF-8エンコードされている必要があります。 |
|
Basic <Token> |
Body:
{
"grant_type" : "client_credentials"
}
Sample API Response:
{
"access_token": "gLuKBBjxurcPqq7cZyTj4jL0A****j*******",
"type": "Bearer",
"expires_in": 1200,
"authentication": {
"username": "test user",
"roles": [
"Netskope"
],
"full_name": "Test",
"email": "",
"metadata": {},
"enabled": true,
"authentication_realm": {
"name": "native",
"type": "native"
},
"lookup_realm": {
"name": "native",
"type": "native"
},
"authentication_type": "realm"
}
}
レコードを取得する
API endpoint:
<Base URL>/logs-*/_search
Method: 役職
Headers:
| 鍵 | Value | デスクリプション |
|---|---|---|
| Content-Type | アプリケーション/json | |
|
Accept | アプリケーション/json | |
|
Authorization |
ApiKey <Token> |
基本認証の場合、ユーザー名とパスワード、トークンはUTF-8エンコードされている必要があります。 |
|
Basic <Token> |
Body:
{
"query": {
"bool": {
"must_not": {"exists": {"field": "host.name"}},
"filter": [
{"exists": {"field": "user.name"}},
{"range": {"@timestamp": {"gte": "2023-01-01T18:08:11.148813Z"}}},
],
}
},
"sort": [{"@timestamp": "asc"}],
"_source": True,
"size": 10000,
}
Sample API Response:
{
"took": 10,
"timed_out": false,
"_shards": {
"total": 75,
"successful": 75,
"skipped": 53,
"failed": 0
},
"hits": {
"total": {
"value": 491,
"relation": "eq"
},
"max_score": null,
"hits": [
{
"_index": "logs-tes",
"_id": "wHUW2YEyx7Kaj*****",
"_score": null,
"_source": {
"event": {
"kind": "alert",
"module": "proofpoint"
},
"user": {
"name": "kamlesh.solanki@crestdatasys.com"
},
"@timestamp": "2024-01-03T09:00:00.000Z"
},
"sort": [
1704272400000
]
}
]
}
}
スコアを取得
API Endpoint:
<Base URL>/risk-score.*/_search
Method: 役職
Headers:
| 鍵 | Value | デスクリプション |
|---|---|---|
| Content-Type | アプリケーション/json | |
|
Accept | アプリケーション/json | |
|
Authorization |
ApiKey <Token> |
基本認証の場合、ユーザー名とパスワード、トークンはUTF-8エンコードされている必要があります。 |
|
Basic <Token> |
Body:
{
"query": {
"bool": {
"minimum_should_match": 1,
"should": [{"match_phrase": {"user.name": "testuser@test.com"}}]
}
}
}
Sample API Response:
{
"took": 0,
"timed_out": false,
"_shards": {
"total": 1,
"successful": 1,
"skipped": 0,
"failed": 0
},
"hits": {
"total": {
"value": 1,
"relation": "eq"
},
"max_score": 0.9808291,
"hits": [
{
"_index": "risk-score.risk-score-latest-default",
"_id": "X2vS7pclkEYZFSG************",
"_score": 0.9808291,
"_source": {
"@timestamp": "2024-01-23T11:16:33.549Z",
"user": {
"name": "testuser@test.com",
"risk": {
"id_field": "user.name",
"id_value": "testuser@test.com",
"calculated_level": "Low",
"calculated_score": 92.29454468696414,
"calculated_score_norm": 35.33481802716851,
"category_1_score": 89,
"category_1_count": 9,
"notes": [],
"inputs": [
{
"id": "953f2530b0ea1ca14876583df459c8e24a21e9989876876869*****************",
"index": ".internal.alerts-security.alerts-default-000003",
"description": "Alert from Rule: External Alerts [Duplicate]",
"category": "category_1",
"risk_score": 47,
"timestamp": "2024-01-10T09:36:16.888Z"
},
{
"id": "2b1f87b7353ae4f1cebc95fc618a6b4cb3696b5b8383c3f***********",
"index": ".internal.alerts-security.alerts-default-000003",
"description": "Alert from Rule: External Alerts [Duplicate]",
"category": "category_1",
"risk_score": 47,
"timestamp": "2024-01-10T09:36:16.890Z"
},
{
"id": "3b5d3e2b1b0017567b3e2dc6835957a3118486e89fa20***********************",
"index": ".internal.alerts-security.alerts-default-000003",
"description": "Alert from Rule: External Alerts",
"category": "category_1",
"risk_score": 47,
"timestamp": "2024-01-05T11:53:39.960Z"
},
{
"id": "fe788d9601e817f0e7219b56686d9ba4a55d90c5ea4627***************a",
"index": ".internal.alerts-security.alerts-default-000003",
"description": "Alert from Rule: External Alerts",
"category": "category_1",
"risk_score": 47,
"timestamp": "2024-01-05T11:53:39.963Z"
},
{
"id": "7c7f1da36f5fbc904bb109c38d677e061fd4cbc************************************",
"index": ".internal.alerts-security.alerts-default-000003",
"description": "Alert from Rule: External Alerts [Duplicate]",
"category": "category_1",
"risk_score": 47,
"timestamp": "2024-01-05T11:49:27.539Z"
}
]
}
}
}
}
]
}
}
ユーザーエージェント
Netskope-ce-5.0.0-ure-elastic-v1.0.0
ワークフロー
- 役割を作成します。
- ユーザーに役割を設定します。
- APIキーを作成します。
- Elasticプラグインを設定する
- ビジネスルールを追加します。
- アクションを追加します。
- プラグインを検証してください。
再生ボタンをクリックして動画をご覧ください。
役割を作成する
- Elasticプラットフォーム(Kibana、Elastic Search)にログインし、 Management > Stack Management > Security > Rolesに移動します。
- Create Rolesをクリックしてください。

- 役割名を指定し、クラスタ権限でmanage_tokenアクセスを選択してください。
- Scroll down to Index privileges and add logs-* and risk-score.* indexes under Indices, and then click Create role.

新しい役割を持つユーザーを作成する
- Stack Management > Usersへ移動してください。
- Create Userをクリックし、ユーザー名、 アドレス、パスワードを入力し、パスワードを確認してから、権限ドロップダウンで以前に作成した役割を選択します。
- Create Userをクリックしてください。

APIキーを作成する(APIキー認証方式の場合)
- Stack Management > Security > API Keysに移動してCreate API Keyをクリックしてください。

- 名前を入力し、「権限制限」の切り替えボタンを有効にしてください。役割記述子に、下記の辞書を追加してください。
{ "role-a": { "cluster": [ "all" ], "indices": [ { "names": [ "logs-*", "risk-score.*" ], "privileges": [ "read" ], "allow_restricted_indices": false } ], "applications": [], "run_as": [], "metadata": {}, "transient_metadata": { "enabled": true } } } - 「メタデータを含める」を有効にし、以下の辞書を追加してください。
{ "application": "Netskope Cloud Exchange" }
- Create API Keyをクリックしてください。APIキーをコピーして安全な場所に保存してください。一度しか表示されません。
Elasticプラグインを設定する
- Cloud ExchangeにログインしてSettings > Pluginsに移動してください。
- Elasticプラグインの設定を行うには、Elasticプラグインのボックスを検索して選択してください。

- プラグインの設定名と同期間隔を入力し、 Nextをクリックします。

- 以下の値を入力してください。
- ベースURL:Elastic SearchのAPIベースURLを入力してください。
- 認証方法:使用する認証方法の種類Select基本認証またはAPIキー認証から選択してください。
- ユーザー名:Elastic上のユーザーのユーザー名を入力してください。 基本認証方法を選択した場合のみ。
- パスワード:Elasticユーザーのパスワードを入力してください。 基本認証方式を選択した場合のみ。
- APIキー:APIキー認証方法のみを使用する場合は、以前に生成したAPIキーを入力してください。 。
- 初期範囲:データを取得する初期範囲を入力してください。
- Saveをクリックしてください。

Elastic のビジネスルールを追加する
- User Risk Exchange > Business Ruleへ移動してください。
- Create New Ruleをクリックしてください。
- ルール名を入力し、要件に基づいてクエリを設定してください。以下の例では、Elasticプラグインから取得したすべてのユーザーを取得します。

Elasticのアクションを設定する
Elasticプラグインはアクションの実行をサポートしていません。ただし、「アクションなし」アラートはNetskope CTO モジュールで生成できます。
このアクションを設定するには、以下の手順に従ってください。
- ユーザーへ移動 Risk Exchange > Actions.
- Click Add Action Configuration.
- ビジネスルール、構成、およびアクションSelect 。

- CTOモジュールでアラートを生成するには、 Generate Alertを有効にし、メンテナンスウィンドウ中にアクションを実行する場合はPerform action during the maintenance windowも有効にしてください。Settings > Generalから CTO (チケットオーケストレーター) モジュールを有効にしてください。
- Saveをクリックしてください。
Elasticプラグインを検証する
プルを検証する
Elasticから取得したユーザーを確認するには、 Risk Exchange > Usersにアクセスしてください。

Settings > Loggingに移動して、プラグインの設定に基づいてログを検索してください。

Elastic プラットフォームでプル可能なユーザーを確認するには、左側のパネルでSecurityに移動し、次にExplore > Users > All Usersに移動します。プラットフォーム上で常時利用可能なユーザーを確認してください。

ユーザーのスコアが取得されたことを確認するには、 Security > Explore > Users > User Riskにアクセスしてください。

アクションを検証する
このプラグインはアクションの実行をサポートしていません。
トラブルシューティング
プラグインリポジトリからプラグインを保存できませんでした
新しいプラグインが追加された際に、CEプラグインリポジトリからリポジトリの更新を取得する際に、内部サーバーエラーが発生します。

What to do: この問題は今後のCEリリースで解決される予定ですが、それまではプラグインのzipファイルをダウンロードして、リポジトリにプラグインを追加してください。CEプラグインリポジトリに新しいリポジトリを追加します。新しいプラグインはCE版に追加されます。
ユーザーまたはユーザーリスクスコアを取得できません
CEでユーザーまたはユーザーリスクスコアを取得できない場合は、以下の考えられるシナリオを確認してください。
- プラットフォーム上でユーザーがプルできます
- ユーザーはプラグインで指定された初期範囲内で利用可能です
- ユーザーリスクスコアはCEでは取得されません。
What to do:
- プラグインからユーザーが取得されない場合は、Elasticsearchにユーザーが利用可能かどうかを確認してください。
- Elasticsearchでユーザーが取得可能な場合は、ユーザーが最後に確認された日付を確認してください。プラグイン設定で指定されている初期範囲を確認してください。初期範囲は、Elasticで利用可能な最終確認時刻以上である必要があります。そうすることで、ユーザーを取得できます。

- ユーザーを取得した後でユーザーリスクスコアを取得できない場合は、ユーザーに適切な権限が追加されているかどうか、およびスコアがユーザーに対して利用可能であるかどうかを確認してください。

