Erstellen von Deep-Links zu Microsoft Sentinel Graph-Abfragen

Sie können einen Deep-Link erstellen, der die Microsoft Sentinel Diagrammseite mit einer bestimmten Abfrage öffnet, die bereits im Editor vorhanden ist und optional die Abfrage automatisch ausführt, wenn die Seite geladen wird. Betten Sie diese Links in Runbooks, Vorfallberichte oder andere Dokumentationen ein, damit ein Responder einen Link auswählen und direkt zu einer vorkonfigurierten Untersuchungsabfrage im richtigen Diagramm springen kann.

Deep-Link-Abfragen werden als Base64-Text (Base64url) in die URL eingebettet, sodass sie zuverlässig als einzelner URL-Parameter übergeben werden können. Die Abfrage ist nicht verschlüsselt, signiert oder komprimiert.

Prerequisites

Zum Erstellen eines Deep-Links benötigen Sie die folgenden Voraussetzungen:

  • Eine Graphinstanz, die in Ihrem Mandanten vorhanden ist. Sie geben seinen Namen im Parameter graphInstance an. Informationen zum Suchen nach gültigen Namen finden Sie unter "Find valid graphInstance values".
  • Der Abfragetext, den Sie im Editor öffnen möchten.

Zum Öffnen einer verknüpften Abfrage benötigen Sie die Berechtigung zum Anzeigen des Diagramms und Ausführen von Abfragen. Deep-Links umgehen keine Zugriffssteuerungen, sodass ein Benutzer ohne diese Berechtigungen nicht auf die verknüpfte Abfrage zugreifen kann. Weitere Informationen finden Sie unter Erste Schritte mit benutzerdefinierten Graphen in Microsoft Sentinel.

Eine Deep-Link-URL besteht aus mehreren Komponenten. Im Folgenden werden die grundstruktur und die einzelnen Elemente aufgeschlüsselt:

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

URL-Komponenten

Bestandteil Required Beschreibung
https://security.microsoft.com/graphs Basis-URL für Microsoft Sentinel Diagramme.
tid=<tenant-id> No Ihre Azure Mandanten-ID (GUID). Wenn dieser Parameter nicht angegeben wird, wird der aktuelle Mandant verwendet.
graphInstance=<graph-name> Yes Name der zu öffnenden Diagramminstanz, z. B IdentityAttackScenarioGraph. . Wenn der Wert fehlt oder unbekannt ist, wird nichts vorgefüllt.
query=<encoded-query> No Ihre base64url-codierte Graph Query Language (GQL)-Abfrage. Füllt den Editor mit der decodierten Abfrage vor.
language=<language> No Abfragesprache. Der einzige unterstützte Wert lautet gql. Groß-/Kleinschreibung wird nicht beachtet; ein unbekannter Wert fällt auf gql.
autoRun=<true\|false> No Gibt an, ob die Abfrage beim Öffnen der Registerkarte automatisch ausgeführt werden soll. Wird standardmäßig auf true festgelegt. Nur die Literalzeichenfolge false (Groß-/Kleinschreibung) deaktiviert das Autorun. Jeder andere Wert führt die Abfrage aus.
addQuery=<true\|false> No Gibt an, ob der Editor vorab mit der Abfrage ausgefüllt werden soll. Wird standardmäßig auf true festgelegt. Auf false setzen, um den Editor leer zu lassen, auch wenn query vorhanden ist.

Beispielaufschlüsselung

Der folgende Deep-Link öffnet die Microsoft Sentinel Graph-Seite mit einer bestimmten abfrage, die im Editor bereits ausgefüllt wurde, führt sie jedoch nicht automatisch aus:

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

Der query Parameter decodiert die folgende GQL-Abfrage:

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

Aufschlüsselung:

  • Basis: https://security.microsoft.com/graphs
  • Mandant: tid=12345678-1234-1234-1234-123456789012
  • Graph: graphInstance=IdentityAttackScenarioGraph
  • Abfrage: query=Ly8gVmlzdWFsaXplIGFueSBncmFwaApNQVRDSCAoeCktW3ldLT4oeikKUkVUVVJOICoKTElNSVQgMTAw (codiert für die oben gezeigte GQL)
  • Automatische Ausführung: autoRun=false (Abfrage wird nicht automatisch ausgeführt)

Codieren der Abfrage mit base64url

Codieren Sie den query Wert mit den folgenden Schritten. Diese Schritte entsprechen der encodeQueryBase64 Funktion in QueryUtils.ts.

  1. UTF-8 codiert den unformatierten Abfragetext in Bytes.
  2. Base64 codiert diese Bytes.
  3. Ersetzen Sie + durch - und / durch _, um den Wert URL-sicher zu machen.
  4. Entfernen Sie alle nachfolgenden Abstandszeichen = .
  5. Platzieren Sie das Ergebnis als Parameter in der URL query . Die Standard-URL-Codierung kann oben sicher angewendet werden.

Note

Die maximal generierte Linklänge beträgt 7.168 Zeichen. Sehr große Abfragen erzeugen möglicherweise keinen funktionierenden Deep-Link.

Die folgenden JavaScript entsprechen exakt dem Anwendungs-Encoder und stellen einen vollständigen Deep-Link zusammen:

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()}`;

Bedingungen für Autorun

Damit die Abfrage automatisch ausgeführt wird, müssen alle folgenden Bedingungen erfüllt sein:

  • autoRun ist nicht auf die Literalzeichenfolge falsefestgelegt.
  • Die decodierte Abfrage ist nicht leer.
  • Dies graphInstance ist für den Mandanten vorhanden.

Suchen gültiger GraphInstance-Werte

Sie können eine beliebige Graphinstanz verwenden, die in Ihrem Mandanten vorhanden ist, indem Sie den Namen der Instanz verwenden. Um die verfügbaren Namen zu finden, durchsuchen Sie entweder die Microsoft Sentinel Graph-Benutzeroberfläche, oder rufen Sie die Microsoft Sentinel Graph-Dienst-API GET /graph-instances auf. Diese API gibt die Diagramminstanzen zurück, die für Ihren Mandanten verfügbar sind. Sie können die Ergebnisse optional filtern mit ?graphTypes=. Verwenden Sie den Namen einer zurückgegebenen Instanz.

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

Häufige Anwendungsfälle

  • Öffnen Sie das Diagramm, und füllen Sie die Abfrage vor, ohne sie auszuführen: Set autoRun=false, wie im Beispiel gezeigt. Benutzer können die Abfrage vor der Ausführung überprüfen und bearbeiten, wodurch unnötige Abfragekosten vermieden werden.
  • Öffnen Sie das Diagramm ohne Abfrage: Lassen Sie den query Parameter aus, oder legen Sie diesen fest addQuery=false. Verwenden Sie diese Option, um Benutzer zur manuellen Erkundung zu einem Diagramm zu leiten, ohne eine vordefinierte Abfrage aufzuweisen.
  • Auf einen bestimmten Mandanten abzielen: Fügen Sie tid=<tenant-id> ein. Der Deep-Link wird dann im richtigen Mandanten geöffnet, ohne dass der Benutzer manuell den Mandanten wechseln muss.