Dela via


Få åtkomst till api:et för Azure Monitor Log Analytics

Du kan skicka en frågebegäran till en arbetsyta med hjälp av Azure Monitor Log Analytics slutpunkten https://api.loganalytics.azure.com. För att få åtkomst till slutpunkten måste du autentisera via Microsoft Entra ID.

Anteckning

Slutpunkten api.loganalytics.io ersätts av api.loganalytics.azure.com. Slutpunkten api.loganalytics.io kommer att fortsätta att stödjas under överskådlig framtid.

Autentisera med en demo-API-nyckel

Om du snabbt vill utforska API:et utan Microsoft Entra autentisering använder du demonstrationsarbetsytan med exempeldata, som stöder API-nyckelautentisering.

Om du vill autentisera och köra frågor mot exempelarbetsytan använder DEMO_WORKSPACE du som {workspace-id} och skickar api-nyckeln DEMO_KEY.

Om antingen program-ID:t eller API-nyckeln är felaktiga returnerar API-tjänsten ett 403-fel (förbjudet).

API-nyckeln DEMO_KEY kan skickas på tre olika sätt, beroende på om du vill använda en rubrik, URL:en eller grundläggande autentisering:

  • Anpassat huvud: Ange API-nyckeln i det anpassade huvudet X-Api-Key.
  • Frågeparameter: Ange API-nyckeln i URL-parametern api_key.
  • Grundläggande autentisering: Ange API-nyckeln som användarnamn eller lösenord. Om du anger båda måste API-nyckeln vara i användarnamnet.

I det här exemplet används arbetsyte-ID:t och API-nyckeln i rubriken:

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"
}

Offentlig API-slutpunkt

Den offentliga API-slutpunkten är:

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

Var:

  • api-version: API-versionen. Den aktuella versionen är v1.
  • workspaceId: Ditt arbetsyte-ID.

Anteckning

API-versionen beta har blivit inaktuell. Mer information finns i Migrera från att använda API:er för batch- och betafrågor.

Frågan skickas i begärandetexten.

Till exempel:

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

Body:
{
    "query": "Usage"
}

Konfigurera autentisering

För att få åtkomst till API:et registrerar du en klientapp med Microsoft Entra ID och begär en token.

  1. Registrera en app i Microsoft Entra ID.

  2. På appens översiktssida väljer du API-behörigheter.

  3. Välj Lägg till behörighet.

  4. På fliken APIs som min organisation använder söker du efter Log Analytics och väljer Log Analytics API i listan.

    En skärmbild som visar sidan Förfrågnings-API-behörigheter.

  5. Välj delegerade behörigheter.

  6. Markera kryssrutan Data.Read .

  7. Välj Lägg till behörigheter.

    En skärmbild som visar fortsättningen på sidan Förfrågnings-API-behörigheter.

Nu när din app har registrerats och har behörighet att använda API:et ger du din app åtkomst till din Log Analytics arbetsyta.

  1. Log Analytics-arbetsytans översiktssida, väljer du Åtkomstkontroll (IAM).

  2. Välj Lägg till rolltilldelning.

    En skärmbild som visar sidan Åtkomstkontroll för en Log Analytics arbetsyta.

  3. Välj rollen Läsare och välj sedan Medlemmar.

    En skärmbild som visar sidan Lägg till rolltilldelning för en Log Analytics arbetsyta.

  4. På fliken Medlemmar väljer du Välj medlemmar.

  5. Ange namnet på din app i rutan Välj .

  6. Välj din app och välj Välj.

  7. Välj Granska + tilldela.

    En skärmbild som visar fönstret Välj medlemmar på sidan Lägg till rolltilldelning för en Log Analytics arbetsyta.

  8. När du har slutfört služba Active Directory konfigurations- och arbetsytebehörigheter begär du en auktoriseringstoken.

Anteckning

I det här exemplet använde vi rollen Läsare. Den här rollen är en av många inbyggda roller och kan innehålla fler behörigheter än du behöver. Du kan skapa fler detaljerade roller och behörigheter. Mer information finns i Hantera åtkomst till Log Analytics arbetsytor.

Begära en auktoriseringstoken

Innan du börjar kontrollerar du att du har alla värden som krävs för att begäran ska lyckas. Alla begäranden kräver:

  • Ditt Microsoft Entra klient-ID.
  • Ditt arbetsyte-ID.
  • Ditt Microsoft Entra klient-ID för appen.
  • En Microsoft Entra klienthemlighet för appen.

