Ce document explique comment configurer le plugin Azure AD avec le module User Risk Exchange dans la plateforme Netskope Cloud Exchange. Le plugin Microsoft Azure AD récupère les utilisateurs à risque et leurs scores respectifs dans Microsoft Azure AD. Il permet également d'ajouter un utilisateur à un groupe, de le retirer d'un groupe et de confirmer les actions compromises sur les utilisateurs. Les utilisateurs sont tirés de Home > Risky Users dans la plateforme Microsoft Azure AD.
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 le plugin Tenant et le plugin Risk Exchange déjà configurés.
- Un compte Azure AD.
- Détails de configuration tels que l'ID du client (application), l'ID secret du client et l'ID du locataire.
- Connectivité avec les hôtes suivants :
- https://graph.microsoft.com/https://login.microsoftonline.com/https://portal.azure.com/
Support du plugin Azure AD
Le plugin Microsoft Azure AD URE récupère les utilisateurs et leur score respectif. Ce plugin permet également d'effectuer des actions.
| Type de données extraites | Utilisateurs |
| Types d'actions soutenues | Ajouter au groupe, Retirer du groupe, Confirmer la compromission, Aucune action |
Mises en correspondance
Champs tirés
| Champs Microsoft Azure AD | Champs CE de Netskope |
|---|---|
| userPrincipalName | |
| riskLevel | score |
Correspondance des scores
| Default Netskope Score | Default Netskope Score Range |
|---|---|
| Critique | 0-250 |
| Haut | 251-500 |
| Moyen | 501-750 |
| Faible | 751-1000 |
| Notes Microsoft Azure AD | Netskope CE URE Scores |
|---|---|
| none hidden unknownFutureValue | Aucun |
| low | 875 |
| medium | 625 |
| high | 375 |
Permissions
Consultez la section Obtenir vos informations d'identification Azure AD pour plus de détails sur l'obtention et la fourniture des autorisations nécessaires.
- Group.Create
- Group.ReadWrite.All
- GroupMember.Read.All
- IdentityRiskyUser.ReadWrite.All
- User.Read.All
Détails de l'API
Liste des API utilisées
| Point final de l'API | Méthode | Cas d'utilisation |
|---|---|---|
| <tenant_id>/oauth2/token | OBTENIR | Get OAuth2 token |
| /identityProtection/riskyUsers | OBTENIR | Recherche d'utilisateurs et de scores |
| /groups | OBTENIR | Obtenir tous les groupes |
| /groups | PUBLIER | Créez un groupe New |
| /groups/{group-id}/members/$ref | PUBLIER | Ajouter un membre au groupe |
| /groups/{group-id}/members/{member-id}/$ref | DELETE | Retirer un membre du groupe |
| /identityProtection/riskyUsers/confirmCompromised | PUBLIER | Confirmer qu'un utilisateur est compromis |
| /users/{utilisateur-mail} | OBTENIR | Obtenir l'utilisateur par courrier électronique |
Obtenir un jeton d'authentification
API Endpoint: <Base URL>/<tenant_id>/oauth2/token
Method: GET
Body:
{
grant_type": "client_credentials",
client_id": client_id,
client_secret": client_secret,
resource": "https://graph.microsoft.com"
}
Sample API Response:
{
"token_type": "Bearer",
"expires_in": "3599",
"ext_expires_in": "3599",
"expires_on": "1666161987",
"not_before": "1666158087",
"resource": "https://graph.microsoft.com",
"access_token": "eyJ0eXAiOiJKV1Q...."
}
Recherche d'utilisateurs et de scores
API Endpoint: <Base URL>/identityProtection/riskyUsers
Method: GET
Headers:
| Clé | Value |
|---|---|
| Content-Type | application/json |
| Accept | */* |
| Authorization | Porteur <auth_token> |
Sample API Response:
{
"@odata.context": "https://graph.microsoft.com/v1.0/$metadata#identityProtection/riskyUsers",
"@odata.nextLink": "https://graph.microsoft.com/v1.0/identityProtection/riskyUsers?$top=1&$skiptoken=*****cbe5460********************4f1442c63a7b211674hdb2850a4421048fc_1",
"@microsoft.graph.tips": "Use $select to choose only the properties your app needs, as this can lead to performance improvements. For example: GET identityProtection/riskyUsers?$select=isDeleted,isProcessing",
"value": [
{
"id": "f8c8dcb2-21b7-4e20-985c-52**603300d",
"isDeleted": false,
"isProcessing": false,
"riskLevel": "high",
"riskState": "confirmedCompromised",
"riskDetail": "adminConfirmedUserCompromised",
"riskLastUpdatedDateTime": "2024-03-14T09:59:29.085289Z",
"userDisplayName": "User",
"userPrincipalName": "user@onmicrosoft.com"
}
]
}
Obtenir tous les groupes
API Endpoint: <Base URL>/groupes
Method: ALLEZ
Headers:
| Clé | Value |
|---|---|
| Content-Type | application/json |
| Accept | */* |
| Authorization | Porteur <auth_token> |
Parameters:
| Clé | Value |
|---|---|
| $filtre | not groupTypes/any(s:s eq 'DynamicMembership') |
| $top | 999 |
| $orderby | displayName |
| $select | id,displayName,groupTypes |
| $count | true |
Sample API Response:
{
"@odata.context": "https://graph.microsoft.com/v1.0/$metadata#groups(id,displayName,groupTypes)",
"@odata.nextLink": "https://graph.microsoft.com/v1.0/groups?$filter=groupTypes%2fany(s%3as+eq+%27DynamicMembership%27)&$top=1&$select=id%2cdisplayName%2cgroupTypes&$count=true&$skiptoken=RFNwdAoAAQAAAA",
"value": [
{
"id": "826e5e6c-f533-4a93-8420-fc9592ae3ca0",
"displayName": "TestDynamic",
"groupTypes": [
"DynamicMembership"
]
}
]
}
Créez un groupe New
API Endpoint: <Base URL>/groupes
Method: POST
Headers:
| Clé | Value |
|---|---|
| Content-Type | application/json |
| Accept | */* |
| Authorization | Porteur <auth_token> |
Body:
{
"description": "Created group from Netskope Cloud Exchange via Microsoft Azure AD User Risk Exchange plugin.",
"displayName": "Group Name",
"mailEnabled": true,
"mailNickname": "groupname",
"securityEnabled": false,
"groupTypes": [
"Unified"
]
}
Sample API Response:
{
"@odata.context": "https://graph.microsoft.com/v1.0/$metadata#groups/$entity",
"id": "6999bb7****************05b4e04155",
"deletedDateTime": null,
"classification": null,
"createdDateTime": "2024-03-16T11:01:45Z",
"creationOptions": [],
"description": "Created group from Netskope Cloud Exchange via Microsoft Azure AD User Risk Exchange plugin.",
"displayName": "Group Name",
"expirationDateTime": null,
"groupTypes": [
"Unified"
],
"isAssignableToRole": null,
"mail": "groupname@netskopebd.onmicrosoft.com",
"mailEnabled": true,
"mailNickname": "groupname",
"membershipRule": null,
"membershipRuleProcessingState": null,
"onPremisesDomainName": null,
"onPremisesLastSyncDateTime": null,
"onPremisesNetBiosName": null,
"onPremisesSamAccountName": null,
"onPremisesSecurityIdentifier": null,
"onPremisesSyncEnabled": null,
"preferredDataLocation": null,
"preferredLanguage": null,
"proxyAddresses": [
"SMTP:groupname@netskopebd.onmicrosoft.com"
],
"renewedDateTime": "2024-03-16T11:01:45Z",
"resourceBehaviorOptions": [],
"resourceProvisioningOptions": [],
"securityEnabled": false,
"securityIdentifier": "S-1-12-1-1771682685-1286044974-90333062-1430380724",
"theme": null,
"uniqueName": null,
"visibility": "Public",
"onPremisesProvisioningErrors": [],
"serviceProvisioningErrors": []
}
Ajouter un membre à un groupe
API Endpoint: <Base URL>/groups/{group-id}/members/$ref
Method: PUBLICATION
Headers:
| Clé | Value |
|---|---|
| Content-Type | application/json |
| Accept | */* |
| Authorization | Porteur <auth_token> |
Body:
{
"@odata.id": "https://graph.microsoft.com/v1.0/directoryObjects/{id}"
}
Sample API Response: (Status Code 204)
{}
Supprimer un membre d'un groupe
API Endpoint: <Base URL>/groups/{group-id}/members/{member-id}/$ref
Method: SUPPRIMER
Headers:
| Clé | Value |
|---|---|
| Content-Type | application/json |
| Accept | */* |
| Authorization | Porteur <auth_token> |
Sample API Response: (Status Code 204)
{}
Confirmer qu'un utilisateur est compromis
API endpoint: <Base URL>/identityProtection/riskyUsers/confirmCompromised
Method: PUBLICATION
Headers:
| Clé | Value |
|---|---|
| Content-Type | application/json |
| Accept | */* |
| Authorization | Porteur <auth_token> |
Body:
{
"userIds": [
"targeted-userId-1"
]
}
Sample API Response: (Status Code 204)
{}
Recherche d'utilisateurs et de scores
API endpoint: <Base URL>/users/{user-mail}
Method: ALLEZ
Headers:
| Clé | Value |
|---|---|
| Content-Type | application/json |
| Accept | */* |
| Authorization | Porteur <auth_token> |
Sample API Response:
{
"@odata.context": "https://graph.microsoft.com/v1.0/$metadata#users/$entity",
"@microsoft.graph.tips": "This request only returns a subset of the resource's properties. Your app will need to use $select to return non-default properties. To find out what other properties are available for this resource see https://learn.microsoft.com/graph/api/resources/user",
"businessPhones": [],
"displayName": "Crest",
"givenName": null,
"jobTitle": null,
"mail": "user@netskopebd.onmicrosoft.com",
"mobilePhone": null,
"officeLocation": null,
"preferredLanguage": "en-US",
"surname": null,
"userPrincipalName": "user@netskopebd.onmicrosoft.com",
"id": "e0ae0b3b-**********7-cb84372efc52"
}
Matrice de performance
Les relevés de performance sont effectués sur une grande pile CE avec ces spécifications de VM en tirant 500 000 utilisateurs et leurs scores de risque respectifs dans un cycle de plugin.
| Détails de la pile | Taille : Grande RAM : 32 GB CPU : 16 cœurs |
| Notes de risque de l'utilisateur extraites de Microsoft Azure AD | 500K |
| Temps nécessaire | ~120 minutes |
Agent utilisateur
netskope-ce-5.0.0-ure-microsoft-azure-ad-v1.2.1
Workflow
- Obtenez vos informations d'identification Azure AD : ID du client (application), ID secret du client, ID du locataire, URL de Microsoft Azure AD et URL du jeton Microsoft Graph.
- Configurez le plugin Azure AD.
- Configurez les règles métier et actions de l’échange de risques utilisateurs pour le plugin Azure AD.
- Validez le plugin Azure AD.
Cliquer sur « play » pour regarder une vidéo.
Obtenez vos identifiants Azure AD
- Rendez-vous sur https://portal.azure.com/ et connecte-toi.
- Cliquez sur Azure Active Directory et allez à Overview > Basic Information.

- Vous y trouverez votre identifiant de locataire. Copiez-le pour l'utiliser lors de la configuration du plugin.

- Sur le côté gauche d’Azure Active Directory, cliquez sur App registrations.

- Cliquez sur le nom de votre candidature, ou pour en créer un New , cliquez sur New Registration. Pour une inscription New , saisissez un nom et cliquez sur Register.
- Sur la page de la candidature, vous trouverez l’ID de la demande (client). Copiez ceci pour l’utiliser lorsque vous configurez votre plugin. C’est pour le réglage Client (Application) ID du plugin.

- Cliquez sur Certificates and Secrets.

- Cliquez sur + New Client Secret pour créer votre clé, puis saisissez une description pour votre identifiant secret, sélectionnez la durée de la valeur secrète (par défaut, elle sera de 6 mois), puis cliquez sur Add. Assurez-vous de copier la valeur (PAS l'identifiant secret), qui est utilisée pour le Client Secret ID dans le plugin. Vous ne pouvez obtenir cela que lors de la première création d'un secret client.

- Procédez ensuite aux étapes suivantes :
- Cliquez sur + Add a permission et sélectionnez ensuite + Add a permission. Cliquez sur Microsoft Graph. Cliquez sur Application Permission. Recherchez et sélectionnez les éléments suivants :Accorder le consentement de l'administration sur le côté gauche.
- Group.Create
- Group.ReadWrite.All
- GroupMember.Read.All
- IdentityRiskyUser.ReadWrite.All
- User.Read.All
- Cliquez sur + Add a permission et sélectionnez ensuite + Add a permission. Cliquez sur Microsoft Graph. Cliquez sur Application Permission. Recherchez et sélectionnez les éléments suivants :
- Collectez l'ID du locataire, l'ID du client (application) et l'ID secret du client pour configurer le plugin.
Configurer le plugin Azure AD pour User Risk Exchange
- Dans Cloud Exchange, accédez à Settings > Plugins.

- Recherchez et sélectionnez la case du plugin Microsoft Azure AD v1.2.1 (URE) .

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

- Saisissez l’ID client (application), l’ID secret client et l’ID locataire, ainsi que l’URL Microsoft Azure AD obtenue précédemment. Une fois terminé, cliquez sur Next.

- Select un éventail de notes.

- Cliquez sur Save.

Configurer les règles métier User Risk Exchange pour le plugin Azure AD
- Accédez à User Risk Exchange et cliquez sur Business Rules.
- Click Create New Rule

- Select les options dans le filtre que vous souhaitez utiliser. Dans les menus déroulants, sélectionnez un champ, un opérateur et une valeur, puis cliquez sur Save.

Vous pouvez voir les scores de vos utilisateurs en allant sur Users dans le panneau gauche de User Risk Exchange.
Configurer les actions pour le plugin Azure AD
Le plugin Microsoft Azure AD prend en charge :
- L'action Ajouter au groupe permet d'ajouter un utilisateur à un groupe sélectionné.
- L'action Retirer du groupe permet de retirer un utilisateur d'un groupe sélectionné.
- L'action Confirmer la compromission confirmera que l'utilisateur ajouté à la liste des utilisateurs à risque est bien un utilisateur à risque et changera l'état de risque de cet utilisateur en "Confirmer la compromission".
- Pas d'action n'effectuera aucune action sur les utilisateurs.
Pour configurer ces actions, suivez les étapes ci-dessous.
Ajouter au groupe
- Allez dans Actions dans User Risk Exchange et cliquez sur Add Action Configuration.
- Select une règle de gestion, une configuration et sélectionnez le nom de votre plugin configuré.
- Dans la liste déroulante Actions, sélectionnez Add to Group.
- Dans le menu déroulant Groupe, sélectionnez Create new group et entrez un nom de groupe pour créer un groupe New dans Microsoft Azure AD.
- Cliquez Save.

- Cliquez sur Sync pour effectuer l'action manuellement. Saisissez les jours et cliquez sur Fetch pour voir le nombre d'utilisateurs qui seront affectés par cette action. Cliquez sur Sync pour effectuer des actions.
Retirer du groupe
- Allez dans Actions dans User Risk Exchange et cliquez sur Add Action Configuration.
- Select une règle de gestion, une configuration et sélectionnez le nom de votre plugin configuré.
- Dans la liste déroulante Actions, sélectionnez Remove from Group.
- Dans la liste déroulante Groupe, sélectionnez le groupe à supprimer.

- Cliquez sur Save puis sur Sync. Saisissez les jours et cliquez sur Fetch pour voir le nombre d'utilisateurs qui seront affectés par cette action. Cliquez sur Sync pour effectuer des actions.
Confirm Compromised
- Allez dans Actions dans User Risk Exchange et cliquez sur Add Action Configuration.
- Select une règle de gestion, une configuration et sélectionnez le nom de votre plugin configuré.
- Dans la liste déroulante Actions, sélectionnez Confirm Compromised.

- Cliquez sur Save puis sur Sync. Saisissez les jours et cliquez sur Fetch pour voir le nombre d'utilisateurs qui seront affectés par cette action. Cliquez sur Sync pour effectuer des actions.
No Action
- Allez dans Actions dans User Risk Exchange et cliquez sur Add Action Configuration.
- Select une règle de gestion, une configuration et sélectionnez le nom de votre plugin configuré.
- Dans le menu déroulant Actions, sélectionnez No Action, puis activez le bouton Générer des alertes.

- Cliquez Save puis Sync. Entrez les jours et cliquez sur Fetch pour voir le nombre d’utilisateurs qui seront affectés par cette action. Cliquez sur Sync pour effectuer des actions.

Validez le plugin Azure AD
Valider le retrait
Dans la plateforme Microsoft Azure AD, les utilisateurs sont affichés à Home > Risky Users.
Dans User Risk Exchange, accédez à Users et vérifiez les utilisateurs extraits du plugin Microsoft Azure AD.
Vous pouvez également consulter Logging et rechercher les journaux pour récupérer les utilisateurs de la plateforme Microsoft Azure AD.
Utilisez un filtre comme celui-ci.

Valider l'action
Pour valider les actions effectuées dans Cloud Exchange, accédez à Logging et recherchez les journaux relatifs au plug-in Microsoft Azure AD.



Dans Microsoft Azure AD, recherchez les actions « Ajouter au groupe » et « Supprimer du groupe ».
- Va sur Home > Azure Active Directory. Cliquez Groups sur le panneau de gauche.

- Recherchez et sélectionnez le nom de votre groupe. Par exemple, Netskope dans ce cas. Cliquez sur Members dans le panneau de gauche.


- Vérifiez les membres du groupe en fonction de l'action que vous avez effectuée.

Confirmer l'action compromise
- Connectez-vous à la plateforme Microsoft Azure et recherchez les utilisateurs à risque de Microsoft Azure AD.
- Vous verrez Risk State. Au départ, lorsqu'un utilisateur est ajouté aux utilisateurs à risque, son état de risque est At Risk, et une fois l'action effectuée, son état de risque doit être modifié pour confirmer qu'il est compromis, comme illustré ici.
Note: Il peut s’écouler quelques minutes après l’action « Confirmer la compromission » pour que le statut d’un utilisateur change sur la plateforme Azure.
Dépannage
L'ID du groupe est affiché à la place du nom du groupe dans la configuration de l'action après la mise à jour du plugin
Après avoir mis à jour le plugin à partir de la version 1.1.2 à la dernière version, l'utilisateur verra l'ID du groupe affiché dans l'action au lieu du nom d'affichage du groupe :
267******************-878e6f460a1c
What to do: Modifiez l'action et sélectionnez le groupe en fonction du groupe précédemment enregistré.
L'ID et le nom du groupe sont affichés dans l'action si le groupe est supprimé de la plate-forme.
Si le groupe ou le nom du groupe est mis à jour/supprimé de Microsoft Azure AD, le nom du groupe sera affiché comme ci-dessous dans la configuration de l'action et l'utilisateur recevra une erreur lorsqu'il essaiera d'effectuer l'action Ajouter au groupe ou Supprimer du groupe :
{"id": "26739fd0-bba6-4eb7-b761-878e6f460a1c", "displayName": "Netskope CE Azure AD Demo", "display_name": "Netskope CE Azure AD Demo (Security)", "group_type": "Security"}
What to do: Vérifiez si le groupe existe, sinon créez le groupe avec le même nom sur la plateforme Azure, ou utilisez un groupe différent dans la configuration de l'action.
Réception d'un journal d'avertissement : Impossible d'ajouter/supprimer un utilisateur dans/depuis un groupe
Lorsqu'une action, Ajouter au groupe, est effectuée sur un utilisateur qui est déjà présent dans un groupe, le message d'avertissement ci-dessous sera reçu. Le même comportement sera observé lorsqu'une action Retirer du groupe est effectuée sur un utilisateur qui n'est pas présent dans le groupe.
URE Microsoft Azure AD [Microsoft Azure AD]: Unable to add user with email 'crest@netskopebd.onmicrosoft.com' to group named 'Netskope' and ID '5bbe2369-24b4-44a2-b37c-778b9a77f7a3'. This error may occur if user already exist in group. Error: {'code': 'Request_BadRequest', 'message': "One or more added object references already exist for the following modified properties: 'members'.", 'innerError': {'date': '2024-03-18T06:31:08', 'request-id': '33b52b75-ffee-4ff5-95d2-6250205947ee', 'client-request-id': '33b52b75-ffee-4ff5-95d2-6250205947ee'}}
What to do: Vérifier si l'utilisateur est déjà présent dans le groupe ou non. Si l'utilisateur est déjà présent, ce protocole sera reçu.

