共用方式為


建立應用程式以存取沒有使用者的 適用於端點的 Microsoft Defender

適用於:

重要事項

進階搜捕功能不包含在 適用於企業的 Defender 中。

想要體驗適用於端點的 Microsoft Defender 嗎? 注册免費試用版。

注意事項

如果您是美國政府客戶,請使用美國政府客戶 適用於端點的 Microsoft Defender 中所列的 URI。

提示

為了獲得更好的效能,您可以使用更接近您地理位置的伺服器:

  • us.api.security.microsoft.com
  • eu.api.security.microsoft.com
  • uk.api.security.microsoft.com
  • au.api.security.microsoft.com
  • swa.api.security.microsoft.com
  • ina.api.security.microsoft.com

此頁面描述如何建立應用程式,在沒有用戶的情況下,以程式設計方式存取適用於端點的Defender。 如果您需要代表使用者以程序設計方式存取適用於端點的 Defender,請參閱 使用用戶內容取得存取權。 如果您不確定需要哪一個存取權,請參閱 開始使用

適用於端點的 Microsoft Defender 會透過一組程序設計 API 公開其大部分的數據和動作。 這些 API 可協助您自動化工作流程,並根據適用於端點的 Defender 功能進行創新。 API 存取需要 OAuth2.0 驗證。 如需詳細資訊,請參閱 OAuth 2.0 授權碼流程

一般而言,您必須採取下列步驟來使用 API:

  • 建立 Microsoft Entra 應用程式。
  • 使用此應用程式取得存取令牌。
  • 使用令牌來存取適用於端點的Defender API。

本文說明如何建立 Microsoft Entra 應用程式、取得存取令牌以 適用於端點的 Microsoft Defender,以及驗證令牌。

重要事項

Microsoft 建議您使用權限最少的角色。 這有助於改善貴組織的安全性。 全域系統管理員是高度特殊權限角色,應僅在無法使用現有角色的緊急案例下使用。

