Å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.
På appens översiktssida väljer du API-behörigheter.
Välj Lägg till behörighet.
På fliken API:er som min organisation använder söker du efter Log Analytics och väljer Log Analytics API i listan.
Välj delegerade behörigheter.
Markera kryssrutan Data.Read .
Välj Lägg till behörigheter.
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.
På översiktssidan för Log Analytics-arbetsytan väljer du Åtkomstkontroll (IAM)..
Välj Lägg till rolltilldelning.
Välj rollen Läsare och välj sedan Medlemmar.
På fliken Medlemmar väljer du Välj medlemmar.
Ange namnet på din app i rutan Välj .
Välj din app och välj Välj.
Välj Granska + tilldela.
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.
Använd resource=https://api.loganalytics.azure.com
.
Hämta en autentiseringstoken med någon av följande metoder:
- CLI
- REST-API
- SDK
När du begär en token måste du ange en resource
parameter. Parametern resource
är URL:en för den resurs som du vill komma åt.
Resurserna omfattar:
https://management.azure.com
https://api.loganalytics.io
https://monitoring.azure.com
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=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": "https://monitoring.azure.com",
"access_token": "eyJ0eXAiOiJKV1Qi....gpHWoRzeDdVQd2OE3dNsLIvUIxQ"
}
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:
- Microsoft Entra-auktoriseringskodflöde
- Implicit beviljandeflöde för Microsoft Entra
- Microsoft Entra S2S-klientautentiseringsuppgifter flöde