Ce document explique comment configurer le plugin Elastic v1.0.0 pour le module Risk Exchange de la plateforme Netskope Cloud Exchange. Ce plugin est utilisé pour récupérer les utilisateurs disponibles sur la page Security > Explore > Users > All users et leurs scores de risque respectifs disponibles sur la page Security > Explore > Users > User risk de l'instance Elastic configurée. Ce plugin ne permet pas d'effectuer des actions sur les utilisateurs.
Calcul du score de Risk Exchange => | 100 - Elastic Risk Score | x 10.
Conditions préalables
Pour réaliser cette intégration, vous avez besoin de :
- Un locataire Netskope (ou plusieurs, par exemple des instances de production et de développement/test).
- A Netskope Cloud Exchange tenant with the Tenant plugin and Risk Exchange plugin already configured.
- Informations d'identification de l'instance Elastic (nom d'utilisateur, mot de passe, URL de base de l'API pour Elastic Search, clé API)
- Connectivité à l'hôte suivant : instance élastique.
Support des plugins Elastic
Ce plugin récupère les utilisateurs disponibles sur la page Sécurité > Explorer > Utilisateurs > Tous les utilisateurs et leurs scores de risque respectifs disponibles sur la page Sécurité > Explorer > Utilisateurs > Risque de l'utilisateur à partir de l'instance Elastic configurée.
| Type de données extraites | Les utilisateurs et leur score de risque |
| Actions soutenues | No action |
Mises en correspondance
La cartographie sera utilisée pour afficher les détails des utilisateurs tirés. Les champs mappés lors de la configuration du plugin seront visibles sur la page Enregistrements une fois les données extraites. Vous trouverez ci-dessous la cartographie suggérée qui doit être utilisée lors de la configuration du plugin.
Cartographie en mode "pull" pour les utilisateurs
| Champ du plugin | Type de données attendu | Nom de champ suggéré | Stratégie suggérée pour les agrégats de terrain |
|---|---|---|---|
| nom d'utilisateur | String | Username | Unique |
| calculated_score_norm | Number | Score | Overwrite |
| calculated_score | Number | Score calculé | Overwrite |
| calculated_level | String | Niveau de score | Overwrite |
| Score normalisé de Netskope | Number | Score normalisé | Overwrite |
Note that Netskope Normalized Score will be calculated using calculated_score_norm.
Cartographie des scores
Le score sera normalisé dans le Cloud Exchange à l'aide de la formule ci-dessous :
Calcul du score de Risk Exchange => | 100 - Elastic Risk Score | 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
Voici 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
Détails de l'API
Liste des API utilisées
| Point final de l'API | Méthode | Champ d'application du client API | Cas d'utilisation |
|---|---|---|---|
| /_security/oauth2/token | PUBLIER | manage_token | Get OAuth2 token |
| /logs-*/_search | PUBLIER | logs-* => accès en lecture | Fetch users |
| /risk-score.*/_search | PUBLIER | score de risque* => accès en lecture | Récupérer les scores |
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 encodé 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 |
|---|---|
| Content-Type | application/json |
| Accept | application/json |
| Authorization | Porteur <access_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 |
|---|---|
| Content-Type | application/json |
| Accept | application/json |
| Authorization | Porteur <access_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"
}
]
}
}
}
}
]
}
}
Matrice de performance
Voici les relevés de performances effectués sur une grande pile CE avec ces spécifications de VM, en tirant des scores de risque utilisateur de 100 000.
| Détails de la pile | Taille : Grande RAM : 32 GB CPU : 16 cœurs |
| Temps nécessaire pour stocker les dossiers d'utilisateurs extraits et mis à jour | ~ 32 minutes |
Agent utilisateur
netskope-ce-5.1.0-cre-elastic-v1.0.0
Workflow
- Créer des rôles.
- Configurer un utilisateur avec un rôle.
- Créez une clé API.
- Configurez le plugin Elastic.
- Ajoutez une règle métier d'échange de risques pour Elastic.
- Ajoutez une action d'échange de risque pour Elastic.
- Validez le plugin Elastic.
Cliquer sur « play » pour regarder une vidéo.
Créer des rôles
- Connectez-vous à Elastic (Kibana, Elastic Search) et allez sur Management > Stack Management > Security > Roles depuis le panneau de gauche.
- Cliquez Create Roles.

- Indiquez un nom de rôle et sélectionnez un accès manage_token dans les privilèges du cluster.
- Descendez jusqu'à Index privileges et ajoutez logs-* et risk-score.*. dans les index et cliquez sur Créer un rôle.

Création d'un utilisateur avec le rôle New
- Accédez à Users depuis la gestion de la pile. Cliquez sur Create User et fournissez un nom d'utilisateur, une adresse e-mail, un mot de passe, confirmez le mot de passe, puis sélectionnez le rôle précédemment créé dans la liste déroulante Privilèges. Cliquez sur Create User.

