Beispiel: Integration von TTS trax mit Issue-Trackern

StartseiteBeispiel: Integration von TTS trax mit Issue-Trackern

Beachten Sie, dass Beispiele nur der Veranschaulichung dienen: Eine Beispiel-ERD unverändert zu übernehmen wird in Ihrem System ziemlich sicher nicht funktionieren!

Beispiel: Integration von TTS trax mit Issue-Trackern

Im IT-Betrieb werden eine Vielzahl von Issues und Incidents behandelt: von der Korrektur von Fehlkonfigurationen bis hin zur Abwehr von Cyberattacken. Je nach Schwere dieser Incidents entsteht hieraus eine Aktivität im ISMS, um diese Probleme zukünftig zu verhindern oder immerhin frühzeitig zu erkennen oder zu behandeln.

Dafür ist es notwendig, einen möglichst reibungslosen Informationsaustausch zwischen IT-Betrieb und Informationssicherheitsorganisation zu etablieren.

TTS trax unterstützt Sie mittels einer einfach zu verwendenden Schnittstelle dabei, ein Ticketsystem an das Modul „Kontinuierlicher Verbesserungsprozess“ anzubinden und somit Vorfälle, die Auswirkungen auf das ISMS haben, automatisch vom IT-Betrieb an TTS trax zu übergeben.

In dieser Showcase möchten wir Ihnen diese Integration am Beispiel des Issue Trackers YouTrack zeigen, das grundlegende Konzept lässt sich aber auf beliebige Ticketsysteme anwenden.

Vorgesehene Integration

Die Bedingungen, welche Tickets nach TTS trax geschickt werden sollen, können Sie beliebig an Ihre Business-Anforderungen anpassen.

Wir gehen hier davon aus, dass alle Tickets, die eine Schwere (Severity) von „High“ erhalten haben, eine weitere Bearbeitung in TTS trax erfordern, da aus diesen weitere Maßnahmen im ISMS resultieren können.

Vorbereitungen in YouTrack

Neben dem Feld Severity fügen wir dem YouTrack-Projekt ebenfalls ein Feld namens Reported vom Typ „Datum und Uhrzeit“ hinzu, das genutzt wird, um zu speichern, welche Issues bereits an TTS trax geschickt wurden und somit nicht erneut angelegt werden müssen.

YouTrack vorbereiten: Anlegen neuer Felder

Definition des Postfachs in TTS trax

Zur Verwendung der Schnittstellen muss in TTS trax ein Postfach definiert werden. In der Externen Ressourcen Definition (ERD) zu diesem Postfach werden die Felder definiert, die über die API erfasst werden, zusammen mit der entsprechenden Abbildung zur Erzeugung eines KVP-Eintrags in TTS trax. Dies kann durch eine grafische Oberfläche erfolgen.

Erstellen der ERD für die Anbindung

Durch diese freie Definition können Sie eine Vielzahl von unterschiedlichen Attributen über die Schnittstelle aufnehmen, ohne dass diese eine eindeutige Entsprechung in trax haben. In diesem Beispiel wurde z.B. noch ein Feld für die Ticket-URL hinzugefügt, so dass aus TTS trax direkt das entsprechende Ticket aufgerufen werden kann:

Erstellen der ERD für die Anbindung: Feld für die Ticket-URL hinzufügen

Die ERD aus unserem Beispiel können Sie hier herunterladen: [Download-Link zur ERD]

Sie können die verwendete Externe Ressourcen Definition als Basis für Ihre eigene Integration verwenden – die integrierte Quelltextansicht des Editors ermöglicht es Ihnen, ohne viel manuelle Arbeit eine vorgefertigte Definition zu hinterlegen: Kopieren Sie dazu den Quelltext und fügen Sie ihn in der Quelltextansicht des ERD-Editors in TTS trax ein. Passen Sie die Vorlage anschließend an Ihr System an.

Definition des Workflows in YouTrack

Um nun dafür zu sorgen, dass entsprechend priorisierte Tickets von YouTrack an TTS trax weitergegeben werden, kann in YouTrack das Workflow-System verwendet werden.

Neuen Workflow in YouTrack anlegen

Hier wird eine Regel definiert, die bei Änderung des Tickets ausgeführt wird:

Regel zur Erfassung von Änderungen definieren

Der folgende Code kann nun verwendet werden, um nun das Ticket an TTS trax zu verschicken:

				
					/**
 * Send issues with a high severity to TTS trax.
 * Before using this workflow, make sure to set up a postbox in TTS trax and generate an API token.
 */

const entities = require('@jetbrains/youtrack-scripting-api/entities');
const http = require('@jetbrains/youtrack-scripting-api/http');

const apiToken = '<API_TOKEN>';
const apiUrl = '<API_URL>';

exports.rule = entities.Issue.onChange({
  title: 'Create-issue-in-trax',
  guard: (ctx) => {
    // Only trigger this action, if the ticket has a high severity, is not a draft anymore and was not sent to TTS trax yet.
    return ctx.issue.fields.is(ctx.Severity, ctx.Severity.High) && !ctx.issue.fields.Reported && ctx.issue.isReported;
  },
  action: (ctx) => {
    const issue = ctx.issue;
    const id = issue.id;
    const attributes = {
      'name': issue.summary,
      'description': issue.description,
      'source': '6',
      'classification': '3',
      'contact': ctx.currentUser.email,
      'issue_url': issue.url
    };
    
    // Mark field as reported, so that we do not create a CIP issue more than once
    issue.fields.Reported = Date.now();
    
    // Send HTTP request to the TTS trax API
    const connection = new http.Connection(apiUrl, '', 10000);
    connection.addHeader('Content-Type', 'application/json');
    connection.addHeader('Accept', 'application/json');
    connection.addHeader('Authorization', 'Bearer ' + apiToken);
    
    const response = connection.postSync('', '', JSON.stringify({
      "data": [
        {
      		id: id,
      		attributes: attributes,
    	}
      ]
    }));
    
    if (!(response && response.isSuccess)) {
      console.log(response.toString());
    }
  },
  requirements: {
    Reported: {
      type: entities.Field.dateTimeType,
    },
    Severity: {
      type: entities.EnumField.fieldType,
      name: 'Severity',
      High: {},
      Medium: {},
      Low: {}
    }
  }
});

				
			

Hier ist lediglich ein API-Zugriffstoken in den Postfach-Einstellungen zu generieren und zu Beginn des Workflow-Skripts zusammen mit der URL für den „Erstellen“-Endpunkt des Postfachs in die Variablen apiToken sowie apiUrl einzufügen.

Wird nun ein Ticket mit einer hohen Schwere versehen, wird das Ticket automatisch an TTS trax übertragen:

Ergebnis: Ticket als KVP-Eintrag aufnehmen

Zusammenfassung

Issues/Tickets, die mit einer Severity von „High“ versehen werden, werden nun automatisch als KVP-Einträge in TTS trax aufgenommen. Das gezeigte Vorgehen ist bei weitem nicht das einzige: Es kann auch eine Integration gebaut werden, bei der das Ticket erst durch eine manuelle Aktion an TTS trax geschickt wird.

Des Weiteren können auch weitere Felder übertragen werden, wie das Aufnahmedatum. Auch Aktualisierungen an Ticket-Attributen können nun übertragen werden.

Die Integrationswege sind zahlreich. Über die Postfächer bietet TTS trax Ihnen die Möglichkeit beliebige Drittsysteme anzubinden.

TTS trax – Das smarte Tool für den effizienten ISMS Betrieb