建立應用程式以存取沒有使用者的 適用於端點的 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 建議您使用權限最少的角色。 這有助於改善貴組織的安全性。 全域系統管理員是高度特殊權限角色,應僅在無法使用現有角色的緊急案例下使用。
建立應用程式
登入 Azure 入口網站。
流覽至 Microsoft Entra ID>應用程式註冊>新增註冊。
在註冊表單中,選擇應用程式的名稱,然後選取 [ 註冊]。
若要讓應用程式能夠存取適用於端點的 Defender 並指派「 讀取所有警示」 許可權,請在應用程式頁面上選取 [API 許可權>][新增>我的組織使用的>許可權 API],輸入 WindowsDefenderATP,然後選取 [WindowsDefenderATP]。
注意事項
WindowsDefenderATP
不會出現在原始清單中。 開始在文字框中寫入其名稱,以查看其出現。選 取 [應用程式許可權>] Alert.Read.All,然後選取 [ 新增許可權]。
選取適當的許可權。
Read All Alerts
只是一個範例。 範例如下:選 取 [授與同意]。
注意事項
每次新增許可權時,您都必須選取 [ 授與同意 ],新許可權才會生效。
若要將秘密新增至應用程式,請選 取 [憑證 & 秘密],將描述新增至秘密,然後選取 [ 新增]。
注意事項
選取 [ 新增] 之後,選取 [複製產生的秘密] 值。 離開之後,您將無法擷取此值。
記下您的應用程式識別碼和租用戶標識碼。 在您的應用程式頁面上,移至 [ 概觀 ] 並複製下列內容。
僅限 適用於端點的 Microsoft Defender合作夥伴。 在同意) 之後,將您的應用程式設定為可在所有租使用者中使用的多租使用者 (。 例如,如果您建立要在多個客戶的租使用者租使用者) 中執行的應用程式,則第三方應用程式 (需要 此專案。 如果您建立只想在租用戶中執行的服務, (例如,如果您建立僅與您自己的數據) 互動的應用程式,則 不需要 這麼做。 若要將您的應用程式設定為多租使用者,請遵循下列步驟:
移至 [驗證],並將 新增
https://portal.azure.com
為 [重新導向 URI]。在頁面底部的 [ 支持的帳戶類型] 底下,選取您多租使用者應用程式 的任何組織目錄 應用程式同意中的 [帳戶]。
您需要在您想要使用的每個租使用者中核准您的應用程式。 這是因為您的應用程式代表您的客戶與適用於端點的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 日起,尚未新增任何新功能。 強烈建議您升級,如需詳細資訊,請參閱 移轉指南 。
建立新的主控台應用程式。
安裝 NuGet Microsoft.Identity.Client。
新增下列專案:
using Microsoft.Identity.Client;
在應用程式中複製並貼上下列程式代碼 (別忘了更新三個變數:) :
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。
開啟命令提示字元,並設定
CLIENT_ID
為您的 Azure 應用程式識別碼。設定
CLIENT_SECRET
為您的 Azure 應用程式秘密。設定
TENANT_ID
為客戶的 Azure 租使用者標識碼,該客戶想要使用您的應用程式來存取適用於端點的 Defender。執行下列命令:
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"}
驗證令牌
請確定您已取得正確的權杖:
將您在上一個步驟中取得的令牌複製並貼到 JWT 中,以便將它譯碼。
驗證您取得具有所需許可權的角色宣告。
在下圖中,您可以看到從具有所有 適用於端點的 Microsoft Defender 角色許可權的應用程式取得的已譯碼令牌:
使用令牌存取 API 適用於端點的 Microsoft Defender
選擇您想要使用的 API。 如需詳細資訊,請參閱 支援適用於端點的 Defender API。
在您傳送至
Bearer {token}
的要求中http
設定授權標頭, (持有人是授權配置) 。令牌的到期時間為一小時。 您可以使用相同的令牌傳送多個要求。
以下是 使用 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 技術社群。