Ce document explique comment configurer le plugin Okta avec le module Cloud Risk Exchange de la plateforme Netskope Cloud Exchange. Le plugin Okta récupère les utilisateurs( pageDirectory > People ), leurs niveaux de risque et leurs applications( pageApplications ) à partir de la plateforme Okta. Ce plugin effectue également des actions sur les utilisateurs Okta, comme Ajouter des utilisateurs à un groupe, Supprimer des utilisateurs d'un groupe, Upsert User Risk, et Push risk score (en utilisant Security Events Provider).
Le score de risque Push permet d'agir via les changements d'appartenance à un groupe utilisés dans les politiques d'authentification Okta lorsque Netskope identifie un utilisateur à risque, et de partager les signaux de risque avec Okta Identity Threat Protection. Mappage du score de normalisation Netskope = RiskLevel Low : 875, RiskLevel Medium : 625, RiskLevel High : 375, RiskLevel None.
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.
- UEBA avancé déjà configuré sur votre locataire Netskope. Reportez-vous à cet article pour connaître les meilleures pratiques de l'UEBA avancé.
- Accès à votre domaine Okta et à votre jeton API pour effectuer des opérations de groupe.
- Pour le score de risque Push :
- La clé publique générée dans les étapes ci-dessous doit être hébergée publiquement.
- Netskope Advanced UEBA license.
- Licence Okta Identity Protection. Cliquez ici pour plus d'informations.
- Connectivité à l'un des hôtes suivants :
- https://<user>.oktapreview.com/
- https://<user>.okta.com/
- https://<user>.okta-emea.com/
Vous n'avez besoin que de l'une des URL mentionnées ci-dessus pour le plugin.
Support du plugin Okta
Okta prend en charge l'extraction des utilisateurs et de leurs niveaux de risque à partir de la page Profil de l'annuaire > et des applications à partir de la page Applications. Ce plugin permet d'effectuer des actions sur l'utilisateur.
| Type de données extraites |
|
| Actions |
|
Mises en correspondance
Cartographie d'extraction pour l'application
| Champ du plugin | Type de données attendu | Nom de champ suggéré | Stratégie globale suggérée |
|---|---|---|---|
| ID | String | Okta ID | Unique |
| Nom | String | Okta App Name | Unique |
| Étiquette | String | Okta App Label | Overwrite |
| Statut | String | Okta Status | Overwrite |
| SignOnMode | String | Mode d'ouverture de session Okta | Overwrite |
Cartographie en mode "pull" pour les utilisateurs
| Étiquette du champ du plugin | Type de données attendu | Étiquette suggérée pour le champ | Stratégie globale suggérée |
|---|---|---|---|
| ID de l'utilisateur | String | ID de l'utilisateur | Unique |
| Courriel principal | String | Courriel principal | Unique |
| Nom d'utilisateur (email) | String | Login Email | Unique |
| Deuxième courriel | String | Deuxième courriel | Overwrite |
| Prénom | String | Prénom | Overwrite |
| Nom de famille | String | Nom de famille | Overwrite |
| Niveau de risque | String | Niveau de risque | Overwrite |
| Score normalisé de Netskope | Number | Score normalisé | Overwrite |
Cartographie des scores
Le type de score attendu sur Okta est faible, moyen et élevé. Assurez-vous que les scores sont mappés en tant que String avec les scores pris en charge par Okta ci-dessus lorsque le schéma est créé pour utiliser l'action Push Risk Score.
La cartographie sera utilisée pour visualiser les utilisateurs tirés, leurs détails respectifs et les détails de l'application. Les champs mappés lors de la configuration du plugin seront visibles sur la page Enregistrements une fois les données extraites. Voici les mappings suggérés qui devraient être utilisés lors de la configuration du plugin.
Cartographie du champ de score historique
Créez un champ qui peut stocker les niveaux de score historiques pour l'action Push Risk Score d'Okta.
- Sur la page de l'éditeur de schéma, cliquez sur l'icône + pour ajouter les champs.
- Fournissez une étiquette de champ.
- Select Range Map pour les données Type.
- Dans le champ Score Mapping Field, sélectionnez le champ utilisé pour stocker le score normalisé de Netskope (notez qu'il doit s'agir d'un champ de fusion).
- Ajoutez la cartographie comme indiqué dans l'image ci-dessous.
- Select Append pour le paramètre Stratégie globale.
- Cliquez Save.

Permissions
Pour configurer le jeton API, assurez-vous d'avoir les privilèges d'un super administrateur.
Détails de l'API
Liste des API utilisées
| Détail de l'API | Méthode | Endpoint |
|---|---|---|
| Obtenir tous les utilisateurs | OBTENIR | /api/v1/users |
| Recherche du niveau de risque | OBTENIR | /api/v1/users/<user_id>/risque |
| Obtenir tous les groupes | OBTENIR | /api/v1/groups |
| Créer un groupe | PUBLIER | /api/v1/groups |
| Ajouter au groupe | PUT | /api/v1/groups/<group_id>/users/<user_id> |
| Retirer du groupe | DELETE | /api/v1/groups/<group_id>/users/<user_id> |
| Générer un fournisseur de sécurité | PUBLIER | /api/v1/security-events-providers |
| Récupérer tous les événements de sécurité Fournisseur | OBTENIR | /api/v1/security-events-providers |
| Mise à jour du fournisseur d'événements de sécurité | PUT | /api/v1/security-événements-fournisseurs/{id_fournisseur} |
| Risque pour l'utilisateur d'Upsert | PUT | /api/v1/users/<user_id>/risque |
| Score de risque de poussée | PUBLIER | /security/api/v1/security-events |
| Recherche d'applications | OBTENIR | /api/v1/apps |
Generating SET Token – for Push Risk Score Action: The SET Token will be generated using the JWT library using the RS256 Algorithm and the event schema.
Obtenir tous les utilisateurs
Endpoint: {{base_url}}/api/v1/users
Method: GET
Data
| Paramètres | Value |
|---|---|
| limit | 200 |
Headers
| Clé | Value |
|---|---|
| Accept | application/json |
| Content-Type | application/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"
}
}
}
]
Obtenir tous les groupes
Endpoint: {{base_url}}/api/v1/groups
Method: GET
Params
| Paramètres | Value |
|---|---|
| limit | 200 |
| filter | type eq OKTA_GROUP |
Headers
| Clé | Value |
|---|---|
| Accept | application/json |
| Content-Type | application/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"
}
}
},
|
Créer un groupe
Endpoint: {{base_url}}/api/v1/groups
Method: PUBLICATION
Data
{
"profile": {
"name": "<GROUP NAME>",
"description": "GROUP DESCRIPTION"
}
}
Headers
| Clé | Value |
|---|---|
| Accept | application/json |
| Content-Type | application/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"
}
}
}
Ajouter au groupe
Endpoint: {{base_url}}/api/v1/groups/{{group_Id}}/users/{{user_Id}}
Method: PUT
Headers
| Clé | Value |
|---|---|
| Accept | application/json |
| Content-Type | application/json |
| Authorization | SSWS <TOKEN> |
Sample Response
204 - <No Content>
Retirer du groupe
Endpoint: {{nase_url}}/api/v1/groups/{{group_Id}}/users/{{user_Id}}
Method: SUPPRIMER
Headers
| Clé | Value |
|---|---|
| Accept | application/json |
| Content-Type | application/json |
| Authorization | SSWS <TOKEN> |
Sample Response
204 <No Content>
Générer un fournisseur de sécurité
Endpoint:{{base_url}}/api/v1/security-events-providers
Method: PUBLICATION
Data
{
"name": "Netskope Security Events Provider",
"type": "Netskope",
"settings": {
"issuer": "<ISSUER URL>",
"jwks_url": "JWKS URL"
}
}
Headers
| Clé | Value |
|---|---|
| Accept | application/json |
| Content-Type | application/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"
]
}
}
}
}
Récupérer tous les événements de sécurité Fournisseur
Endpoint:{{base_url}}/api/v1/security-events-providers
Method: GET
Headers
| Clé | Value |
|---|---|
| Accept | application/json |
| Content-Type | application/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"
]
}
}
}
}
]
Mise à jour du fournisseur d'événements de sécurité
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
| Clé | Value |
|---|---|
| Accept | application/json |
| Content-Type | application/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"
]
}
}
}
}
Risque pour l'utilisateur d'Upsert
Endpoint: {{base_url}}/api/v1/users/00ufen752glXW1gMs1d7/risk
Headers
| Clé | Value |
|---|---|
| Accept | application/json |
| Content-Type | application/json |
| Authorization | SSWS <TOKEN> |
Method: PUT
Data:
{
"riskLevel": "<RISK_LEVEL>"
}
Headers
| Clé | Value |
|---|---|
| Accept | application/json |
| Content-Type | application/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"
]
}
}
}
}
Recherche d'applications
Endpoint: {{base_url}}/api/v1/apps
Method: GET
Data
| Paramètres | Value |
|---|---|
| limit | 200 |
Headers
| Clé | Value |
|---|---|
| Accept | application/json |
| Content-Type | application/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"
}
}
}
]
Score de risque de poussée
Endpoint: {{base_url}}/security/api/v1/security-events
Method: POST
Data: <SET TOKEN>
Headers
| Clé | Value |
|---|---|
| Accept | application/json |
| Content-Type | application/json |
Sample Response
202 response
Recherche d'applications
Endpoint: {{base_url}}/api/v1/apps
Method: GET
Data
| Parameter | Value |
|---|---|
| limit | 200 |
Headers
| Clé | Value |
|---|---|
| Accept | application/json |
| Content-Type | application/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"
}
}
}
]
Matrice de performance
Les mesures de performance ci-dessous sont effectuées sur une grande pile CE avec les spécifications VM mentionnées ci-dessous en tirant 500K enregistrements d'applications et d'utilisateurs du plugin Okta.
| Détails de la pile | Taille : Grande RAM : 32 GB CPU : 16 cœurs |
| Temps nécessaire pour stocker les dossiers de demande tirés | ~15 minutes |
| Temps nécessaire pour stocker les enregistrements d'utilisateurs tirés au sort avec les niveaux de risque | ~ 80 minutes |
Agent utilisateur
netskope-ce-5.1.0-cre-okta-v1.1.0
Workflow
- Configurez une politique de risque d'entité Okta.
- Créez un utilisateur Okta.
- Attribuer des rôles et des applications aux utilisateurs
- Obtenez votre jeton API.
- Obtenez votre domaine Okta.
- Générez une clé publique et une clé privée JWKS.
- Obtenez votre émetteur et l'URL JWKS.
- Hébergez la clé publique.
- Configure the Okta plugin.
- Configurez une règle de gestion.
- Configurer les actions.
- Validate the Okta plugin.
Cliquer sur « play » pour regarder une vidéo.
Configurer une politique de risque d'entité Okta
Pour ajouter la politique de risque de l'entité Okta, reportez-vous aux liens ci-dessous, assurez-vous de choisir la détection en tant que risque signalé par le fournisseur d'événements de sécurité.
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
Créer un utilisateur Okta
- Connectez-vous à Okta. Va sur Directory > People. Cliquez sur Add Person, saisissez les informations, puis cliquez sur Save.

