diff --git a/c.5-integration-layer/content.tex b/c.5-integration-layer/content.tex new file mode 100644 index 0000000..3a5d34c --- /dev/null +++ b/c.5-integration-layer/content.tex @@ -0,0 +1,221 @@ +% DO NOT COMPILE THIS FILE DIRECTLY! +% This is included by the other .tex files. + +\begin{frame}[t,plain] +\titlepage +\end{frame} + +\begin{frame} + \frametitle{Plan for this session} + \begin{itemize} + \item What is Cerebrate? (tl;dr edition) + \item Why do we need integration modules? + \item What does an integration module look like? + \item Integrating tools with Cerebrate + \item Interconnection requests + \item Future plans / discussion + \end{itemize} +\end{frame} + +\begin{frame} + \frametitle{What is Cerebrate?} + \begin{itemize} + \item Central tool for the Melicertes project... + \item ...but also a stand-alone open-source community management and orchestration tool + \end{itemize} +\end{frame} + +\begin{frame} + \frametitle{What issues is it trying to tackle?} + \begin{itemize} + \item Repository of organisations and individuals along with associated public keys + \item Management of trust circle objects + \item Exchange of contact and sharing group information + \item Instrumentation of local tool interconnections + \item Local tool fleet management + \end{itemize} +\end{frame} + +\begin{frame} + \frametitle{What are integration modules?} + \begin{itemize} + \item Tool agnostic integration layer + \item Integrate other tools with MISP for a set of tasks + \begin{itemize} + \item Manage tools + \item Feed the tool with / feed off the tool's contact information + \item Orchestrate the interconnection between local tools + \item Open a dialogue with partners to interconnect tools + \end{itemize} + \end{itemize} +\end{frame} + +\begin{frame} + \frametitle{Design goals} + \begin{itemize} + \item Keep it simplistic + \item Monolithic packages + \item Using a common toolkit for ease of integration + \item Have the ability to go beyond the default required functionalities + \item Reuse visualisation systems of Cerebrate + \item Still heavily WiP + \end{itemize} +\end{frame} + +\begin{frame} + \frametitle{What is available today?} + \begin{itemize} + \item Some sample modules + \begin{itemize} + \item Skeleton module + \item MISP connector + \end{itemize} + \item Auto detection, custom / default module separation + \item Local tool management + \item Diagnostics + \item Remote tool interconnection negotiation + \end{itemize} +\end{frame} + +\begin{frame} + \frametitle{What is missing?} + \begin{itemize} + \item Mass / fleet management + \item Local tool interconnections + \item Opening up the local tool functions to the API + \item More implementations to test our design against! + \end{itemize} +\end{frame} + +\begin{frame} + \frametitle{Demo time} + \begin{itemize} + \item How does the MISP connector work? + \item How to issue interconnection requests? + \end{itemize} +\end{frame} + +\begin{frame} + \frametitle{Let us dig into the module design} + \begin{itemize} + \item Each module is a php file in cerebrate/src/Lib/custom (ending in *Connector.php) + \item A standard toolkit is always extended (CommonConnectorTools.php) + \item Each module consists of: + \begin{itemize} + \item Meta information + \item Custom exposed function mapping + \item Default functions for diagnostics + \item Default functions for interconnections + \item Custom exposed functions + \item Private helper functions + \end{itemize} + \end{itemize} +\end{frame} + +\begin{frame} + \frametitle{Meta information} + \begin{itemize} + \item name: The name of the module as shown in selectors, inbox messages, etc + \item connectorName: The name of the module - this is the canonical name used across the application + \item version: The version of the connector (not the connected tool) + \item description: A description of the connector in freetext + \end{itemize} +\end{frame} + +\begin{frame} + \frametitle{Exposed function mapping} + \begin{itemize} + \item List of custom functions with their configurations + \item Two main types so far: + \begin{itemize} + \item Index: list of items with their associated actions + \item form: GET/POST pair for interacting with the tool + \end{itemize} + \item Two main scopes so far: + \begin{itemize} + \item child: Automatically added accordion below the connection's metadata + \item childAction: Function that can be placed anywhere (index action, chained/embedded actions) + \end{itemize} + \end{itemize} +\end{frame} + +\begin{frame} + \frametitle{Default function for diagnostics} + \begin{itemize} + \item health(): returns a standardised message about the current status of the connection + \item returns a list with 2 data points + \begin{itemize} + \item status: UNKNOWN/OK/ISSUES/ERROR + \item message: message shown along with the status + \end{itemize} + \item For more in-depth diagnostics / error reporting, use custom actions! + \end{itemize} +\end{frame} + + +\begin{frame} + \frametitle{Default functions for interconnections} + \begin{itemize} + \item 3-way handhsake + \item functions need to be implemented to interact with the local tool + \begin{itemize} + \item initiateConnection(): returns connection payload + \item acceptConnection(): returns connection payload + \item finaliseConnection(): returns boolean + \end{itemize} + \item Automatically tied into the messaging system + \item Built in repeating, discarding, error handling in cerebrate + \item Looped through common tools, state handling done automatically + \end{itemize} +\end{frame} + +\begin{frame} + \frametitle{Exploring the modules} + \begin{itemize} + \item Skeleton module + \item MISP module + \end{itemize} +\end{frame} + + +\begin{frame} + \frametitle{Local tool interconnections} + \begin{itemize} + \item Create plugins that purely serve to connect different local tools + \item Ownership of the modules was a difficulty to handle if we kept it in the main modules + \item Unlike the cross cerebrate interconnections for like tools, the connection can be done in one shot + \end{itemize} +\end{frame} + +\begin{frame} + \frametitle{Future plans - fleet management} + \begin{itemize} + \item Push settings / data to multiple tools of the same type in one shot + \item Visualise your connected tools + \item More fine grained diagnostics + \end{itemize} +\end{frame} + +\begin{frame} + \frametitle{API} + \begin{itemize} + \item Currently the modules are built for UI only + \item This will change and we'll add tools to easily create API responses + \end{itemize} +\end{frame} + +\begin{frame} + \frametitle{Discussion} + \begin{itemize} + \item What would you like to see to be able to integrate your tool? + \item Do you have tools in mind that you would like to integrate? + \item What issues do you foresee with the implementation? + \begin{itemize} + \item Difficulty? + \item Lack of functionalities? + \item Lack of apetite before it's more mature? + \end{itemize} + \end{itemize} +\end{frame} + + diff --git a/c.5-integration-layer/logo.png b/c.5-integration-layer/logo.png new file mode 100644 index 0000000..82bcaab Binary files /dev/null and b/c.5-integration-layer/logo.png differ diff --git a/c.5-integration-layer/slide.tex b/c.5-integration-layer/slide.tex new file mode 100644 index 0000000..c874e17 --- /dev/null +++ b/c.5-integration-layer/slide.tex @@ -0,0 +1,23 @@ +\documentclass{beamer} +\usetheme[numbering=progressbar]{focus} +%\definecolor{main}{RGB}{83, 31, 117} +%\definecolor{textcolor}{RGB}{0, 0, 0} +%\definecolor{background}{RGB}{215, 212, 227} + +\usepackage[utf8]{inputenc} +\usepackage{tikz} +\usepackage{listings} +\usetikzlibrary{positioning} +\usetikzlibrary{shapes,arrows} + +\author{\small{\input{../includes/authors.txt}}} +\title{Cerebrate} +\subtitle{A quick intro into Cerebrate} +\institute{} +\titlegraphic{\includegraphics[scale=0.2]{logo.png}} +\date{\input{../includes/location.txt}} + +\begin{document} +\include{content} +\end{document} +