使用應用程式內容存取 Microsoft Defender for Cloud Apps
此頁面描述如何建立應用程式,以程式設計方式存取沒有使用者的 Defender for Cloud Apps。 如果您需要以程式設計方式存取代表使用者 Defender for Cloud Apps,請參閱使用用戶內容取得存取權。 如果您不確定需要哪一個存取權,請參閱 管理 API 令牌 頁面。
Microsoft Defender for Cloud Apps 會透過一組程序設計 API 公開其大部分的數據和動作。 這些 API 可協助您將工作流程自動化,並根據 Defender for Cloud Apps 功能進行創新。 API 存取需要 OAuth2.0 驗證。 如需詳細資訊,請參閱 OAuth 2.0 授權碼流程。
一般而言,您需要採取下列步驟來使用 API:
- 建立 Microsoft Entra 應用程式。
- 使用此應用程式取得存取令牌。
- 使用令牌來存取 Defender for Cloud Apps API。
本文說明如何建立 Microsoft Entra 應用程式、取得存取令牌以 Microsoft Defender for Cloud Apps,以及驗證令牌。
建立適用於 Defender for Cloud Apps的應用程式
在 Microsoft Entra 系統管理中心 中,註冊新的應用程式。 如需詳細資訊,請參閱快速入門:向 Microsoft Entra 系統管理中心 註冊應用程式。
若要讓您的應用程式能夠存取 Defender for Cloud Apps 並指派「讀取所有警示」許可權,請在應用程式頁面上選取 [API許可權][新增>我的組織使用的>許可權 API>],輸入Microsoft 雲端 App 安全性,然後選取 [Microsoft 雲端 App 安全性]。
注意事項
Microsoft 雲端 App 安全性 不會出現在原始清單中。 開始在文字框中寫入其名稱,以查看其出現。 請務必輸入此名稱,即使產品現在稱為 Defender for Cloud Apps。
選 取 [應用程式許可權>調查]。[讀取],然後選取 [ 新增許可權]。
您必須選取相關的許可權。 Investigation.Read 只是一個範例。 如需其他許可權範圍,請參閱 支援的許可權範圍
- 若要判斷您需要的許可權,請查看您有興趣呼叫之 API 中的許可權一節。
選 取 [授與系統管理員同意]。
注意事項
每次新增許可權時,您都必須選取 [ 授與系統管理員同意 ],新許可權才會生效。
若要將秘密新增至應用程式,請選 取 [憑證 & 秘密],選取 [ 新增客戶端密碼],將描述新增至秘密,然後選取 [ 新增]。
注意事項
選取 [ 新增] 之後,選取 [複製產生的秘密] 值。 離開之後,您將無法擷取此值。
記下您的應用程式識別碼和租用戶標識碼。 在應用程式頁面上,移至 [概觀],並將 [應用程式 (用戶端) 標識符和目錄 (租使用者) 標識符複製。
僅限 Microsoft Defender for Cloud Apps合作夥伴。 在同意) 之後,將您的應用程式設定為多租使用者 (在所有租使用者中都可使用。 例如,如果您建立要在多個客戶的租使用者租使用者) 中執行的應用程式,則第三方應用程式 (需要 此專案。 如果您建立只想在租用戶中執行的服務, (例如,如果您建立僅與您自己的數據) 互動的應用程式,則 不需要 這麼做。 若要將您的應用程式設定為多租使用者:
移至 [驗證],並將 新增
https://portal.azure.com
為 [重新導向 URI]。在頁面底部的 [ 支持的帳戶類型] 底下,選取您多租使用者應用程式 的任何組織目錄 應用程式同意中的 [帳戶]。
您需要在您想要使用的每個租使用者中核准您的應用程式。 這是因為您的應用程式會代表您的客戶 Defender for Cloud Apps 互動。
如果您要撰寫第三方應用程式, (或客戶) 需要選取同意連結並核准您的應用程式。 您應該對在 Active Directory 中具有系統管理許可權的使用者進行同意。
同意連結的格式如下:
https://login.microsoftonline.com/common/oauth2/authorize?prompt=consent&client_id=00000000-0000-0000-0000-000000000000&response_type=code&sso_reload=true
其中 000000000-0000-0000-0000-000000000000 已取代為您的應用程式識別符。
完成! 您已成功註冊應用程式! 請參閱下面的令牌取得和驗證範例。
支援的許可權範圍
許可權名稱 | 描述 | 支援的動作 |
---|---|---|
Investigation.read | 對活動和警示執行所有支持的動作,但關閉警示除外。 檢視IP範圍,但不新增、更新或刪除。 執行所有實體動作。 |
活動清單、擷取、意見反應 警示清單、擷取、標示為讀取/未讀取 實體清單、擷取、擷取樹狀結構 子網清單 |
Investigation.manage | 除了管理警示和IP範圍之外,還執行所有investigation.read動作。 | 活動清單、擷取、意見反應 警示清單、擷取、標示為讀取/未讀取、關閉 實體清單、擷取、擷取樹狀結構 子網清單,建立/更新/刪除 |
Discovery.read | 對活動和警示執行所有支持的動作,但關閉警示除外。 列出探索報告和類別。 |
警示清單、擷取、標示為讀取/未讀取 探索清單報表,列出報表類別 |
Discovery.manage | Discovery.read 許可權 關閉警示、上傳探索檔案,以及產生區塊腳本 |
警示清單、擷取、標示為讀取/未讀取、關閉 探索清單報表,列出報表類別 探索檔案上傳,產生區塊腳本 |
Settings.read | 列出IP範圍。 | 子網清單 |
Settings.manage | 列出和管理IP範圍。 | 子網清單,建立/更新/刪除 |
取得存取權杖
如需 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
$resourceAppIdUri = '05a65629-4c1b-48c1-a78b-804c4abdd4af'
$oAuthUri = "https://login.microsoftonline.com/$TenantId/oauth2/token"
$authBody = [Ordered] @{
resource = "$resourceAppIdUri"
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
使用 C#
下列程式代碼已使用 NuGet Microsoft.Identity.Client 4.47.2 進行測試。
建立新的主控台應用程式。
安裝 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 = "00001111-aaaa-2222-bbbb-3333cccc4444"; // 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 = "05a65629-4c1b-48c1-a78b-804c4abdd4af"; IConfidentialClientApplication myApp = ConfidentialClientApplicationBuilder.Create(appId).WithClientSecret(appSecret).WithAuthority($"{authority}/{tenantId}").Build(); List scopes = new List() { $"{audience}/.default" }; AuthenticationResult authResult = myApp.AcquireTokenForClient(scopes).ExecuteAsync().GetAwaiter().GetResult(); string token = authResult.AccessToken;
使用 Python
請 參閱 Microsoft Authentication Library (適用於 Python 的 MSAL) 。
使用 Curl
注意事項
下列程式假設您的電腦上已安裝 Curl for Windows。
- 開啟命令提示字元,並將CLIENT_ID設定為您的 Azure 應用程式識別碼。
- 將CLIENT_SECRET設定為您的 Azure 應用程式秘密。
- 將TENANT_ID設定為想要使用您的應用程式存取 Defender for Cloud Apps 之客戶的 Azure 租使用者識別碼。
- 執行下列命令:
curl -i -X POST -H "Content-Type:application/x-www-form-urlencoded" -d "grant_type=client_credentials" -d "client_id=%CLIENT_ID%" -d "scope=05a65629-4c1b-48c1-a78b-804c4abdd4af/.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 for Cloud Apps 角色許可權的應用程式取得的已譯碼令牌:
使用令牌存取 API Microsoft Defender for Cloud Apps
- 選擇您想要使用的 API。 如需詳細資訊,請參閱 Defender for Cloud Apps API。
- 在您傳送至 “Bearer {token}” 的 HTTP 要求中設定授權標頭, (Bearer 是授權配置) 。
- 令牌的到期時間為一小時。 您可以使用相同的令牌傳送多個要求。
以下是 使用 C# 傳送要求以取得警示清單的範例:
var httpClient = new HttpClient();
var request = new HttpRequestMessage(HttpMethod.Get, "https://portal.cloudappsecurity.com/cas/api/v1/alerts/");
request.Headers.Authorization = new AuthenticationHeaderValue("Bearer", token);
var response = httpClient.SendAsync(request).GetAwaiter().GetResult();
// Do something useful with the response