建立應用程式

  1. 登入 Azure 入口網站

  2. 流覽至 Microsoft Entra ID>應用程式註冊>新增註冊

    應用程式註冊窗格

  3. 在註冊表單中,選擇應用程式的名稱,然後選取 [ 註冊]

  4. 若要讓應用程式能夠存取適用於端點的 Defender 並指派「 讀取所有警示」 許可權,請在應用程式頁面上選取 [API 許可權>][新增>我的組織使用的>許可權 API],輸入 WindowsDefenderATP,然後選取 [WindowsDefenderATP]

    注意事項

    WindowsDefenderATP 不會出現在原始清單中。 開始在文字框中寫入其名稱,以查看其出現。

    [API 許可權] 窗格

    取 [應用程式許可權>] Alert.Read.All,然後選取 [ 新增許可權]

    應用程式許可權資訊窗格

  5. 選取適當的許可權。 Read All Alerts 只是一個範例。 範例如下:

    • 要執行進階查詢,請選取權 Run advanced queries 限。
    • 要隔離裝置,請選取權 Isolate machine 限。
    • 若要判斷您需要的許可權,請查看您有興趣呼叫之 API 中的許可權一節。
  6. 取 [授與同意]

    注意事項

    每次新增許可權時,您都必須選取 [ 授與同意 ],新許可權才會生效。

    授與許可權頁面

  7. 若要將秘密新增至應用程式,請選 取 [憑證 & 秘密],將描述新增至秘密,然後選取 [ 新增]

    注意事項

    選取 [ 新增] 之後,選取 [複製產生的秘密] 值。 離開之後,您將無法擷取此值。

    建立應用程式選項

  8. 記下您的應用程式識別碼和租用戶標識碼。 在您的應用程式頁面上,移至 [ 概觀 ] 並複製下列內容。

    建立的應用程式和租用戶標識碼

  9. 僅限 適用於端點的 Microsoft Defender合作夥伴。 在同意) 之後,將您的應用程式設定為可在所有租使用者中使用的多租使用者 (。 例如,如果您建立要在多個客戶的租使用者租使用者) 中執行的應用程式,則第三方應用程式 (需要 此專案。 如果您建立只想在租用戶中執行的服務, (例如,如果您建立僅與您自己的數據) 互動的應用程式,則 不需要 這麼做。 若要將您的應用程式設定為多租使用者,請遵循下列步驟:

    1. 移至 [驗證],並將 新增 https://portal.azure.com[重新導向 URI]

    2. 在頁面底部的 [ 支持的帳戶類型] 底下,選取您多租使用者應用程式 的任何組織目錄 應用程式同意中的 [帳戶]。

      您需要在您想要使用的每個租使用者中核准您的應用程式。 這是因為您的應用程式代表您的客戶與適用於端點的Defender互動。

      如果您要撰寫第三方應用程式, (或客戶) 需要選取同意連結並核准您的應用程式。 您應該對在 Active Directory 中具有系統管理許可權的使用者進行同意。

      同意連結的格式如下:

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

      其中 00000000-0000-0000-0000-000000000000 會取代為您的應用程式識別碼。

完成! 您已成功註冊應用程式! 請參閱下面的令牌取得和驗證範例。

取得存取權杖

如需 Microsoft Entra 令牌的詳細資訊,請參閱 Microsoft Entra 教學課程

使用 PowerShell

# This script acquires the App Context Token and stores it in the variable $token for later use in the script.
# Paste your Tenant ID, App ID, and App Secret (App key) into the indicated 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

使用 C#:

下列程式代碼已使用 NuGet Microsoft.Identity.Client 3.19.8 進行測試。

重要事項

Microsoft.IdentityModel.Clients.ActiveDirectory NuGet 套件和 Azure AD 驗證 Library (ADAL) 已被取代。 自 2020 年 6 月 30 日起,尚未新增任何新功能。 強烈建議您升級,如需詳細資訊,請參閱 移轉指南

  1. 建立新的主控台應用程式。

  2. 安裝 NuGet Microsoft.Identity.Client

  3. 新增下列專案:

    using Microsoft.Identity.Client;
    
  4. 在應用程式中複製並貼上下列程式代碼 (別忘了更新三個變數:) : tenantId, appId, appSecret

    string tenantId = "00000000-0000-0000-0000-000000000000"; // Paste your own tenant ID here
    string appId = "11111111-1111-1111-1111-111111111111"; // Paste your own app ID here
    string appSecret = "22222222-2222-2222-2222-222222222222"; // Paste your own app secret here for a test, and then store it in a safe place! 
    const string authority = "https://login.microsoftonline.com";
    const string audience = "https://api.securitycenter.microsoft.com";
    
    IConfidentialClientApplication myApp = ConfidentialClientApplicationBuilder.Create(appId).WithClientSecret(appSecret).WithAuthority($"{authority}/{tenantId}").Build();
    
    List<string> scopes = new List<string>() { $"{audience}/.default" };
    
    AuthenticationResult authResult = myApp.AcquireTokenForClient(scopes).ExecuteAsync().GetAwaiter().GetResult();
    
    string token = authResult.AccessToken;
    

使用 Python

請參閱 使用 Python 取得令牌

使用 Curl

注意事項

下列程式假設您的電腦上已安裝 Curl for Windows。

  1. 開啟命令提示字元,並設定 CLIENT_ID 為您的 Azure 應用程式識別碼。

  2. 設定 CLIENT_SECRET 為您的 Azure 應用程式秘密。

  3. 設定 TENANT_ID 為客戶的 Azure 租使用者標識碼,該客戶想要使用您的應用程式來存取適用於端點的 Defender。

  4. 執行下列命令:

    curl -i -X POST -H "Content-Type:application/x-www-form-urlencoded" -d "grant_type=client_credentials" -d "client_id=%CLIENT_ID%" -d "scope=https://securitycenter.onmicrosoft.com/windowsatpservice/.default" -d "client_secret=%CLIENT_SECRET%" "https://login.microsoftonline.com/%TENANT_ID%/oauth2/v2.0/token" -k
    

    您會得到類似下列代碼段的答案:

    {"token_type":"Bearer","expires_in":3599,"ext_expires_in":0,"access_token":"eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsIn <truncated> aWReH7P0s0tjTBX8wGWqJUdDA"}
    

驗證令牌

請確定您已取得正確的權杖:

  1. 將您在上一個步驟中取得的令牌複製並貼到 JWT 中,以便將它譯碼。

  2. 驗證您取得具有所需許可權的角色宣告。

    在下圖中,您可以看到從具有所有 適用於端點的 Microsoft Defender 角色許可權的應用程式取得的已譯碼令牌:

    令牌詳細數據部分

使用令牌存取 API 適用於端點的 Microsoft Defender

  1. 選擇您想要使用的 API。 如需詳細資訊,請參閱 支援適用於端點的 Defender API

  2. 在您傳送至Bearer {token}的要求中http設定授權標頭, (持有人是授權配置) 。

  3. 令牌的到期時間為一小時。 您可以使用相同的令牌傳送多個要求。

以下是 使用 C# 傳送要求以取得警示清單的範例:

var httpClient = new HttpClient();

var request = new HttpRequestMessage(HttpMethod.Get, "https://api.securitycenter.microsoft.com/api/alerts");

request.Headers.Authorization = new AuthenticationHeaderValue("Bearer", token);

var response = httpClient.SendAsync(request).GetAwaiter().GetResult();

// Do something useful with the response

另請參閱

提示

想要深入了解? Engage 技術社群中的Microsoft安全性社群:適用於端點的 Microsoft Defender 技術社群。