This document explains how to configure the URE Elastic plugin for the URE module of the Netskope Cloud Exchange platform. This plugin is used to fetch the user and their risk scores from the Elastic platform. This plugin does not support performing any actions on the Elastic platform.
Conditions préalables
Pour compléter cette configuration, vous avez besoin de :
- Un locataire Netskope (ou plusieurs, par exemple des instances de production et de développement/test).
- Un locataire Netskope Cloud Exchange avec les plugins Tenant et Risk Exchange déjàconfigurés.
- Your Elastic instance credentials: Username, Password, API Base URL for Elastic Search, API Key.
- Connectivité à l'hôte suivant : votre instance Elastic.
Compatibilité des versions CE
Netskope CE v4.2.0, v5.0.0
Champ d'application du plugin
Ce plugin récupère les utilisateurs disponibles sur la page Sécurité > Explore > Users > All users, et leurs scores de risque respectifs disponibles sur la page Sécurité > Explore > Users > User risk de votre instance Elastic.
Support des plugins Elastic
|
Type de données extraites | Utilisateurs |
| Actions |
No Action |
Mises en correspondance
Elastic - Netskope Pull Mapping
| Champ élastique | Champ Netskope CE |
|---|---|
|
user.name | |
| risk.calculated_score_norm |
score |
Cartographie des scores
The score will be normalized in the Cloud exchange using the below formula:
Calcul du score URE > | 100 - Score de risque élastique | x 10
| Netskope Score | Gamme de scores Netskope |
|---|---|
| Critique |
0-250 |
|
Haut | 251-500 |
| Moyen |
501-750 |
|
Faible |
751-1000 |
| Score élastique | Gamme de scores élastiques |
|---|---|
| Inconnu |
20 < |
|
Faible | 20 – 40 |
| Moderate |
40 – 70 |
|
Haut | 70 – 90 |
| Critique |
> 90 ** |
Permissions
Vous trouverez ci-dessous les autorisations nécessaires pour le plugin.
- Privilèges du cluster > manage_tokens
- Privilèges de l'index > logs-* et risk-score.*
- Privilèges > Lire
- Clé API > Restreindre les privilèges
Matrice de performance
Vous trouverez ci-dessous les relevés de performances effectués sur une grande pile CE avec les spécifications VM mentionnées ci-dessous, en tirant 500 000 utilisateurs et leurs notes de risque respectives.
|
Détails de la pile | Taille : Grande RAM : 32 GB CPU : 16 cœurs |
| Utilisateurs ayant des scores de risque utilisateur récupérés dans Elastic |
500K |
|
Time taken to ingest Users and their Risk scores | ~20 minutes |
| Actions menées sur les produits de tiers |
NA |
Détails de l'API
Liste des API utilisées
| API Endpoint | Method | API Client Scope | Use Case |
|---|---|---|---|
| /_security/oauth2/token | PUBLIER | manage_token | Get OAuth2 token |
| /logs-*/_search | PUBLIER | logs-* > read access | Fetch Users |
| /risk-score*/_search | PUBLIER | score de risque* > accès en lecture | Récupérer les notes de risque des utilisateurs |
Obtenir un jeton d'authentification
API Endpoint:
<Base URL>/_security/oauth2/token
Method: POST
Headers:
| Clé | Value | Description |
|---|---|---|
| Content-Type | application/json | |
|
Accept | application/json | |
|
Authorization |
ApiKey <Token> |
Pour l'authentification de base, comme Nom d'utilisateur-Mot de passe, le jeton doit être codé en 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"
}
}
Recherche d'enregistrements
API endpoint:
<Base URL>/logs-*/_search
Method: POST
Headers:
| Clé | Value | Description |
|---|---|---|
| Content-Type | application/json | |
|
Accept | application/json | |
|
Authorization |
ApiKey <Token> |
Pour l'authentification de base, c'est-à-dire Nom d'utilisateur-Mot de passe, le jeton doit être encodé en 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
]
}
]
}
}
Recherche de notes
API Endpoint:
<Base URL>/risk-score.*/_search
Method: POST
Headers:
| Clé | Value | Description |
|---|---|---|
| Content-Type | application/json | |
|
Accept | application/json | |
|
Authorization |
ApiKey <Token> |
Pour l'authentification de base, c'est-à-dire Nom d'utilisateur-Mot de passe, le jeton doit être encodé en 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"
}
]
}
}
}
}
]
}
}
Agent utilisateur
Netskope-ce-5.0.0-ure-elastic-v1.0.0
Workflow
- Créez un rôle.
- Configurer un utilisateur avec un rôle.
- Créez une clé API.
- Configurer le plugin Elastic
- Ajouter une règle de gestion.
- Ajouter des actions.
- Validez le plugin.
Cliquer sur « play » pour regarder une vidéo.
Créer un rôle
- Connectez-vous à votre plateforme Elastic (Kibana, Elastic Search) et allez sur Management > Stack Management > Security > Roles.
- Cliquez sur Create Roles.

- Indiquez un nom de rôle et sélectionnez un accès manage_token dans les privilèges du cluster.
- Scroll down to Index privileges and add logs-* and risk-score.* indexes under Indices, and then click Create role.