- Après la création de l’utilisateur, il sera affiché sur la page Personnes. Cliquez sur votre utilisateur, allez dans Admin Roles, puis cliquez sur Add individual admin privileges.

- Dans le menu déroulant Rôle, sélectionnez Super Administrator et cliquez sur Save Changes.

Attribuer des rôles et des applications aux utilisateurs
- Créez un utilisateur distinct qui sera utilisé pour générer le jeton API et effectuer des opérations API.
- Connectez-vous à votre plateforme Okta en utilisant un compte administrateur et cliquez sur Admin.
- Allez dans Directory > People et cliquez sur Add Person.

- Select User pour le type d'utilisateur.
- Saisissez le prénom, le nom de famille et le nom d'utilisateur.
- Select le mot de passe selon vos besoins et cliquez sur Save.

- En utilisant le mot de passe sélectionné, configurez l'authentificateur pour l'utilisateur nouvellement créé.
- Sur la page Directory > People, sélectionnez l'utilisateur que vous avez récemment créé à partir du compte administrateur.
- Après vous être connecté avec succès à votre compte New , vous verrez l’onglet Rôles d’administrateur sur la page Personnes. Cliquez Admin Roles.
- Cliquez sur Add assignment.
- Select Organization Administrator dans la liste déroulante Rôle et cliquez sur Save.

