PowerShell を使用した高度な追求
適用対象:
Microsoft Defender ATP を試してみたいですか? 無料試用版にサインアップしてください。
注:
米国政府機関のお客様は、 Microsoft Defender for Endpoint for US Government のお客様に記載されている URI を使用してください。
ヒント
パフォーマンスを向上させるために、地理的な場所に近いサーバーを使用できます。
- 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
PowerShell を使用して高度なクエリを実行します。 詳細については、「 Advanced Hunting API」を参照してください。
このセクションでは、PowerShell サンプルを共有してトークンを取得し、それを使用してクエリを実行します。
開始する前に
最初にアプリを 作成する必要があります。
準備手順
PowerShell のウィンドウを開きます。
ポリシーで PowerShell コマンドを実行できない場合は、次のコマンドを実行できます。
Set-ExecutionPolicy -ExecutionPolicy Bypass
詳細については、 PowerShell のドキュメントを参照してください。
トークンを取得する
- 次のコマンドを実行します。
$tenantId = '00000000-0000-0000-0000-000000000000' # Paste your own tenant ID here
$appId = '11111111-1111-1111-1111-111111111111' # Paste your own app ID here
$appSecret = '22222222-2222-2222-2222-222222222222' # Paste your own app secret here
$resourceAppIdUri = 'https://api.securitycenter.microsoft.com'
$oAuthUri = "https://login.microsoftonline.com/$TenantId/oauth2/token"
$body = [Ordered] @{
resource = "$resourceAppIdUri"
client_id = "$appId"
client_secret = "$appSecret"
grant_type = 'client_credentials'
}
$response = Invoke-RestMethod -Method Post -Uri $oAuthUri -Body $body -ErrorAction Stop
$aadToken = $response.access_token
場所
- $tenantId: クエリを実行するテナントの ID (つまり、クエリはこのテナントのデータに対して実行されます)
- $appId: Microsoft Entra アプリの ID (アプリには Defender for Endpoint に対する "高度なクエリの実行" アクセス許可が必要です)
- $appSecret: Microsoft Entra アプリのシークレット
クエリの実行
次のクエリを実行します。
$token = $aadToken
$query = 'DeviceRegistryEvents | limit 10' # Paste your own query here
$url = "https://api.securitycenter.microsoft.com/api/advancedqueries/run"
$headers = @{
'Content-Type' = 'application/json'
Accept = 'application/json'
Authorization = "Bearer $aadToken"
}
$body = ConvertTo-Json -InputObject @{ 'Query' = $query }
$webResponse = Invoke-WebRequest -Method Post -Uri $url -Headers $headers -Body $body -ErrorAction Stop
$response = $webResponse | ConvertFrom-Json
$results = $response.Results
$schema = $response.Schema
- クエリの結果を含む$results
- $schemaクエリの結果のスキーマが含まれています
複雑なクエリ
複雑なクエリ (または複数行クエリ) を実行する場合は、クエリをファイルに保存し、上記のサンプルの最初の行ではなく、次のコマンドを実行します。
$query = [IO.File]::ReadAllText("C:\myQuery.txt"); # Replace with the path to your file
クエリ結果を操作する
クエリ結果を使用できるようになりました。
ファイル file1.csv で CSV 形式でクエリの結果を出力するには、次のコマンドを実行します。
$results | ConvertTo-Csv -NoTypeInformation | Set-Content C:\file1.csv
ファイル file1.jsonで JSON 形式でクエリの結果を出力するには、次のコマンドを実行します。
$results | ConvertTo-Json | Set-Content file1.json
関連記事
ヒント
さらに多くの情報を得るには、 Tech Community 内の Microsoft Security コミュニティ (Microsoft Defender for Endpoint Tech Community) にご参加ください。