共用方式為


存取 Azure 監視器 Log Analytics API

您可以使用 Azure 監視器 Log Analytics 端點 https://api.loganalytics.azure.com,將查詢要求提交至工作區。 若要存取該端點,您必須透過 Microsoft Entra ID 進行驗證。

附註

api.loganalytics.io 端點即將取代為 api.loganalytics.azure.com。 在可預見的未來,將繼續支援 api.loganalytics.io 端點。

使用示範 API 金鑰進行驗證

若要在不使用 Microsoft Entra 驗證的情況下快速探索 API,請使用示範工作區搭配範例資料 (支援 API 金鑰驗證)。

若要驗證和執行範例工作區的查詢,請使用 DEMO_WORKSPACE 作為 {workspace-id} 並傳入 API 金鑰 DEMO_KEY

如果應用程式識別碼或 API 金鑰不正確,API 服務會傳回 403 (禁止) 錯誤。

根據您要使用標頭、URL 還是基本驗證,API 金鑰 DEMO_KEY 可透過三種不同的方式傳遞:

  • 自訂標頭:在自訂標頭 X-Api-Key 中提供 API 金鑰。
  • 查詢參數:在 URL 參數 api_key 中提供 API 金鑰。
  • 基本驗證:提供 API 金鑰作為使用者名稱或密碼。 如果您同時提供這兩者,API 金鑰就必須位於使用者名稱中。

此範例使用位於標頭中的工作區識別碼和 API 金鑰:

POST https://api.loganalytics.azure.com/v1/workspaces/DEMO_WORKSPACE/query
X-Api-Key: DEMO_KEY
Content-Type: application/json

{
    "query": "AzureActivity | summarize count() by Category"
}

公用 API 端點

公用 API 端點為:

https://api.loganalytics.azure.com/{api-version}/workspaces/{workspaceId}

地點:

  • api-version:API 版本。 目前的版本為 v1
  • workspaceId:您的工作區識別碼。

附註

beta api-version 已被棄用。 如需詳細資訊,請參閱 從使用批次和 Beta 查詢 API 遷移

查詢會在要求本文中傳遞。

例如:

https://api.loganalytics.azure.com/v1/workspaces/a0a0a0a0-bbbb-cccc-dddd-e1e1e1e1e1e1

Body:
{
    "query": "Usage"
}

設定驗證

若要存取 API,請使用 Microsoft Entra ID 註冊用戶端應用程式,並要求權杖。

  1. 在 Microsoft Entra ID 中註冊應用程式

  2. 在應用程式的概觀頁面上,選取 [API 權限]

  3. 選取新增權限

  4. 在 [我的組織使用的 API] 索引標籤上搜尋 Log Analytics,然後從清單中選取 [Log Analytics API]

    顯示 [要求 API 權限] 頁面的螢幕擷取畫面。

  5. 選取委派的權限

  6. 選取 [Data.Read] 核取方塊。

  7. 選取新增權限

    顯示 [要求 API 權限] 頁面繼續的螢幕擷取畫面。

現在,您的應用程式已註冊並具有使用 API 的權限,請為應用程式授與 Log Analytics 工作區的存取權。

  1. Log Analytics 工作區的概觀頁面,選取 存取控制 (IAM)

  2. 選取 新增角色指派

    顯示 Log Analytics 工作區的存取控制頁面的螢幕擷取畫面。

  3. 選取 [讀者] 角色,然後選取 [成員]

    顯示 Log Analytics 工作區 [新增角色指派] 頁面的螢幕擷取畫面。

  4. 在 [成員] 索引標籤上,選擇 [選取成員]

  5. 在 [選取] 方塊中輸入應用程式的名稱。

  6. 選取您的應用程式,然後選擇 [選取]

  7. 選取檢閱+指派

    顯示 Log Analytics 工作區 [新增角色指派] 頁面上 [選取成員] 窗格的螢幕擷取畫面。

  8. 在完成 Active Directory 設定和工作區權限作業後,要求授權權杖。

