Share via


Åtkomst till Log Analytics-API:et för Azure Monitor

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.

Kommentar

Slutpunkten api.loganalytics.io ersätts av api.loganalytics.azure.com. Slutpunkten api.loganalytics.io kommer att fortsätta att stödjas för framtiden som kan förutses.

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}

där:

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

Frågan skickas i begärandetexten.

Till exempel:

   https://api.loganalytics.azure.com/v1/workspaces/1234abcd-def89-765a-9abc-def1234abcde
   
   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 API:er som min organisation använder söker du efter Log Analytics och väljer Log Analytics API i listan.

    A screenshot that shows the Request API permissions page.

  5. Välj delegerade behörigheter.

  6. Markera kryssrutan Data.Read .

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

    A screenshot that shows the continuation of the Request API permissions page.

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

  1. På översiktssidan för Log Analytics-arbetsytan väljer du Åtkomstkontroll (IAM)..

  2. Välj Lägg till rolltilldelning.

    A screenshot that shows the Access control page for a Log Analytics workspace.

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

    A screenshot that shows the Add role assignment page for a Log Analytics workspace.

  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.

    A screenshot that shows the Select members pane on the Add role assignment page for a Log Analytics workspace.

  8. När du har slutfört Active Directory-konfigurations- och arbetsytebehörigheterna begär du en auktoriseringstoken.

Kommentar

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 Klient-ID för Microsoft Entra.
  • Ditt arbetsyte-ID.
  • Ditt Microsoft Entra-klient-ID för appen.
  • En Microsoft Entra-klienthemlighet för appen.

Log Analytics API stöder Microsoft Entra-autentisering med tre olika Microsoft Entra ID OAuth2-flöden :

  • Klientautentiseringsuppgifter
  • Auktoriseringskod
  • Implicit

Flöde för klientautentiseringsuppgifter

I flödet för klientautentiseringsuppgifter används token med Log Analytics-slutpunkten. 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 registrerar en app i Microsoft Entra-ID.

https://api.loganalytics.azure.com Använd slutpunkten.

Url för token för klientautentiseringsuppgifter (POST-begäran)

    POST /<your-tenant-id>/oauth2/token
    Host: https://login.microsoftonline.com
    Content-Type: application/x-www-form-urlencoded
    
    grant_type=client_credentials
    &client_id=<app-client-id>
    &resource=https://api.loganalytics.io
    &client_secret=<app-client-secret>

En lyckad begäran tar emot en åtkomsttoken i svaret:

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

Använd token i begäranden till Log Analytics-slutpunkten:

    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 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, kopierad 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.

Svarsexempel:

    {
        "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 Authorization: Bearer i rubriken. Du kan också använda uppdateringstoken i framtiden för att hämta en ny access_token och refresh_token när din har blivit inaktuell. 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>

Svarsexempel:

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

Implicit kodflöde

Log Analytics-API:et stöder det implicita OAuth2-flödet. För det här flödet krävs bara en enda begäran, men ingen uppdateringstoken kan hämtas.

Implicit kod auktorisera 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

En lyckad begäran genererar en omdirigering till din omdirigerings-URI med token i URL:en:

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

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

Mer information

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

Nästa steg