重要
高度なハンティング機能は、Defender for Businessには含まれていません。
注:
米国政府機関のお客様の場合は、米国政府機関のお客様向けのMicrosoft Defender for Endpointに記載されている URI を使用します。
ヒント
パフォーマンスを向上させるには、api.security.microsoft.com を使用する代わりに、位置情報に近いサーバーを使用します。
- 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
- aea.api.security.microsoft.com
このページでは、ユーザーの代わりに Defender for Endpoint にプログラムでアクセスするためのアプリケーションを作成する方法について説明します。
ユーザーなしでプログラムによるアクセスMicrosoft Defender for Endpointが必要な場合は、「アプリケーション コンテキストを使用したアクセスMicrosoft Defender for Endpoint」を参照してください。
必要なアクセスが不明な場合は、 概要ページを参照してください。
Microsoft Defender for Endpointは、一連のプログラム API を通じて、そのデータとアクションの多くを公開します。 これらの API を使用すると、作業フローを自動化し、Microsoft Defender for Endpoint機能に基づいてイノベーションを行うことができます。 API アクセスには OAuth2.0 認証が必要です。 詳細については、「 OAuth 2.0 承認コード フロー」を参照してください。
一般に、API を使用するには、次の手順を実行する必要があります。
- Microsoft Entra アプリケーションを作成する
- このアプリケーションを使用してアクセス トークンを取得する
- トークンを使用して Defender for Endpoint API にアクセスする
このページでは、Microsoft Entra アプリケーションを作成し、アクセス トークンを取得してMicrosoft Defender for Endpointし、トークンを検証する方法について説明します。
注:
ユーザーの代わりに Microsoft Defender for Endpoint API にアクセスする場合は、適切なアプリケーションのアクセス許可とユーザーアクセス許可が必要です。 Microsoft Defender for Endpointに対するユーザーのアクセス許可に慣れていない場合は、「ロールベースのアクセス制御を使用してポータル アクセスを管理する」を参照してください。
ヒント
ポータルでアクションを実行するアクセス許可がある場合は、API でアクションを実行するアクセス許可があります。
アプリを作成する
Azure portal にサインインし
[Microsoft Entra ID>>] に移動します。
[アプリケーションの登録] ページが表示されたら、以下のアプリケーションの登録情報を入力します。
[名前 ] - アプリのユーザーに表示されるわかりやすいアプリケーション名を入力します。
サポートされているアカウントの種類 - アプリケーションでサポートするアカウントを選択します。
サポートされているアカウントの種類 説明 この組織のディレクトリ内のアカウントのみ 基幹業務 (LOB) アプリケーションを作成している場合は、このオプションを選択します。 このオプションは、アプリケーションをディレクトリに登録していない場合は使用できません。
このオプションは、Microsoft Entra専用のシングルテナントにマップされます。
このオプションは、ディレクトリの外部でアプリを登録しない限り、既定のオプションです。 アプリがディレクトリの外部に登録されている場合、既定値はマルチテナントおよび個人用の Microsoft アカウントMicrosoft Entraされます。組織のディレクトリ内のアカウント 企業および教育機関のすべてのユーザーを対象とする場合は、このオプションを選択します。
このオプションは、Microsoft Entra専用マルチテナントにマップされます。
アプリをMicrosoft Entra専用のシングルテナントとして登録した場合は、[認証] ブレードを使用してマルチテナントMicrosoft Entraシングルテナントに戻すようにアプリを更新できます。組織のディレクトリ内のアカウントと個人用 Microsoft アカウント 最も広い範囲の顧客を対象とする場合は、このオプションを選択します。
このオプションは、マルチテナントおよび個人用の Microsoft アカウントMicrosoft Entraにマップされます。
マルチテナントおよび個人用の Microsoft アカウントMicrosoft Entraとしてアプリを登録した場合、UI でこれを変更することはできません。 代わりに、アプリケーション マニフェスト エディターを使用して、サポートされているアカウントの種類を変更する必要があります。リダイレクト URI (オプション) - 構築しているアプリの種類として Web または パブリック クライアント (モバイルとデスクトップ) を選択し、アプリケーションのリダイレクト URI (または応答 URL) を入力します。
Web アプリケーションの場合は、アプリのベース URL を指定します。 たとえば、
http://localhost:31544はローカル マシンで実行されている Web アプリの URL になる場合があります。 ユーザーはこの URL を使用して、Web クライアント アプリケーションにサインインします。パブリック クライアント アプリケーションの場合は、トークン応答を返すためにMicrosoft Entra IDによって使用される URI を指定します。
myapp://authなどのアプリケーションに固有の値を入力します。
Web アプリケーションまたはネイティブ アプリケーションの具体的な例を見るには、「クイック スタート」を参照してください。
終了したら、[登録] を選択します。
アプリケーションがMicrosoft Defender for Endpointにアクセスし、"アラートの読み取り" アクセス許可を割り当てることを許可します。
アプリケーション ページで[API のアクセス許可]、[>]、[アクセス許可の追加>AP organizationで使用します>「WindowsDefenderATP」と入力し、WindowsDefenderATP を選択します。
注:
WindowsDefenderATP は元の一覧に表示されません。 テキスト ボックスに名前を書き込み、表示されるようにします。
[委任されたアクセス許可] を選択>Alert.Read> [アクセス許可の追加] を選択します。
重要
関連するアクセス許可を選択します。 アラートの読み取りは一例にすぎません。
例:
アプリケーション ID とテナント ID を書き留めます。
アプリケーション ページで、[ 概要 ] に移動し、次の情報をコピーします。
アクセス トークンを取得する
Microsoft Entra トークンの詳細については、「Microsoft Entra チュートリアル」を参照してください。
注:
この記事の例はインタラクティブなサインインを使い、ユーザーにブラウザでの認証を促し、多要素認証と条件付きアクセスをサポートしています。 ユーザーのパスワードを直接収集または処理しなければならない認証フローは避けましょう。 サインインしていないユーザーなしでプログラムアクセスが必要な場合は、管理型IDや証明書認証情報付きの アプリケーションコンテキスト を使いましょう。
C の使用#
ヒント
一部のMicrosoft Defender for Endpoint API では、レガシ リソース https://api.securitycenter.microsoft.comに対して発行されたアクセス トークンが引き続き必要です。 トークンの対象ユーザーが API で予想されるリソースと一致しない場合、API エンドポイントが403 Forbiddenを使用している場合でも、要求はhttps://api.security.microsoft.comで失敗します。 トークンを取得するときに、リソースまたはスコープとして https://api.securitycenter.microsoft.com を使用します。
この例では、Microsoft Authentication Library(MSAL)を使ってトークンをインタラクティブに取得します。 実行する前に:
-
Microsoft.Identity.ClientNuGet パッケージをプロジェクトに追加します。 - アプリ登録時に、リダイレクトURIを使った
http://localhostプラットフォームを設定し、インタラクティブフローがトークンを返すようにしてください。 - 次のクラスをアプリケーションにコピー&ペーストし、アプリケーションIDとテナントIDで
AcquireUserTokenAsync を呼び出します。 ユーザーはインタラクティブにサインインするよう促されます。彼らのパスワードはあなたのアプリケーションによって決して処理されません。
namespace WindowsDefenderATP
{
using System.Linq;
using System.Threading.Tasks;
using Microsoft.Identity.Client;
public static class WindowsDefenderATPUtils
{
private const string Authority = "https://login.microsoftonline.com";
// Microsoft Defender for Endpoint APIs expect tokens issued for this resource.
private static readonly string[] Scopes = { "https://api.securitycenter.microsoft.com/.default" };
public static async Task<string> AcquireUserTokenAsync(string appId, string tenantId)
{
// Public client application for a native (desktop) app.
// No client secret or user password is stored or handled by the app.
var app = PublicClientApplicationBuilder
.Create(appId)
.WithAuthority($"{Authority}/{tenantId}")
.WithDefaultRedirectUri() // http://localhost - register as a public client redirect URI
.Build();
var account = (await app.GetAccountsAsync().ConfigureAwait(false)).FirstOrDefault();
try
{
// Reuse a cached token when one is available.
var silentResult = await app
.AcquireTokenSilent(Scopes, account)
.ExecuteAsync()
.ConfigureAwait(false);
return silentResult.AccessToken;
}
catch (MsalUiRequiredException)
{
// First run or expired session: prompt the user to sign in.
// Uses the authorization code flow with PKCE and supports
// multifactor authentication and Conditional Access.
var interactiveResult = await app
.AcquireTokenInteractive(Scopes)
.ExecuteAsync()
.ConfigureAwait(false);
return interactiveResult.AccessToken;
}
}
}
}
ヒント
ヘッドレスやブラウザなし環境では、 デバイスコードフロー (AcquireTokenWithDeviceCode)を AcquireTokenInteractiveではなく使用してください。
トークンを検証する
正しいトークンが取得されていることを確認します。
前の手順で取得したトークンを JWT にコピー/貼り付けてデコードします。
目的のアプリのアクセス許可を持つ "scp" 要求を取得したことを検証します。
次のスクリーンショットでは、チュートリアルでアプリから取得したデコードされたトークンを確認できます。
トークンを使用して API にアクセスMicrosoft Defender for Endpoint
使用する API - サポートされているMicrosoft Defender for Endpoint API を選択します。
送信する HTTP 要求の Authorization ヘッダーを "Bearer {token}" に設定します (ベアラーは承認スキームです)。
トークンの有効期限は 1 時間です (同じトークンで複数の要求を送信できます)。
C# を使用してアラートの一覧を取得する要求を送信する例:
var httpClient = new HttpClient(); var request = new HttpRequestMessage(HttpMethod.Get, "https://api.security.microsoft.com/api/alerts"); request.Headers.Authorization = new AuthenticationHeaderValue("Bearer", token); var response = httpClient.SendAsync(request).GetAwaiter().GetResult(); // Do something useful with the response
関連項目
ヒント
さらに多くの情報を得るには、 Tech Community 内の Microsoft Security コミュニティ (Microsoft Defender for Endpoint Tech Community) にご参加ください。