Créer une clé API (pour la méthode d'authentification par clé API)
- Accédez à API Keys sous Sécurité dans Gestion de la pile. Cliquez sur Create API Key.

- Indiquez un nom et activez le bouton à bascule Restreindre les privilèges. Ajoutez ce dictionnaire dans le descripteur de rôle.
{ "role-a": { "cluster": [ "all" ], "indices": [ { "names": [ "logs-*", "risk-score.*" ], "privileges": [ "read" ], "allow_restricted_indices": false } ], "applications": [], "run_as": [], "metadata": {}, "transient_metadata": { "enabled": true } } } - Enable Include metadata and add this in it.
{ "application": "Netskope Cloud Exchange" }
- Cliquez sur Create API Key.
Copiez la clé API disponible sur la page et enregistrez-la dans un endroit sûr car elle ne sera visible qu'une seule fois.
Configurer le plugin Elastic
- Dans Cloud Exchange, allez à Settings > Plugins. Cherchez et sélectionnez la boîte de plugin Elastic v1.0.0 (CRE) .

- Entrez un nom de configuration et un intervalle de synchronisation...

- Cliquez sur Next et entrez ces paramètres de configuration :
- Base URL : URL de base de l'API de votre instance Elastic.
- Authentication Method (Méthode d'authentification) : Select le type de méthode d'authentification utilisé pour effectuer l'appel API à l'instance Elastic.
- Username : Nom d'utilisateur de l'instance Elastic. Requis pour le type d'authentification "Authentification de base (nom d'utilisateur-mot de passe)".
- Mot de passe : Mot de passe de l'instance Elastic. Requis pour le type d'authentification Basic Authentication (nom d'utilisateur-mot de passe).
- Clé API : Clé API générée par l'instance Elastic. Requis pour le type d'authentification API Key Authentication.
- Plage initiale : Nombre de jours à partir desquels les utilisateurs doivent être extraits pour l'exécution initiale.

- Cliquez Next. Select l’Entité depuis le menu déroulant de l’Entité.
Les champs Entity peuvent être créés depuis la page de l’éditeur de schéma ou en utilisant l’option + Add Field du menu déroulant du champ.
Fournissez la cartographie du terrain. Pour la cartographie suggérée, consultez la section Cartographies .
- Cliquez Save.

Ajouter une règle métier d'échange de risques pour Elastic
- Dans Risk Exchange, allez à Business Rules.
- Cliquez sur Create New Rule dans le coin supérieur droit.
- Saisissez un nom de règle et configurez la requête en fonction de vos besoins.

- Cliquez sur Save.
Ajouter des actions d'échange de risques pour Elastic
Le plugin Elastic ne permet pas d'effectuer des actions. Mais l'utilisation de l'option Pas d'action peut générer des alertes dans le module Ticket Orchestrator.
Vous pouvez effectuer les actions sur les utilisateurs tirés d'Elastic sur le locataire Netskope.
Pour configurer cette action :
- Dans Risk Exchange, allez à Actions.
- Cliquez sur Add Action Configuration dans le coin supérieur gauche.
- Select une règle de gestion, la configuration de votre plugin et une action (pas d'action) dans les listes déroulantes correspondantes.

- Pour générer des alertes dans le module Ticket Orchestrator, activez la case à cocher Générer une alerte, et activez de même l'option Effectuer une action pendant la fenêtre de maintenance si vous souhaitez effectuer une action pendant la fenêtre de maintenance. Veillez à activer le module Ticket Orchestrator.
- Activez la case à cocher Require Approval si une approbation est nécessaire avant d'effectuer l'action.
- Cliquez sur Save.
Validez le plugin Elastic
Valider sur Cloud Exchange
Pour vérifier que les utilisateurs ont tiré d’Elastic, rendez-vous sur Risk Exchange > Records. Select l’entité utilisée lors de la configuration du plugin Elastic.
Va sur Logging et cherche des journaux en fonction de la configuration du plugin.
Valider sur Elastic
Dans le panneau de gauche, accédez à Security et cliquez sur Explore > Users > All users.
Les scores des utilisateurs sont extraits de Security > Explore > Users > User risk.
Ce plugin ne permet pas d'effectuer d'actions.
Dépannage du plugin Elastic
Impossible d'extraire des utilisateurs ou des scores d'utilisateurs
Si vous n'arrivez pas à extraire des utilisateurs ou des scores d'utilisateurs dans Cloud Exchange, cela peut être dû à l'une des raisons suivantes :
- Les utilisateurs sont disponibles sur la plateforme pour tirer.
- L'utilisateur est disponible dans la plage initiale donnée dans le plugin.
- Les scores des utilisateurs ne sont pas repris dans Cloud Exchange.
- Le mappage n'est pas effectué correctement lors de la configuration du plugin.
What to do:
- Si les utilisateurs ne sont pas récupérés à partir du plugin, vérifiez si vous avez des utilisateurs disponibles sur la plateforme Elastic.
- 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 ne parvenez pas à obtenir les scores des utilisateurs après que ceux-ci aient été retirés, vérifiez que les autorisations accordées à votre utilisateur sont correctes et que les scores sont disponibles pour les utilisateurs.
- Veillez à fournir une cartographie correcte, veillez à cartographier correctement le champ des scores.
Impossible de configurer le plugin
Si vous ne parvenez pas à configurer le plugin, cela peut être dû à l'une des raisons suivantes :
- Les autorisations appropriées sont définies pour les informations d'identification fournies.
- Les valeurs correctes sont fournies dans les paramètres de configuration.
What to do:
- Veillez à fournir les autorisations nécessaires.
- Veillez à fournir des valeurs correctes dans les paramètres de configuration.
Impossible d'effectuer une action sur un tiers
Si vous ne parvenez pas à configurer le plugin, vérifiez que le bouton à bascule "Require Approval" est activé lorsque vous effectuez une action.
What to do:
Veillez à désactiver le contrôle d'approbation ou à approuver la demande.