Create a User with the New Role
- Allez sur Stack Management > Users.
- Click Create User and enter a Username, Email address, Password, confirm the password, and then select the previously created role in the Privileges dropdown.
- Cliquez sur Create User.

Créer une clé API (pour la méthode d'authentification par clé API)
- Allez à Stack Management > Security > API Keys et cliquez sur Create API Key.

- Provide a name and enable the Restrict Privileges toggle button. Add below mentioned dictionary in the role descriptor.
{ "role-a": { "cluster": [ "all" ], "indices": [ { "names": [ "logs-*", "risk-score.*" ], "privileges": [ "read" ], "allow_restricted_indices": false } ], "applications": [], "run_as": [], "metadata": {}, "transient_metadata": { "enabled": true } } } - Activez l'option Inclure les métadonnées et ajoutez-y le dictionnaire ci-dessous.
{ "application": "Netskope Cloud Exchange" }
- Click Create API Key. Copy the API Key and save it somewhere safe because it will only be visible once.
Configurer le plugin Elastic
- Connectez-vous à Cloud Exchange et accédez à Settings > Plugins.
- Recherchez et sélectionnez la boîte de plugin Elastic pour configurer le plugin.

- Saisissez le nom de configuration du plugin et l'intervalle de synchronisation, puis cliquez sur Next.

- Entrez ces valeurs :
- Base URL : Saisissez l'URL de base de l'API de votre Elastic Search.
- Authentication Method (Méthode d'authentification) : Select le type de méthode d'authentification que vous souhaitez utiliser (Basic Authentication ou API Key Authentication).
- Nom d'utilisateur : Saisissez le nom d'utilisateur de votre utilisateur sur Elastic, utilisé uniquement lorsque la méthode d'authentification de base est sélectionnée.
- Mot de passe : Saisissez le mot de passe de votre utilisateur Elastic, utilisé uniquement lorsque la méthode d'authentification de base est sélectionnée.
- API Key : Saisissez la clé API générée précédemment, pour les cas où seule la méthode d'authentification par clé API est utilisée.
- Initial Range: Enter an initial range from where you want to pull data from.
- Cliquez sur Save.

Add a Business Rule for Elastic
- Allez sur User Risk Exchange > Business Rule.
- Cliquez sur Create New Rule.
- Saisissez le nom de la règle et configurez la requête en fonction de vos besoins. L'exemple ci-dessous récupère tous les utilisateurs récupérés à partir du plugin Elastic.

Configurer les actions pour Elastic
The Elastic plugin does not support performing actions. But using “No Action” alerts can be generated in the Netskope CTO module.
To configure this action, follow these steps.
- Aller à l'utilisateur Risk Exchange > Actions.
- Click Add Action Configuration.
- Select une règle de gestion, une configuration et une action.

- Pour générer des alertes dans le module CTO, activez Generate Alert et activez également Perform action during the maintenance window si vous souhaitez effectuer une action pendant la fenêtre de maintenance. Assurez-vous d'activer le module CTO (Ticket Orchestrator) à partir de Settings > General.
- Cliquez sur Save.
Validez le plugin Elastic
Valider le retrait
Pour vérifier les utilisateurs extraits d'Elastic, rendez-vous à Risk Exchange > Users.

Go to Settings > Logging and search for logs based on the plugin configuration.

Pour vérifier les utilisateurs disponibles pour la traction sur la plateforme Elastic, allez sur Security dans le panneau de gauche, puis allez sur Explore > Users > All Users. Vérifiez les utilisateurs disponibles en permanence sur la plateforme.

Pour vérifier que les scores utilisateurs ont été consultés, allez sur Security > Explore > Users > User Risk.

Validez les actions
Ce plugin ne permet pas d'effectuer des actions.
Dépannage
Impossible de sauvegarder le plugin à partir de Plugin Repo
Réception d'une erreur interne du serveur lors de la récupération des mises à jour du dépôt de plugins CE lorsqu'un plugin New est ajouté.

What to do: Ce problème sera résolu dans la prochaine version de CE, mais pour l'instant téléchargez le zip du plugin et ajoutez le plugin dans un repo. Ajoutez le répertoire New dans CE Plugin Repositories. Le plugin New sera ajouté dans CE.
Impossible d'extraire des utilisateurs ou des scores de risque d'utilisateur
Si vous ne parvenez pas à extraire des utilisateurs ou des scores de risque utilisateur dans CE, vérifiez les scénarios possibles ci-dessous.
- Les utilisateurs sont disponibles sur la plateforme pour tirer
- L'utilisateur est disponible dans la plage initiale donnée dans le plugin.
- Les notes de risque des utilisateurs ne sont pas tirées dans CE.
What to do:
- If the users are not fetched from the plugin check if you have users available on the Elastic platform.
- Si vous avez des utilisateurs disponibles sur Elastic à tirer, vérifiez la date de dernière vue à laquelle les utilisateurs sont disponibles. Vérifiez la plage initiale fournie dans la configuration du plugin. La plage initiale doit être supérieure ou égale à la dernière durée disponible sur l'Elastic afin que les utilisateurs puissent être tirés.

- Si vous n'êtes pas en mesure d'obtenir les scores de risque des utilisateurs après que ceux-ci ont été retirés, vérifiez que vous avez ajouté les autorisations correctes à votre utilisateur et que les scores sont disponibles pour les utilisateurs.

