Skapa djupa länkar till Microsoft Sentinel graffrågor

Du kan skapa en djuplänk som öppnar Microsoft Sentinel-sidan för diagrammet med en specifik fråga som redan har angetts i redigeraren och som valfritt kör frågan automatiskt när sidan läses in. Bädda in dessa länkar i runbooks, incidentrapporter eller annan dokumentation så att en svarare kan välja en länk och gå direkt till en förkonfigurerad undersökningsfråga i rätt diagram.

Djuplänksfrågor bäddas in i URL:en som Base64-text (base64url) så att de kan skickas tillförlitligt som en enda URL-parameter. Frågan är inte krypterad, signerad eller komprimerad.

Prerequisites

För att skapa en djuplänk behöver du följande krav:

  • En grafinstans som finns i din klientorganisation. Du skickar dess namn i parametern graphInstance . Information om hur du hittar giltiga namn finns i Hitta giltiga graphInstance-värden.
  • Frågetexten som du vill öppna i redigeraren.

Om du vill öppna en länkad fråga behöver du behörighet att visa grafen och köra frågor. Djuplänkar kringgår inte åtkomstkontroller, så en användare utan dessa behörigheter kan inte komma åt den länkade frågan. Mer information finns i Kom igång med anpassade grafer i Microsoft Sentinel.

En URL för djuplänk består av flera komponenter. Följande delar upp den grundläggande strukturen och varje del:

https://security.microsoft.com/graphs?tid=<tenant-id>&graphInstance=<graph-name>&query=<encoded-query>&autoRun=<true|false>&addQuery=<true|false>

URL-komponenter

Component Required Description
https://security.microsoft.com/graphs Bas-URL för Microsoft Sentinel diagram.
tid=<tenant-id> No Ditt Azure klient-ID (GUID). Om det utelämnas används den aktuella klientorganisationen.
graphInstance=<graph-name> Yes Namnet på grafinstansen som ska öppnas, till exempel IdentityAttackScenarioGraph. Om värdet saknas eller är okänt fylls ingenting i i förväg.
query=<encoded-query> No Din base64url-kodade GQL-fråga (Graph Query Language). Förifyller redigeraren med den avkodade frågesträngen.
language=<language> No Frågespråk. Det enda värde som stöds är gql. Skiftlägesokänslig; ett okänt värde återgår till gql.
autoRun=<true\|false> No Om frågan ska köras automatiskt när fliken öppnas. Standardinställningen är true. Endast den bokstavliga strängen false (skiftlägesokänslig) inaktiverar automatisk körning; alla andra värden gör att frågan körs.
addQuery=<true\|false> No Om redigeraren ska fyllas i i förväg med frågan. Standardinställningen är true. Ställ in på false för att lämna redigeraren tom även när query finns.

Exempel på uppdelning

Följande djuplänk öppnar Microsoft Sentinel-graphsidan med en specifik fråga ifylld i redigeraren, utan att köra den automatiskt:

https://security.microsoft.com/graphs
  ?tid=12345678-1234-1234-1234-123456789012
  &graphInstance=IdentityAttackScenarioGraph
  &query=Ly8gVmlzdWFsaXplIGFueSBncmFwaApNQVRDSCAoeCktW3ldLT4oeikKUkVUVVJOICoKTElNSVQgMTAw
  &autoRun=false

Parametern query avkodar till följande GQL-fråga:

// Visualize any graph
MATCH (x)-[y]->(z)
RETURN *
LIMIT 100

Uppdelning:

  • Bas: https://security.microsoft.com/graphs
  • Klientorganisation: tid=12345678-1234-1234-1234-123456789012
  • Diagram: graphInstance=IdentityAttackScenarioGraph
  • Fråga: query=Ly8gVmlzdWFsaXplIGFueSBncmFwaApNQVRDSCAoeCktW3ldLT4oeikKUkVUVVJOICoKTElNSVQgMTAw (kodar till GQL som visas ovan)
  • Kör automatiskt: autoRun=false (frågan körs inte automatiskt)

Koda frågan med base64url

Koda värdet query med följande steg. De här stegen matchar encodeQueryBase64 funktionen i QueryUtils.ts.

  1. UTF-8 kodar den råa frågetexten till byte.
  2. Base64-koda de här bytena.
  3. Ersätt + med - och / med _ för att göra värdet URL-säkert.
  4. Ta bort eventuella avslutande = utfyllnadstecken.
  5. Placera resultatet i URL:en som query parameter. Standard-URL-kodning är säker att använda ovanpå.

Note

Den maximala längden för genererad länk är 7 168 tecken. Mycket stora frågor kanske inte skapar en fungerande djuplänk.

Följande JavaScript matchar programkodaren exakt och sammanställer en fullständig djuplänk:

function encodeQueryBase64(query) {
  const bytes = new TextEncoder().encode(query);
  const binary = String.fromCharCode(...bytes);
  return btoa(binary)
    .replace(/\+/g, '-')
    .replace(/\//g, '_')
    .replace(/=+$/g, '');
}

const base = 'https://security.microsoft.com/graphs';
const params = new URLSearchParams({
  graphInstance: 'IdentityAttackScenarioGraph',
  query: encodeQueryBase64('MATCH (x)-[y]->(z)\nRETURN *\nLIMIT 100'),
  autoRun: 'true',
});
const deeplink = `${base}?${params.toString()}`;

Villkor för automatisk körning

För att frågan ska köras automatiskt måste alla följande villkor vara sanna:

  • autoRun är inte inställt på den bokstavliga strängen false.
  • Den avkodade frågan är inte tom.
  • graphInstance finns för klientorganisationen.

Hitta giltiga graphInstance-värden

Du kan använda vilken grafinstans som helst som finns i din klientorganisation genom att ange instansnamnet. Om du vill hitta de tillgängliga namnen bläddrar du antingen i användargränssnittet för Microsoft Sentinel diagram eller anropar api:et för Microsoft Sentinel Graph ServiceGET /graph-instances. Det här API:et returnerar de grafinstanser som är tillgängliga för din klientorganisation. Du kan också filtrera resultatet med ?graphTypes=. Använd namnet på en returnerad instans.

GET https://api.securityplatform.microsoft.com/graphs/graph-instances?graphTypes=Custom

Vanliga användningsfall

  • Öppna diagrammet och fyll i frågan utan att köra den: Ange autoRun=false, som du ser i exemplet. Användare kan granska och redigera frågan innan den körs, vilket undviker onödiga frågekostnader.
  • Öppna diagrammet utan fråga: Utelämna parametern query eller ange addQuery=false. Använd det här alternativet om du vill dirigera användare till ett diagram för manuell utforskning utan att införa en fördefinierad fråga.
  • Rikta in sig på en specifik klientorganisation: Inkludera tid=<tenant-id>. Den djupa länken öppnas sedan i rätt klientorganisation utan att användaren byter klientorganisation manuellt.