附註

在此範例中,我們套用了讀者角色。 此角色是眾多內建角色之一,可能包含比您所需還要多的權限。 您可以建立更細微的角色和權限。 如需詳細資訊,請參閱管理 Log Analytics 工作區的存取權

要求授權權杖

開始之前,請確定您具有成功提出要求所需的所有值。 所有要求都需要:

  • 您的 Microsoft Entra 租戶 ID。
  • 您的工作區識別碼。
  • 應用程式的 Microsoft Entra 用戶端識別碼。
  • 應用程式的 Microsoft Entra 用戶端密碼。

Log Analytics API 支援使用三種不同的 Microsoft Entra ID OAuth2 流程進行 Microsoft Entra 驗證:

  • 用戶端認證
  • 授權碼
  • 隱含

用戶端認證流程

在用戶端認證流程中,權杖會與 Log Analytics 端點搭配使用。 當您在 Microsoft Entra ID 中註冊應用程式時,將會提出單一要求,使用在上一個步驟中為應用程式提供的認證來接收權杖。

使用 resource=https://api.loganalytics.azure.com

使用下列任何方法來取得驗證令牌:

  • CLI(命令列介面)
  • REST API
  • SDK

要求權杖時,您必須提供 resource 參數。 resource 參數是您想要存取的資源的 URL。

這些資源包括:

  • https://management.azure.com
  • https://api.loganalytics.io
  • https://monitoring.azure.com

使用 REST 要求取得權杖

使用下列 REST API 呼叫來取得權杖。 此要求會使用用戶端識別碼和用戶端密碼來驗證要求。 當您向 Microsoft Entra ID 註冊應用程式時,會取得用戶端識別碼和用戶端密碼。 如需詳細資訊,請參閱註冊應用程式以要求授權權杖並使用 API

curl -X POST 'https://login.microsoftonline.com/<tennant ID>/oauth2/token' \
-H 'Content-Type: application/x-www-form-urlencoded' \
--data-urlencode 'grant_type=client_credentials' \
--data-urlencode 'client_id=<your apps client ID>' \
--data-urlencode 'client_secret=<your apps client secret' \
--data-urlencode 'resource=https://monitoring.azure.com'

回應本文會以下列格式出現:

{
    "token_type": "Bearer",
    "expires_in": "86399",
    "ext_expires_in": "86399",
    "expires_on": "1672826207",
    "not_before": "1672739507",
    "resource": "https://monitoring.azure.com",
    "access_token": "eyJ0eXAiOiJKV1Qi....gpHWoRzeDdVQd2OE3dNsLIvUIxQ"
}

在對 Log Analytics 端點的要求中使用權杖:

POST /v1/workspaces/your workspace id/query?timespan=P1D
Host: https://api.loganalytics.azure.com
Content-Type: application/json
Authorization: Bearer <your access token>

Body:

{
"query": "AzureActivity |summarize count() by Category"
}

範例回應:

{
    "tables": [
        {
            "name": "PrimaryResult",
            "columns": [
                {
                    "name": "OperationName",
                    "type": "string"
                },
                {
                    "name": "Level",
                    "type": "string"
                },
                {
                    "name": "ActivityStatus",
                    "type": "string"
                }
            ],
            "rows": [
                [
                    "Metric Alert",
                    "Informational",
                    "Resolved",
                    ...
                ],
                ...
            ]
        },
        ...
    ]
}

授權碼流程

支援的主要 OAuth2 流程是透過授權碼來完成。 此方法需要兩個 HTTP 要求來取得權杖,以呼叫 Azure 監視器 Log Analytics API。 每個要求對應一個端點,因此共有兩個 URL。 其格式將於以下幾節說明。

授權碼 URL (GET 要求)

GET https://login.microsoftonline.com/YOUR_Azure AD_TENANT/oauth2/authorize?
client_id=<app-client-id>
&response_type=code
&redirect_uri=<app-redirect-uri>
&resource=https://api.loganalytics.io

