API を使用する場合は、ユーザーなしでMicrosoft Defender for Endpointにアクセスする必要がある場合があります。 たとえば、バックグラウンドで実行され、organizationの代わりに Defender for Endpoint と対話するサービスを作成できます。 この場合は、ユーザーなしで Defender for Endpoint にアクセスできるアプリケーションを作成する必要があります。
API アクセスには OAuth2.0 認証が必要です。
前提条件
Azureでアプリを作成するためのMicrosoft Entra ロールを持つ。 たとえば、 アプリケーション管理者です。
手順 1: Azureでアプリを作成する
Azure portal にサインインし
アプリの登録を検索し、アプリの登録に移動します。
[新規登録] を選択します。
アプリケーションの名前を選択し、[ 登録] を選択します。
アプリケーション ページで、[> Api のアクセス許可の管理] > [organizationが使用する API >アクセス許可を追加する] に移動します。
[ API のアクセス許可の要求 ] ページで、 WindowsDefenderATP を検索して選択します。
必要なアクセス許可の種類を選択し、[ アクセス許可の追加] を選択します。
委任されたアクセス許可 - ユーザーであるかのようにアプリでサインインします。
アプリケーションのアクセス許可 - API にサービスとしてアクセスします。
アプリの適切なアクセス許可を選択します。 必要なアクセス許可を特定するには、呼び出している API の [アクセス許可] セクションを参照してください。 次に、2 つの例を紹介します。
[アクセス許可の追加] を選択します。
手順 2: アプリにシークレットを追加する
このセクションでは、アプリ シークレットを使用したアプリの認証について説明します。 証明書を使用してアプリを認証するには、「 自己署名パブリック証明書を作成してアプリケーションを認証する」を参照してください。
アプリケーション ページで、[証明書 & シークレット>新しいクライアント シークレット] を選択します。
[ クライアント シークレットの追加] ウィンドウで 、説明と有効期限を追加します。
[追加] を選択します。
作成したシークレットの 値 をコピーします。 ページを離れた後、この値を取得することはできません。
アプリの 概要 ページで、 アプリケーション (クライアント) ID と ディレクトリ (テナント) ID をコピーします。 アプリを認証するには、この ID が必要です。
アプリケーション ID とテナント ID を書き留めます。 アプリケーション ページで、[ 概要 ] に移動し、次の内容をコピーします。
マルチテナント アプリ
Microsoft Defender for Endpointパートナーは、アプリをマルチテナントに設定する必要があります。 複数の顧客のテナントで実行されるアプリを作成する予定の場合は、アプリをマルチテナント アプリに設定します。
Azure アプリ ページで、[> 認証の管理] に移動します。
プラットフォームを追加します。
[ プラットフォームの構成 ] ウィンドウで、[ Web] を選択します。
[リダイレクト URI] に
https://portal.azure.comを追加し、[構成] を選択します。[ サポートされているアカウントの種類 ] オプション で、[任意の組織のディレクトリにあるアカウント ] を選択し、[保存] を選択 します。
アプリを実行したら、アプリを使用する予定の各テナントで承認する必要があります。 これは、アプリケーションが顧客の代わりに 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 時間です。
トークンを使用して API にアクセスMicrosoft Defender for Endpoint
使用する 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();