Создание приложения для доступа к Microsoft Defender для конечной точки без пользователя
Область применения:
- Microsoft Defender для конечной точки (план 1)
- Microsoft Defender для конечной точки (план 2)
- Microsoft Defender для бизнеса
Важно!
Расширенные возможности охоты не включены в Defender для бизнеса.
Хотите попробовать Microsoft Defender для конечной точки? Зарегистрироваться для бесплатной пробной версии.
Примечание.
Если вы являетесь клиентом для государственных организаций США, используйте URI, перечисленные в Microsoft Defender для конечной точки для клиентов государственных организаций США.
Совет
Для повышения производительности можно использовать сервер ближе к географическому расположению:
- 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.
- Получите маркер доступа с помощью этого приложения.
- Используйте маркер для доступа к API Defender для конечной точки.
В этой статье объясняется, как создать приложение Microsoft Entra, получить маркер доступа для Microsoft Defender для конечной точки и проверить маркер.
Важно!
Microsoft рекомендует использовать роли с наименьшим количеством разрешений. Это помогает повысить безопасность вашей организации. Глобальный администратор — это роль с высокими привилегиями, которую следует ограничивать экстренными сценариями, когда вы не можете использовать существующую роль.
Создать приложение
Войдите на портал Azure.
Перейдите в раздел Microsoft Entra ID>Регистрация приложений>Новая регистрация.
В форме регистрации выберите имя приложения и нажмите кнопку Зарегистрировать.
Чтобы разрешить приложению доступ к Defender для конечной точки и назначить ему разрешение "Чтение всех оповещений", на странице приложения выберите Разрешения> APIДобавить разрешения>API, которые использует> моя организация, введите WindowsDefenderATP, а затем выберите WindowsDefenderATP.
Примечание.
WindowsDefenderATP
не отображается в исходном списке. Начните писать его имя в текстовом поле, чтобы увидеть его появление.Выберите Разрешения> приложенияAlert.Read.All, а затем — Добавить разрешения.
Выберите соответствующие разрешения.
Read All Alerts
является только примером. Ниже приводятся примеры:- Чтобы выполнить расширенные запросы, выберите
Run advanced queries
разрешение. - Чтобы изолировать устройство, выберите
Isolate machine
разрешение. - Чтобы определить, какое разрешение вам нужно, ознакомьтесь с разделом Разрешения в API, который требуется вызвать.
- Чтобы выполнить расширенные запросы, выберите
Выберите Предоставить согласие.
Примечание.
При каждом добавлении разрешения необходимо нажать кнопку Предоставить согласие , чтобы новое разрешение войлось в силу.
Чтобы добавить секрет в приложение, выберите Сертификаты & секреты, добавьте описание в секрет, а затем нажмите кнопку Добавить.
Примечание.
После нажатия кнопки Добавить выберите скопировать созданное значение секрета. Вы не сможете получить это значение после ухода.
Запишите идентификатор приложения и идентификатор клиента. На странице приложения перейдите в раздел Обзор и скопируйте следующее.
Только для партнеров 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.
Важно!
Пакет NuGet Microsoft.IdentityModel.Clients.ActiveDirectory и библиотека аутентификация Azure AD (ADAL) устарели. С 30 июня 2020 г. новые функции не добавлены. Мы настоятельно рекомендуем выполнить обновление. Дополнительные сведения см. в руководстве по миграции .
Создайте консольное приложение.
Установите 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 для 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, который вы хотите использовать. Дополнительные сведения см. в разделе Поддерживаемые API Defender для конечных точек.
Задайте заголовок авторизации в запросе, в который
http
вы отправляетеBearer {token}
(bearer — это схема авторизации).Срок действия маркера составляет один час. Вы можете отправить несколько запросов с одним и тем же маркером.
Ниже приведен пример отправки запроса на получение списка оповещений с помощью 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
См. также
- Поддерживаемые API Microsoft Defender для конечной точки
- Доступ к Microsoft Defender для конечной точки от имени пользователя
Совет
Хотите узнать больше? Engage с сообществом Microsoft Security в нашем техническом сообществе: Microsoft Defender для конечной точки Техническое сообщество.