對授權 URL 提出要求時,client_id 是您 Microsoft Entra 應用程式的應用程式識別碼 (複製自應用程式的屬性功能表)。 redirect_uri 是相同 Microsoft Entra 應用程式的首頁/登入 URL。 要求成功時,此端點會將您重新導向至您在註冊時提供的登入頁面,並將授權碼附加至 URL。 請參閱下列範例:

http://<app-client-id>/?code=AUTHORIZATION_CODE&session_state=STATE_GUID

此時您已取得授權碼,現在您需要使用它來請求存取憑證。

授權碼權杖 URL (POST 要求)

POST /YOUR_Azure AD_TENANT/oauth2/token HTTP/1.1
Host: https://login.microsoftonline.com
Content-Type: application/x-www-form-urlencoded

grant_type=authorization_code
&client_id=<app client id>
&code=<auth code fom GET request>
&redirect_uri=<app-client-id>
&resource=https://api.loganalytics.io
&client_secret=<app-client-secret>

所有值都與先前相同,但有一些新增項目。 授權碼是您在成功重新導向之後,於先前要求中收到的相同代碼。 此授權碼會與取自 Microsoft Entra 應用程式的金鑰合併。 如果您未儲存金鑰,則可將其刪除,並從 Microsoft Entra 應用程式功能表的 [金鑰] 索引標籤中建立新金鑰。 回應是一個 JSON 字串,其中包含具有下列結構的令牌。 會針對代幣值標示類型。

範例回應:

{
    "access_token": "eyJ0eXAiOiJKV1QiLCJ.....Ax",
    "expires_in": "3600",
    "ext_expires_in": "1503641912",
    "id_token": "not_needed_for_log_analytics",
    "not_before": "1503638012",
    "refresh_token": "eyJ0esdfiJKV1ljhgYF.....Az",
    "resource": "https://api.loganalytics.io",
    "scope": "Data.Read",
    "token_type": "bearer"
}

此回應的存取權杖部分是您在 Authorization: Bearer 標頭中,向 Log Analytics API 呈現的內容。 您也可以在未來使用重新整理權杖取得新的 access_token,並在其過期時取得 refresh_token。 針對此要求,格式和端點為:

POST /YOUR_AAD_TENANT/oauth2/token HTTP/1.1
Host: https://login.microsoftonline.com
Content-Type: application/x-www-form-urlencoded

client_id=<app-client-id>
&refresh_token=<refresh-token>
&grant_type=refresh_token
&resource=https://api.loganalytics.io
&client_secret=<app-client-secret>

範例回應:

{
    "token_type": "Bearer",
    "expires_in": "3600",
    "expires_on": "1460404526",
    "resource": "https://api.loganalytics.io",
    "access_token": "eyJ0eXAiOiJKV1QiLCJ.....Ax",
    "refresh_token": "eyJ0esdfiJKV1ljhgYF.....Az"
}

隱含代碼流程

Log Analytics API 支援 OAuth2 隱含流程。 針對此流程只需單一要求,但無法取得任何更新權限。

隱含代碼授權 URL

GET https://login.microsoftonline.com/YOUR_AAD_TENANT/oauth2/authorize?
client_id=<app-client-id>
&response_type=token
&redirect_uri=<app-redirect-uri>
&resource=https://api.loganalytics.io

若要求成功,則會使用 URL 中的權杖重新導向至您的重新導向 URI:

http://YOUR_REDIRECT_URI/#access_token=YOUR_ACCESS_TOKEN&token_type=Bearer&expires_in=3600&session_state=STATE_GUID

傳遞至 Log Analytics API 為要求授權時,此 access_token 可作為 Authorization: Bearer 標頭值。

其他相關資訊

您可以在這裡找到將 OAuth2 用於 Microsoft Entra 的相關文件:

下一步