LOG ANALYTICS-API:et stöder Microsoft Entra autentisering med tre olika Microsoft Entra ID OAuth2 flöden:

  • Klientautentiseringsuppgifter
  • Auktoriseringskod
  • Underförstådd

Flöde för klientautentiseringsuppgifter

I flödet för klientuppgifter används token med slutpunkten för Log Analytics. En enda begäran görs om att ta emot en token med hjälp av de autentiseringsuppgifter som angavs för din app i föregående steg när du registrera en app i Microsoft Entra ID.

Använd resource=https://api.loganalytics.azure.com.

Hämta en autentiseringstoken med någon av följande metoder:

  • Kommandoradsgränssnitt (CLI)
  • REST-API
  • SDK

Hämta en token med hjälp av en REST-begäran

Använd följande REST API-anrop för att hämta en token. Den här begäran använder ett klient-ID och en klienthemlighet för att autentisera begäran. Klient-ID och klienthemlighet hämtas när du registrerar ditt program med Microsoft Entra ID. Mer information finns i Registrera en app för att begära auktoriseringstoken och arbeta med API:er.

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={resource URI of the service you want to access, e.g. https://monitoring.azure.com>'}'

Svarstexten visas i följande format:

{
    "token_type": "Bearer",
    "expires_in": "86399",
    "ext_expires_in": "86399",
    "expires_on": "1672826207",
    "not_before": "1672739507",
    "resource": "{resource URI of the service you want to access, e.g. https://monitoring.azure.com>'}",
    "access_token": "eyJ0eXAiOiJKV1Qi....gpHWoRzeDdVQd2OE3dNsLIvUIxQ"
}

Använd token i begäranden till Log Analytics slutpunkt:

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"
}

Exempelsvar:

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

Auktoriseringskodflöde

Det huvudsakliga OAuth2-flödet som stöds är via auktoriseringskoder. Den här metoden kräver två HTTP-begäranden för att hämta en token som du kan anropa Azure Monitor Log Analytics-API:et med. Det finns två URL:er med en slutpunkt per begäran. Deras format beskrivs i följande avsnitt.

Auktoriseringskod-URL (GET-begäran)

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

När en begäran görs om att auktorisera URL:en är client_id program-ID:t från din Microsoft Entra app som kopieras från appens egenskapsmeny. Redirect_uri är startsidan/inloggnings-URL:en från samma Microsoft Entra app. När en begäran lyckas omdirigerar den här slutpunkten dig till inloggningssidan som du angav vid registreringen med auktoriseringskoden som läggs till i URL:en. Se följande exempel:

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

Nu har du fått en auktoriseringskod som du nu behöver för att begära en åtkomsttoken.

Url för auktoriseringskodtoken (POST-begäran)

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>

Alla värden är samma som tidigare, med vissa tillägg. Auktoriseringskoden är samma kod som du fick i föregående begäran efter en lyckad omdirigering. Koden kombineras med nyckeln som hämtas från Microsoft Entra-appen. Om du inte sparade nyckeln kan du ta bort den och skapa en ny från fliken nycklar i Microsoft Entra appmenyn. Svaret är en JSON-sträng som innehåller token med följande schema. Typer anges för tokenvärdena.

Exempelsvar:

{
    "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"
}

Åtkomsttokendelen av det här svaret är det du presenterar för Log Analytics-API:et i rubriken Authorization: Bearer. Du kan också använda en uppdateringstoken i framtiden för att skaffa en ny access_token och en ny uppdateringstoken när dina nuvarande har blivit inaktuella. För den här begäran är formatet och slutpunkten:

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>

Exempelsvar:

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

Flöde för klientautentiseringsuppgifter

Log Analytics-API:et stöder OAuth2 klientautentiseringsflöde. Det här flödet är lämpligt för tjänst-till-tjänst-anrop där ingen användarinteraktion krävs.

Tokenbegäran för klientautentiseringsuppgifter

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

client_id=<app-client-id>
&scope=https://api.loganalytics.io/.default
&client_secret=<app-client-secret>
&grant_type=client_credentials

Exempelsvar:

{
    "token_type": "Bearer",
    "expires_in": 3599,
    "access_token": "eyJ0eXAiOiJKV1QiLCJ.....Ax"
}

Den här access_token kan användas som Authorization: Bearer-huvudvärde när det skickas till Log Analytics API för att auktorisera begäranden.

Mer information

Du hittar dokumentation om OAuth2 med Microsoft Entra här:

Nästa steg