Créer une application pour accéder à Microsoft Defender pour point de terminaison sans utilisateur

Lorsque vous utilisez Microsoft Defender for Endpoint API, vous devrez peut-être accéder à Microsoft Defender for Endpoint sans utilisateur. Par exemple, vous pouvez créer un service qui s’exécute en arrière-plan et interagit avec Defender pour point de terminaison pour le compte de votre organization. Si vous avez besoin d’un accès au service en arrière-plan sans utilisateur connecté, créez une application qui peut accéder à Defender pour point de terminaison sans utilisateur.

Cet article explique comment inscrire une application dans Microsoft Entra ID, lui accorder des autorisations d’application uniquement et obtenir un jeton d’accès pour Defender pour l’accès à l’API de point de terminaison. L’accès à l’API nécessite le flux d’informations d’identification du client OAuth 2.0.

Prérequis

Pour créer une inscription d’application dans Azure, vous avez besoin d’un rôle Microsoft Entra avec des autorisations d’inscription d’application qui autorisent la création d’applications, telles que l’administrateur d’application.

Étape 1 : Créer une application dans Azure

Procédez comme suit pour inscrire une application et lui accorder des autorisations d’API dans Azure :

  1. Connectez-vous au Portail Azure.

  2. Recherchez inscriptions d'applications et accédez à inscriptions d'applications.

  3. Sélectionnez Nouvelle inscription.

  4. Choisissez un nom pour votre application, puis sélectionnez Inscrire.

  5. Dans la page de votre application, accédez à Gérer les > autorisations d’API > Ajouter des API d’autorisation > que mon organization utilise.

  6. Dans la page Demander des autorisations d’API , recherchez WindowsDefenderATP et sélectionnez-le.

  7. Sélectionnez le type d’autorisations dont vous avez besoin, puis sélectionnez Ajouter des autorisations.

    • Autorisations déléguées : connectez-vous avec votre application comme si vous étiez un utilisateur.

    • Autorisations d’application : accédez à l’API en tant que service.

  8. Sélectionnez les autorisations appropriées pour votre application. Pour déterminer l’autorisation dont vous avez besoin, consultez la section Autorisations dans l’API que vous appelez. Voici deux exemples :

  9. Sélectionnez Ajouter une autorisation.

Étape 2 : Ajouter un secret à votre application

Les étapes suivantes décrivent comment authentifier votre application à l’aide d’un secret d’application. Pour authentifier votre application à l’aide d’un certificat, consultez Créer un certificat public auto-signé pour authentifier votre application.

  1. Dans la page de l’application, sélectionnez Certificats & secrets>Nouveau secret client.

  2. Dans le volet Ajouter une clé secrète client , ajoutez une description et une date d’expiration.

  3. Sélectionnez Ajouter.

  4. Copiez la valeur du secret que vous avez créé. Vous ne pourrez plus récupérer cette valeur après avoir quitté la page.

  5. Depuis la page de présentation de votre application, copiez l’ID d’application (client) et l’ID de répertoire (locataire). Vous avez besoin de cet ID pour authentifier votre application.

  6. Notez votre ID d’application et votre ID de locataire. Dans la page de votre application, accédez à Vue d’ensemble et copiez ce qui suit.

Applications multilocataires

Les partenaires de Microsoft Defender for Endpoint doivent configurer leurs applications pour qu’elles soient multilocataires. Configurez votre application comme une application multilocataire si vous envisagez de créer une application destinée à s’exécuter dans les locataires de plusieurs clients.

  1. Dans la page de votre application Azure, accédez à Gérer l’authentification>.

  2. Ajouter une plateforme.

  3. Dans le volet Configurer les plateformes , sélectionnez Web.

  4. Ajoutez https://portal.azure.com aux URI de redirection et sélectionnez Configurer.

  5. Dans les options Types de comptes pris en charge , sélectionnez Comptes dans n’importe quel annuaire organisationnel , puis sélectionnez Enregistrer.

Une fois votre application lancée, vous devez la faire approuver dans chaque tenant dans lequel vous comptez l’utiliser. Cela est dû au fait que votre application interagit avec Defender pour point de terminaison pour le compte de votre client. Vous ou votre client devez sélectionner le lien de consentement et approuver votre application. Donnez votre consentement à un utilisateur disposant de privilèges d’administrateur.

Voici comment former le lien de consentement. Lorsqu’un administrateur client visite cette URL, le flux de consentement Plateforme d'identités Microsoft s’ouvre afin que le client client puisse autoriser l’application. Remplacez par 00000000-0000-0000-0000-000000000000 votre ID d’application.

https://login.microsoftonline.com/common/oauth2/authorize?prompt=consent&client_id=00000000-0000-0000-0000-000000000000&response_type=code&sso_reload=true

Obtenir un jeton d’accès

Les méthodes suivantes montrent comment obtenir le jeton d’accès de votre application.

Conseil

Certaines API Microsoft Defender pour point de terminaison continuent d’exiger l’émission de jetons d’accès pour la ressource https://api.securitycenter.microsoft.comhéritée. Si l’audience du jeton ne correspond pas à la ressource attendue par l’API, les demandes échouent avec 403 Forbidden, même si le point de terminaison de l’API utilise https://api.security.microsoft.com. Utilisez https://api.securitycenter.microsoft.com comme ressource ou scope lors de l’obtention de jetons.

# This script acquires the App Context Token and stores it in the variable $token for later use.
# Paste your Tenant ID, App ID, and App Secret (App key) into the quotes below.

$tenantId = '' ### Paste your tenant ID here
$appId = '' ### Paste your Application ID here
$appSecret = '' ### Paste your Application key here

$sourceAppIdUri = 'https://api.securitycenter.microsoft.com/.default'
$oAuthUri = "https://login.microsoftonline.com/$TenantId/oauth2/v2.0/token"
$authBody = [Ordered] @{
    scope = "$sourceAppIdUri"
    client_id = "$appId"
    client_secret = "$appSecret"
    grant_type = 'client_credentials'
}
$authResponse = Invoke-RestMethod -Method Post -Uri $oAuthUri -Body $authBody -ErrorAction Stop
$token = $authResponse.access_token
$token