使用 API 时,可能需要在没有用户的情况下访问Microsoft Defender for Endpoint。 例如,你可能希望创建一个在后台运行并代表组织与 Defender for Endpoint 交互的服务。 在这种情况下,需要创建一个无需用户即可访问 Defender for Endpoint 的应用程序。
API 访问需要 OAuth2.0 身份验证。
先决条件
具有用于在 Azure 中创建应用的Microsoft Entra角色。 例如 ,应用程序管理员。
步骤 1:在 Azure 中创建应用
登录 Azure 门户。
搜索应用注册并导航到应用注册。
选择“新注册”。
选择应用程序的名称,然后选择“ 注册”。
在应用程序页中,转到 “管理 > API 权限 > ”“添加我组织使用的权限 > API”。
在 “请求 API 权限 ”页中,搜索 “WindowsDefenderATP ”并将其选中。
选择所需的权限类型,然后选择 “添加权限”。
委托的权限 - 使用应用登录,就像是用户一样。
应用程序权限 - 访问 API 即服务。
为应用选择适当的权限。 若要确定所需的权限,请查看要调用的 API 中的 “权限” 部分。 下面是两个示例:
选择“ 添加权限”。
步骤 2:向应用添加机密
本部分介绍如何使用应用机密对应用进行身份验证。 若要使用证书对应用进行身份验证,请参阅 创建自签名公共证书对应用程序进行身份验证。
在应用程序页中,选择“ 证书”& 机密>“”新建客户端密码”。
在 “添加客户端密码 ”窗格中,添加说明和到期日期。
选择“添加”。
复制创建的机密 的值 。 离开页面后,将无法检索此值。
从应用的 概述 页中,复制 应用程序 (客户端) ID 和 目录 (租户) ID。 需要此 ID 才能对应用进行身份验证。
记下应用程序 ID 和租户 ID。 在应用程序页上,转到 “概述” 并复制以下内容。
多租户应用
Microsoft Defender for Endpoint合作伙伴需要将其应用设置为多租户。 如果计划创建将在多个客户的租户中运行的应用,请将应用设置为多租户应用。
在Azure应用页中,转到“管理>身份验证”。
添加平台。
在 “配置平台 ”窗格中,选择“ Web”。
添加到
https://portal.azure.com重定向 URI,然后选择“配置”。从 “支持的帐户类型 ”选项中,选择“ 任何组织目录中的帐户 ”,然后选择“ 保存”。
运行应用后,需要在打算使用它的每个租户中对其进行批准。 这是因为应用程序代表客户与 Defender for Endpoint 交互。 你或你的客户需要选择同意链接并批准你的应用。 向具有管理员权限的用户授予同意。
下面介绍如何形成同意链接。 将 替换为 00000000-0000-0000-0000-000000000000 应用 ID。
https://login.microsoftonline.com/common/oauth2/authorize?prompt=consent&client_id=00000000-0000-0000-0000-000000000000&response_type=code&sso_reload=true
获取访问令牌
本部分列出了一些获取应用 访问令牌的方法。
# 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
验证令牌
按照本部分中的过程作,确保获得正确的令牌。 可以使用同一令牌发送多个请求。 令牌将在一小时内过期。
使用令牌访问Microsoft Defender for Endpoint API
选择要使用的 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();