创建应用以在没有用户的情况下访问Microsoft Defender for Endpoint

使用 API 时,可能需要在没有用户的情况下访问Microsoft Defender for Endpoint。 例如,你可能希望创建一个在后台运行并代表组织与 Defender for Endpoint 交互的服务。 在这种情况下,需要创建一个无需用户即可访问 Defender for Endpoint 的应用程序。

API 访问需要 OAuth2.0 身份验证

先决条件

具有用于在 Azure 中创建应用的Microsoft Entra角色。 例如 ,应用程序管理员

步骤 1:在 Azure 中创建应用

  1. 登录 Azure 门户

  2. 搜索应用注册并导航到应用注册

  3. 选择“新注册”

  4. 选择应用程序的名称,然后选择“ 注册”。

  5. 在应用程序页中,转到 “管理 > API 权限 > ”“添加我组织使用的权限 > API”。

  6. “请求 API 权限 ”页中,搜索 “WindowsDefenderATP ”并将其选中。

  7. 选择所需的权限类型,然后选择 “添加权限”。

    • 委托的权限 - 使用应用登录,就像是用户一样。

    • 应用程序权限 - 访问 API 即服务。

  8. 为应用选择适当的权限。 若要确定所需的权限,请查看要调用的 API 中的 “权限” 部分。 下面是两个示例:

  9. 选择“ 添加权限”。

步骤 2:向应用添加机密

本部分介绍如何使用应用机密对应用进行身份验证。 若要使用证书对应用进行身份验证,请参阅 创建自签名公共证书对应用程序进行身份验证

  1. 在应用程序页中,选择“ 证书”& 机密>“”新建客户端密码”。

  2. “添加客户端密码 ”窗格中,添加说明和到期日期。

  3. 选择“添加”。

  4. 复制创建的机密 的值 。 离开页面后,将无法检索此值。

  5. 从应用的 概述 页中,复制 应用程序 (客户端) ID目录 (租户) ID。 需要此 ID 才能对应用进行身份验证。

  6. 记下应用程序 ID 和租户 ID。 在应用程序页上,转到 “概述” 并复制以下内容。

多租户应用

Microsoft Defender for Endpoint合作伙伴需要将其应用设置为多租户。 如果计划创建将在多个客户的租户中运行的应用,请将应用设置为多租户应用。

  1. 在Azure应用页中,转到“管理>身份验证”。

  2. 添加平台

  3. “配置平台 ”窗格中,选择“ Web”。

  4. 添加到https://portal.azure.com重定向 URI,然后选择“配置”。

  5. “支持的帐户类型 ”选项中,选择“ 任何组织目录中的帐户 ”,然后选择“ 保存”。

运行应用后,需要在打算使用它的每个租户中对其进行批准。 这是因为应用程序代表客户与 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

验证令牌

按照本部分中的过程作,确保获得正确的令牌。 可以使用同一令牌发送多个请求。 令牌将在一小时内过期。

  1. 令牌 复制并粘贴到 JWT 中以对其进行解码。

  2. 验证是否获取具有所需权限的角色声明。

使用令牌访问Microsoft Defender for Endpoint API

  1. 选择要使用的 API

  2. 在发送到 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();