建立應用程式,在沒有使用者的情況下存取 適用於端點的 Microsoft Defender

使用 適用於端點的 Microsoft Defender API 時,您可能需要在沒有使用者的情況下存取 適用於端點的 Microsoft Defender。 例如,你可能想建立一個在背景執行並代表組織與 Defender for Endpoint 互動的服務。 如果你需要在沒有登入使用者的情況下取得背景服務存取,可以建立一個能在沒有使用者的情況下存取 Defender for Endpoint 的應用程式。

本文說明如何在 Microsoft Entra ID 註冊應用程式、授予僅限應用程式的權限,以及取得 Defender for Endpoint API 存取權杖。 API 存取需要 OAuth 2.0 用戶端憑證流程。

必要條件

要在 Azure 建立應用程式註冊,你需要一個具有應用程式註冊權限的 Microsoft Entra 角色,允許應用程式建立,例如 Application Administrator。

步驟 1:在 Azure 建立應用程式

請執行以下步驟在 Azure 註冊應用程式並授予其 API 權限:

  1. 登入 Azure 入口網站。

  2. 搜尋應用程式註冊,並導向應用程式註冊。

  3. 選取 [新增註冊]。

  4. 請為你的申請選擇一個名稱,然後選擇 註冊。

  5. 在你的應用程式頁面,請選擇 管理 > API 權限 > 新增我組織使用的權限 > API。

  6. 在 請求 API 權限 頁面,搜尋 WindowsDefenderATP 並選擇它。

  7. 選擇你需要的權限類型,然後選擇 新增權限。

    • 授權 權限——用你的應用程式登入,就像你是使用者一樣。

    • 應用程式權限 - 以服務方式存取 API。

  8. 為你的應用程式選擇適當的權限。 要判斷你需要哪個權限,請查看你呼叫的 API 中的 權限 區塊。 以下列出兩個範例:

  9. 選擇 新增權限。

步驟 2:在您的應用程式中加入秘密

以下步驟說明如何使用 App 秘密來驗證你的應用程式。 若要使用憑證驗證您的應用程式,請參閱 建立自簽公開憑證以驗證您的應用程式。

  1. 從應用程式頁面選擇 憑證 & 秘密>新客戶端秘密。

  2. 在 新增客戶端秘密 欄格中,新增描述和到期日。

  3. 選取 新增。

  4. 複製你建立的秘密值。 離開頁面後,你將無法取得這個數值。

  5. 從應用程式 的總覽 頁面複製 應用程式 (客戶端) ID 和 目錄 (租戶) ID。 你需要這個 ID 來驗證你的應用程式。

  6. 寫下你的申請編號和租戶編號。 在你的申請頁面,請前往 「概覽 」並複製以下內容。

多租戶應用程式

適用於端點的 Microsoft Defender 的合作夥伴需要將其應用程式設定為支援多租用戶。 如果你打算建立一個能在多個客戶租戶中運行的應用程式,請將你的應用程式設為多租戶應用程式。

  1. 在你的 Azure 應用程式頁面,前往管理>認證。

  2. 加個平台。

  3. 從 「設定平台 」面板中,選擇 「網頁」。

  4. 新增 https://portal.azure.com 到 Redirect URI, 並選擇 Configure。

  5. 從 支援帳號類型 選項中,選擇 任一組織目錄中的帳號 ,並選擇 儲存。

一旦你執行應用程式,就需要在每個你打算使用的租戶中獲得批准。 這是因為你的應用程式代表客戶與 Defender for Endpoint 互動。 你或你的客戶需要選擇同意連結並批准你的應用程式。 請在具有管理員權限的使用者協助下提供同意。

以下是如何建立同意連結的方法。 當租戶管理員造訪此 URL 時,Microsoft 身分識別平台 同意流程會開啟,讓客戶租戶能授權該應用程式。 用你的應用程式 ID 替換 00000000-0000-0000-0000-000000000000 。

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

取得存取權杖

以下方法說明如何取得應用程式 的存取權杖。

提示

部分 適用於端點的 Microsoft Defender API 仍然需要針對舊版資源 https://api.securitycenter.microsoft.com 所簽發的存取權杖。 如果權杖對象與 API 預期的資源不相符,則要求會因 403 Forbidden 而失敗,即使 API 端點使用 https://api.security.microsoft.com。 在取得代幣時,請將其 https://api.securitycenter.microsoft.com 作為資源或範圍。

# 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