- Accédez à l'onglet Applications du même utilisateur, cliquez sur Assign Applications, sélectionnez les applications Okta Workflows et Okta Workflow OAUTH , puis cliquez sur Save.

- Connectez-vous maintenant à la console d'administration Okta en utilisant l'utilisateur nouvellement créé et générez le jeton API.
Obtenez votre jeton API
- Connectez-vous à votre plateforme Okta et cliquez sur Admin.
- Dans le panneau de gauche, accédez à Security > API et cliquez sur Create Token.

- Saisissez un nom de jeton et cliquez sur Create Token.
- Copiez la valeur du jeton car elle ne sera visible qu'une seule fois et elle est nécessaire pour la configuration du plugin.
Obtenez votre domaine Okta
Vous pouvez obtenir le domaine Okta dans le coin supérieur gauche de votre page Okta. Cliquez sur votre nom d'utilisateur et vous verrez une URL de base sous votre nom d'utilisateur.
Veillez à ajouter https:// avec votre domaine Okta lorsque vous l'utilisez pour configurer le plugin.

Générer une paire de clés publique et privée JWKS (nécessaire pour l'action Push Risk Score pour Okta Identity Threat Protection)
Le Push Risk Score exige que la clé publique soit hébergée sur une URL publique. Voici une façon de générer la paire de clés publique et privée.
- Va à https://mkjwk.org/.
- Spécifiez les valeurs suivantes pour générer la paire de clés à partir de l'onglet RSA :
- Taille de la clé : 2048
- Utilisation de la clé : Signature
- Algorithme : RS256
- ID de la clé : SHA-256
- Afficher X.509 : Oui
- Cliquez sur Generate.
- Copiez et enregistrez la clé publique. Hébergez cette clé publique sur une URL publique. Cette URL publique sera nécessaire pour la configuration du partage. L'URL de base utilisée pour publier la clé publique sera utilisée comme URL de l'émetteur.

- Faites défiler vers le bas, copiez et notez la clé privée (format X.509 PEM) ; elle est requise pour la configuration du partage (n’utilisez pas le bouton « Copier dans le presse-papiers » ; copiez-la manuellement car elle peut contenir des sauts de ligne (\n) , ce qui entraînerait un format OEM invalide lors de son utilisation dans la configuration du plugin).

Notez que la clé publique doit être au format JWK (pour être hébergée publiquement) et que la clé privée doit être au format PEM.
JWKS Format
{
"keys":
[
<public key>
]
}
Obtenir l'émetteur et l'URL JWKS (obligatoire pour l'action Push Risk Score)
Vous devez héberger la clé publique sur une URL publique. Voici les étapes pour créer le point de terminaison de l'API dans Okta workflow pour le plugin Okta, où le point de terminaison de l'API publique sera utilisé comme URL JWKS hébergée publiquement.
Héberger la clé publique
- Connectez-vous à Okta et accédez à la console d'administration en cliquant sur Admin dans le coin supérieur droit.

- Accédez à la console de flux de travail en cliquant sur Workflow > Workflows console dans le panneau de gauche.

- Select l’onglet Flows depuis le panneau supérieur.

- Cliquez New Flow.

- Cliquez Add Event.

- Cliquez API Endpoint.

- La boîte de dialogue des paramètres du point de terminaison de l'API s'ouvrira. Select le niveau de sécurité None (public service) et cliquez sur Close.

- Cliquez Add function.

- Saisissez « Return raw » dans le champ de recherche et sélectionnez Return Raw dans la liste.

- Apportez maintenant les modifications suivantes à l'en-tête et au corps de la fonction Return Raw.
- Collez le contenu ci-dessous dans le champ des en-têtes :
{ "Content-Type": "application/json" } - Collez la clé publique au format JWKS dans le corps du message :
{ "keys":[ { "kty":"RSA", "e":"AQAB", "use":"sig", "kid":"1pXZQNc3YiNjWUD2rZ2WqFNQzBANcSzrGhrlhBExLzA", "alg":"RS256", ************"n":"g5r_OAU9OE-ybhedeFDWv7XGKmF18R6JUFXmOKO0TWlkR2wfhtA8vXCH0il60ICUNmZV_axnnqUjzGezF_3D6coNt1NEocCiaYeX46tdJCLg8ac9furS0g-VbftPcg6DpkwrIN5t1UphNlPvkxhnmfMYxzSo9Pq_Sb0LPImL2h9a32Iw-GY2Zr69ctNQxhghR6_Aqaps5iQRqjAPs3CQ" } ] }
- Collez le contenu ci-dessous dans le champ des en-têtes :
- Cliquez sur Save en haut et saisissez un nom pour le flux.

- Développez le menu déroulant « Flux désactivé » en haut et activez-le.


- Copiez l'URL d'appel depuis les paramètres du point de terminaison, puis cliquez sur </> pour ouvrir les paramètres du point de terminaison.


- La clé publique sera hébergée sur l'URL publique et vous pourrez la consulter à l'aide de Invoke URL. Copiez l'URL et collez-la dans votre navigateur comme indiqué ci-dessous dans l'étape suivante.
- L'URL du locataire du compte Okta utilisé pour héberger la clé publique sera utilisée comme URL de l'émetteur. Notez l'URL du locataire.

Configure the Okta Plugin
- Connectez-vous à Cloud Exchange et allez sur Settings > Plugins. Cherchez et sélectionnez la boîte de plugin Okta 1.1.0 (CRE) .

- Saisissez les informations de base :
- Nom de la configuration : Saisissez un nom pour la configuration.
- Sync Interval : Entrez l'heure à laquelle le plugin sera synchronisé.

- Cliquez sur Next. Entrez les paramètres de configuration pour l'authentification :
- Domaine Okta : Saisissez le domaine Okta que vous avez obtenu précédemment.
- API Token : Saisissez le jeton API que vous avez obtenu précédemment.
- Initial Range (in days) : Nombre de jours pour extraire les utilisateurs pour l'analyse initiale.

- Cliquez Next. Select l'entité dans la liste déroulante 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.
Fournissez la cartographie du terrain. Pour la cartographie suggérée, consultez la section Cartographies .

- Cliquez Save.

Ajouter une règle de gestion de l'échange de risques pour Okta
Ajoutez une règle de gestion pour filtrer les utilisateurs pour lesquels vous souhaitez effectuer des actions. Procédez comme suit pour configurer une règle de gestion.
- Allez à Risk Exchange > Business Rule et cliquez sur Create New Rule.
- Select l'entité de règle métier et définissez le filtre selon vos besoins pour effectuer une action sur les utilisateurs. Cliquez Save.

Ajouter des actions d'échange de risques pour Okta
Vous trouverez ci-dessous la liste des actions disponibles pour le plugin Okta.
Ajouter au groupe
Lorsqu'une action se déclenche, cette action ajoute des utilisateurs au groupe qui a été mentionné lors de la création de la configuration de l'action.
- Allez à Risk Exchange > Actions et cliquez sur Add Action Configuration.
- Select une règle de gestion, une configuration (plugin) et une action (ajouter au groupe).
- Fournissez l'adresse électronique de l'utilisateur comme valeur statique ou comme champ d'enregistrement d'une règle de gestion.
- Select à partir de la liste de groupes existante disponible dans Static, ou sélectionnez Create New Group et indiquez le nom du groupe dans la zone de texte Nom du groupe dans Static. Lors de l'ajout du groupe, veillez à utiliser le groupe statique et non le champ d'enregistrement de la règle de gestion.
- Cliquez sur Save.

Retirer du groupe
Lorsqu'une action se déclenche, cette action supprime les utilisateurs du groupe qui a été mentionné lors de la création de la configuration de l'action.
- Allez à Risk Exchange > Actions et cliquez sur Add Action Configuration.
- Select une règle de gestion, une configuration (plugin) et une action (retirer du groupe).
- Indiquez l'adresse électronique de l'utilisateur en tant que valeur statique ou champ d'enregistrement de la règle de gestion.
- Select un groupe existant dans le menu déroulant Groupe pour supprimer l'utilisateur d'un groupe existant.
- Cliquez Save.

Score de risque de poussée
Chaque fois qu'une action se déclenche, cette action envoie le niveau de score actuel et précédent de l'utilisateur à Okta (à condition que l'utilisateur existe dans le locataire Okta).
Les scores ne seront poussés pour un utilisateur que si celui-ci est disponible sur Okta. Si le score de l'utilisateur est poussé pour la première fois, la valeur de previous_level sera nulle dans Okta.
Suivez les étapes suivantes pour effectuer l'action Push Risk Score sur les utilisateurs Okta.
- Allez à Risk Exchange > Actions et cliquez sur Add Action Configuration.
- Select Règle de gestion, configuration et type d'action (score de risque).
- Saisissez les paramètres d'action suivants :
- Nom d'utilisateur : Indiquez un nom d'utilisateur statique pour la personne sur laquelle vous souhaitez effectuer l'action. Si vous souhaitez effectuer une action sur le champ de la règle de gestion, sélectionnez le champ dans la liste déroulante Champ de l'enregistrement de la règle de gestion.
- Score de l'utilisateur : Score associé à l'e-mail de l'utilisateur. Elle devrait être présentée sous la forme de niveaux : faible, moyen, élevé. Si vous sélectionnez l'option Statique pour ce champ, indiquez des valeurs séparées par des virgules : 'niveau_précédent', 'niveau_actuel', comme faible, moyen. Si vous sélectionnez le champ d'enregistrement de la règle de gestion, assurez-vous que l'action de fusion est définie sur Fusionner dans l'éditeur de schéma pour le champ sélectionné.
Reportez-vous à la section Mappage des champs du score historique pour configurer le champ requis pour ce paramètre.
- Motif Admin : Le champ "Reason Admin" permet d'expliquer l'événement. Par exemple, le nom de la politique de l'événement Netskope.
- Issuer URL : URL utilisée pour héberger publiquement la clé publique JWK (URL du locataire Okta utilisée pour héberger la clé publique dans ce cas).
- URL JWKS : URL où la clé publique JWK est hébergée publiquement (URL d'invocation dans ce cas).
- Clé privée : Clé privée (format PEM) correspondant à la clé publique hébergée publiquement.
Veillez à fournir l'URL de l'émetteur, l'URL du JWKS et la clé privée comme statiques et non comme champ source.
- Cliquez Save.

Risque pour l'utilisateur d'Upsert
Chaque fois qu'une action se déclenche, cette action Upsert met à jour le risque de l'utilisateur sur Okta.
- Allez à Risk Exchange > Actions et cliquez sur Add Action Configuration.
- Select une règle de gestion, une configuration (plugin) et une action (suppression du risque utilisateur).
- Fournissez l'adresse électronique de l'utilisateur comme valeur statique ou comme champ source. Ajouter le niveau de risque comme statique et
- Cliquez sur Save.
Les valeurs autorisées pour le niveau de risque de cette action sont FAIBLE et ÉLEVÉ. Toute autre valeur sera ignorée et l'action ne sera pas effectuée sur l'utilisateur.


No Action
Cette action n'effectuera aucune action sur les utilisateurs. Vous pouvez utiliser cette action pour générer les alertes UBA dans le module CTO de Netskope.
Vous pouvez effectuer les actions sur les applications et les utilisateurs tirés d'Okta sur le locataire Netskope.
Validate the Okta Plugin
Validation sur Netskope CE
Pour valider les enregistrements d'applications et d'utilisateurs provenant d'Okta, rendez-vous sur Logging et recherchez les journaux provenant du plugin Okta.
Exemple : message comme "CRE Okta"

Pour vérifier les données extraites, allez sur Records, sélectionnez le type d'entité que vous avez utilisé lors de la configuration du plugin Okta. Vérifiez les dossiers tirés au sort.
Pour les utilisateurs :

Pour les candidatures :

Vérifiez les journaux de Logging pour le plugin Okta pour les actions effectuées sur les utilisateurs.
Pour l'action Ajouter au groupe :

Pour l'action Retirer du groupe :

Pour l'action Push Risk score :

Pour l'action Upsert User Risk :

Allez dans Journaux d'action sous Risk Exchange pour vérifier les journaux des actions effectuées sur l'utilisateur.
Si l'option Require Approval est activée lors de la configuration de l'action, assurez-vous de fournir l'approbation à partir de la page Journal de l'action montrée ci-dessus en sélectionnant les entrées d'approbation en attente et en activant l'option Require Approval.

Validate on Okta
Le plugin extrait les applications de la page Applications disponible sur Okta.

Ouvrez la section Okta Admin et allez sur Directories > Groups. . Trouvez le groupe que vous avez sélectionné dans la configuration de l'action. Ici, vous pouvez vérifier les groupes créés, et l'utilisateur ajouté dans les groupes, ou supprimé du groupe.


Pour vérifier le score de risque Push et l'action Upsert User Risk, accédez au journal du système de rapports. Les journaux de l'action "push risk score" auront pour info d'événement "Security Event Provider Reported Risk" et les journaux de l'action "Upsert User Risk" auront pour info d'événement " User Risk was detected ".
Journal pour l'action Push Risk Score :

Journal de l'action Upsert User Risk :

Allez à Reports > Reports, faites défiler vers le bas jusqu'à Protection contre les menaces d'identité, et cliquez sur Entity Risk Report.

Vérifiez les détections de risque d'entité, vous pourrez voir tous les scores de risque de poussée pour l'utilisateur. Les utilisateurs seront tirés de la même page. Les utilisateurs ne seront tirés que si les niveaux de risque sont détectés sur cette page.
Il faut du temps pour refléter les scores poussés sous les Détections de risque d'entité sur Okta après que l'action ait été effectuée sur CE. Pour le score de risque Push et le risque Upsert User, le changement de niveau de risque est illustré ci-dessous :

Dépannage du plugin Okta
Réception d'une erreur dans le plugin workflow
- Impossible de sauvegarder la configuration de partage et réception de l’erreur ci-dessous dans les loggers : CRE Okta [CRE Okta] : Reçu code d’erreur 400. Résumé de l’erreur : validation API échouée : nom. Causes d’erreur : [{'errorSummary' : 'name : Security Events Provider name must be unique'}].

Vous pouvez recevoir cette erreur si une configuration de partage avec Okta de destination est actuellement présente sur CE ou si elle a été créée et supprimée auparavant.
Cause: Lors de la création de la configuration de partage, un Fournisseur d’Événements de Sécurité New est créé sur les locataires Okta sous le nom – Netskope Fournisseur d’Événements de Sécurité.
Mais le CRE d’Okta Netskope accepte une seule cartographie 1:1 du partage avec le fournisseur d’événements de sécurité.
What to do: Supprimez le fournisseur d'événements de sécurité existant de la plateforme Okta afin de modifier ou de créer une New configuration de partage avec Okta dans Netskope CE. Voici les étapes pour supprimer le fournisseur d’événements de sécurité existant :- Connectez-vous à votre locataire Okta.
- Allez à Security > Device Integrations.

- Click the Receive shared signals tab
- Pour le signal partagé nommé Netskope Security Events Provider, dépliquez Actions et sélectionnez Delete.

Ensuite, vous pouvez créer une configuration de partage New pour le plugin Okta, ou modifier la configuration existante.
- CRE Okta [nom_de_configuration] : Code d'erreur 400 reçu. Résumé des erreurs : Échec de la validation de l’API : settings.jwksUrl. Causes de l'erreur : [{'errorSummary': 'settings.jwksUrl: N'est pas une URL valide. Exemple valide : http://www.okta.com'}].
What to do: Vérifiez la clé publique hébergée sur l'URL publique.
- CRE Okta [CRE Okta] : Impossible d'établir une connexion avec la plateforme Okta lors de la « Récupération de l'ID de clé ». Le serveur proxy ou le serveur Okta est inaccessible. Erreur : HTTPConnectionPool(hôte='35.172.183.204′, port=8080) : Nombre maximal de tentatives dépassé pour l'URL : /jwks (Causé par NewConnectionError('<urllib3.connection.HTTPConnection object at 0x7f075a904430>: Échec de l'établissement d'une New connexion : [Errno 111] Connexion refusée'))
What to do: Vérifiez le site où votre clé publique est hébergée. Si vous utilisez un script, assurez-vous qu'il est en cours d'exécution.
- CRE Okta [CRE Okta] : Reçu le code d'erreur 400. Résumé de l'erreur : Le résumé de l'erreur n'est pas disponible. Erreur : invalid_key. Description de l'erreur : Aucune clé correspondante n'a été trouvée dans l'uri JWKS, kid=8s4cciA4UPIN7aVyTwVEhE9JTUSL87XALbCY9SUKvws.
What to do: Ceci indique que la clé privée fournie dans la configuration de l'action ne correspond pas à la paire de clés publiques fournie dans la configuration ou que la clé publique n'est pas hébergée correctement. Régénérez les clés publique et privée ou vérifiez les clés publique et privée ajoutées et assurez-vous que la clé hébergée est accessible.
- CRE Okta [Okta] : Le groupe avec l'ID '00ga2i326jTvm8sxV1d7′ n'existe pas sur Okta.
What to do: Si vous recevez l'erreur ci-dessus, cela signifie que le nom du groupe fourni dans la configuration de l'action n'existe pas sur la plateforme Okta, modifiez le nom du groupe ou créez le même groupe sur Okta. - CRE Okta [CRE Okta] : Clé privée invalide fournie, assurez-vous que la clé privée est au format PEM.
What to do: Si vous avez reçu l'erreur ci-dessus, cela signifie que la clé privée fournie n'est pas valide ou n'est pas dans un format PEM valide.
- CRE Okta [Okta] : Domaine Okta invalide fourni.
What to do: Si vous avez reçu l'erreur ci-dessus, cela signifie que le domaine Okta fourni dans la configuration du plugin n'est pas valide. - CRE Okta [okta] : Le plugin Okta s'attend à ce que la valeur du paramètre 'Scores' soit l'une des valeurs suivantes : faible, moyenne ou élevée.
What to do: Si vous recevez le message d'erreur ci-dessus, cela peut être dû au fait que la valeur du score fournie dans la configuration de l'action est autre que faible, moyenne et élevée. Notez qu'Okta s'attend à ce que les scores soient faibles, moyens et élevés.
- CRE Okta [Okta] : Une erreur de validation s'est produite. Erreur : L'authentification a échoué, vérifiez le jeton API fourni.
- CRE Okta [Okta] : Received exit code 401, Validation error occurred, HTTP Error while fetching applications for page 1.
What to do: Si vous avez reçu l'erreur ci-dessus, cela signifie que le Token API Okta fourni dans la configuration du plugin est invalide/expiré.
Impossible d'effectuer une action sur l'utilisateur
Si vous n'êtes pas en mesure d'effectuer l'action sur l'utilisateur, cela peut être dû à l'une des raisons suivantes :
- L'utilisateur n'est pas présent sur Okta.
- Le niveau de risque de l'utilisateur ne correspond pas au niveau de risque Okta.
- L'action est configurée avec le bouton bascule Require Approval activé.
What to do:
- Vérifiez si l'utilisateur sur lequel vous essayez d'effectuer une action existe sur Okta, si l'utilisateur n'existe pas, vous recevrez un journal pour l'utilisateur non trouvé sur Okta lorsque l'action sera effectuée.
- Okta ne prend en charge que les niveaux de risque LOW et HIGH pour l'action Upsert User Risk et pour l'action Push Risk Score, les types pris en charge seront low, medium et high. Tout autre risque dans un autre format ne sera pas équivalent à Okta et l'action échouera pour l'utilisateur.
- Si l'utilisateur existe et que l'action n'est toujours pas exécutée et qu'aucune erreur n'est reçue, cela peut être dû au fait que la configuration de l'action a activé le bouton de basculement "Require Approval". Si elle est activée, allez sur la page des journaux d'action dans le module CRE et sélectionnez les journaux ajoutés pour l'approbation, puis cliquez sur le bouton d'approbation.
Les applications ne sont pas extraites d'Okta
Si aucune donnée relative à la demande n'est extraite, cela peut être dû à l'une ou l'autre des causes suivantes :
- Aucune application n'est disponible sur la plateforme pour tirer.
- La cartographie n'est pas ajoutée dans le plugin pour stocker des applications.
What to do:
- Allez sur Okta et vérifiez si les applications sont disponibles sur la page des applications.
- Modifiez la configuration du plugin et vérifiez la page Entity Source, il devrait y avoir des champs mappés afin d'obtenir la même chose.
Le Push Risk Score ne se reflète pas sur la plateforme Okta
Les loggers fournissent une réponse positive pour l'action Push Risk Score mais le niveau de risque n'est pas mis à jour sur Okta, cela peut être dû au fait que l'email de l'utilisateur Netskope qui est utilisé pour l'action Push Risk Score ne correspond pas au nom d'utilisateur de l'utilisateur sur Okta.
What to do:
Assurez-vous que l'email Netskope utilisé correspond à l'email de connexion ainsi qu'à l'email primaire de l'utilisateur sur Okta.
Le niveau de risque n'est pas recherché ou mis à jour pour un utilisateur spécifique.
Le niveau de risque de tous les utilisateurs est récupéré, sauf pour un utilisateur spécifique, et une erreur se produit lorsque l'on tente de récupérer le risque de l'utilisateur. Cela peut être dû aux éléments suivants :
L'utilisateur dont le niveau de risque n'a pas été tiré et pour lequel l'erreur a été reçue, les informations d'identification de ce même utilisateur ont été utilisées pour se connecter à Okta afin de générer le jeton API. Il s'agit d'un comportement attendu de la part d'Okta : l'utilisateur qui a créé le jeton API, le niveau de risque de l'utilisateur ne peut pas être récupéré ou mis à jour pour le même jeton.
What to do:
Créez un utilisateur distinct et utilisez-le pour générer le jeton APO au lieu des utilisateurs normaux qui sont suivis. Pour plus de détails, reportez-vous à la section Attribuer des rôles et des applications aux utilisateurs.
Limites
Le plugin ne permet pas d'enregistrer la configuration de l'action Push Risk Score dans les scénarios suivants :
- Si la paire de clés publique et privée est incorrecte
- Si le fournisseur d'événements de sécurité Netskope existe déjà sur la plate-forme avec un émetteur et une paire JWKS différents de ceux fournis dans la configuration.
- Si la paire d'émetteurs et de JWKS fournie existe déjà sur la plateforme avec un fournisseur d'événements de sécurité différent.

