<!DOCTYPE html>
<!--
 | Generated by Apache Maven Doxia Site Renderer 1.8 from src/site/markdown/metron-interface/index.md at 2019-05-14
 | Rendered using Apache Maven Fluido Skin 1.7
-->
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <meta name="Date-Revision-yyyymmdd" content="20190514" />
    <meta http-equiv="Content-Language" content="en" />
    <title>Metron &#x2013; Metron Interface</title>
    <link rel="stylesheet" href="../css/apache-maven-fluido-1.7.min.css" />
    <link rel="stylesheet" href="../css/site.css" />
    <link rel="stylesheet" href="../css/print.css" media="print" />
    <script type="text/javascript" src="../js/apache-maven-fluido-1.7.min.js"></script>
<script type="text/javascript">
              $( document ).ready( function() { $( '.carousel' ).carousel( { interval: 3500 } ) } );
            </script>
  </head>
  <body class="topBarDisabled">
    <div class="container-fluid">
      <div id="banner">
        <div class="pull-left"><a href="http://metron.apache.org/" id="bannerLeft"><img src="../images/metron-logo.png"  alt="Apache Metron" width="148px" height="48px"/></a></div>
        <div class="pull-right"></div>
        <div class="clear"><hr/></div>
      </div>

      <div id="breadcrumbs">
        <ul class="breadcrumb">
      <li class=""><a href="http://www.apache.org" class="externalLink" title="Apache">Apache</a><span class="divider">/</span></li>
      <li class=""><a href="http://metron.apache.org/" class="externalLink" title="Metron">Metron</a><span class="divider">/</span></li>
      <li class=""><a href="../index.html" title="Documentation">Documentation</a><span class="divider">/</span></li>
    <li class="active ">Metron Interface</li>
        <li id="publishDate" class="pull-right"><span class="divider">|</span> Last Published: 2019-05-14</li>
          <li id="projectVersion" class="pull-right">Version: 0.7.1</li>
        </ul>
      </div>
      <div class="row-fluid">
        <div id="leftColumn" class="span2">
          <div class="well sidebar-nav">
    <ul class="nav nav-list">
      <li class="nav-header">User Documentation</li>
    <li><a href="../index.html" title="Metron"><span class="icon-chevron-down"></span>Metron</a>
    <ul class="nav nav-list">
    <li><a href="../CONTRIBUTING.html" title="CONTRIBUTING"><span class="none"></span>CONTRIBUTING</a></li>
    <li><a href="../Upgrading.html" title="Upgrading"><span class="none"></span>Upgrading</a></li>
    <li><a href="../metron-analytics/index.html" title="Analytics"><span class="icon-chevron-right"></span>Analytics</a></li>
    <li><a href="../metron-contrib/metron-docker/index.html" title="Docker"><span class="none"></span>Docker</a></li>
    <li><a href="../metron-contrib/metron-performance/index.html" title="Performance"><span class="none"></span>Performance</a></li>
    <li><a href="../metron-deployment/index.html" title="Deployment"><span class="icon-chevron-right"></span>Deployment</a></li>
    <li class="active"><a href="#"><span class="icon-chevron-down"></span>Interface</a>
    <ul class="nav nav-list">
    <li><a href="../metron-interface/metron-alerts/index.html" title="Alerts"><span class="none"></span>Alerts</a></li>
    <li><a href="../metron-interface/metron-config/index.html" title="Config"><span class="none"></span>Config</a></li>
    <li><a href="../metron-interface/metron-rest/index.html" title="Rest"><span class="none"></span>Rest</a></li>
    </ul>
</li>
    <li><a href="../metron-platform/index.html" title="Platform"><span class="icon-chevron-right"></span>Platform</a></li>
    <li><a href="../metron-sensors/index.html" title="Sensors"><span class="icon-chevron-right"></span>Sensors</a></li>
    <li><a href="../metron-stellar/stellar-3rd-party-example/index.html" title="Stellar-3rd-party-example"><span class="none"></span>Stellar-3rd-party-example</a></li>
    <li><a href="../metron-stellar/stellar-common/index.html" title="Stellar-common"><span class="icon-chevron-right"></span>Stellar-common</a></li>
    <li><a href="../metron-stellar/stellar-zeppelin/index.html" title="Stellar-zeppelin"><span class="none"></span>Stellar-zeppelin</a></li>
    <li><a href="../use-cases/index.html" title="Use-cases"><span class="icon-chevron-right"></span>Use-cases</a></li>
    </ul>
</li>
</ul>
          <hr />
          <div id="poweredBy">
            <div class="clear"></div>
            <div class="clear"></div>
            <div class="clear"></div>
            <div class="clear"></div>
<a href="http://maven.apache.org/" title="Built by Maven" class="poweredBy"><img class="builtBy" alt="Built by Maven" src="../images/logos/maven-feather.png" /></a>
            </div>
          </div>
        </div>
        <div id="bodyColumn"  class="span10" >
<!--
Licensed to the Apache Software Foundation (ASF) under one
or more contributor license agreements.  See the NOTICE file
distributed with this work for additional information
regarding copyright ownership.  The ASF licenses this file
to you under the Apache License, Version 2.0 (the
"License"); you may not use this file except in compliance
with the License.  You may obtain a copy of the License at

http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
-->
<h1>Metron Interface</h1>
<p><a name="Metron_Interface"></a></p>
<p>Metron interface contains code and assets to support the various web applications in Metron.  The existing modules are:</p>
<ul>

<li>metron-alerts : An Angular application that exposes a way to browse, filter and act on alerts.</li>
<li>metron-config: An Angular application that allows an administrator to configure and maintain Metron.</li>
<li>metron-rest: A Spring REST application that supports the UI and exposes Metron features through a REST/json interface.</li>
<li>metron-rest-client: Model objects used for passing data back and forth in the REST application.  A Metron client would use these classes for de/serializing requests and responses.</li>
</ul>
<div class="section">
<h2><a name="Architecture"></a>Architecture</h2>
<p>The UIs and REST server are all run in separate web containers.  The UIs are served from separate <a class="externalLink" href="https://expressjs.com/">Express</a> servers that are configured to proxy REST requests to the REST application.  Proxying REST requests satisfies the same-origin browser restriction because all requests go to Express, or the same origin.</p>
<p>REST requests are handled by a <a class="externalLink" href="https://spring.io/projects/spring-boot">Spring Boot</a> application.  A <a class="externalLink" href="https://swagger.io/">Swagger</a> interface is available and served by the REST application.</p>
<div class="section">
<h3><a name="Security"></a>Security</h3>
<p>The UIs depend on REST for authentication.  Credentials are passed with <a class="externalLink" href="https://developer.mozilla.org/en-US/docs/Web/HTTP/Authentication">Basic authentication</a> and only REST requests require authentication, static assets are not secured.  Once authentication has been performed a session is established and a cookie is stored and used to authenticate subsequent requests.</p></div>
<div class="section">
<h3><a name="Request.2FResponse_Flow"></a>Request/Response Flow</h3>
<p>The following diagram illustrates the flow of data for the various types of requests:</p>
<p><img src="flow_diagram.png" alt="Flow Diagram" /></p></div></div>
<div class="section">
<h2><a name="Architecture_with_Knox"></a>Architecture with Knox</h2>
<p><a class="externalLink" href="https://knox.apache.org/">Apache Knox</a> is a &#x201c;REST API and Application Gateway for the Apache Hadoop Ecosystem&#x201d;.  It can be enabled for Metron and provides several security benefits:</p>
<ul>

<li>All requests go through Knox so same-origin browser restrictions are not a concern.</li>
<li>Knox, in combination with a firewall, can restrict traffic to always go through Knox.  This greatly reduces the security attack surface area of the UIs and REST application.</li>
<li>Provides access to other common Apache Hadoop services</li>
<li>Provides a single sign on experience between the UIs and REST application</li>
<li>All requests can be protected and secured</li>
</ul>
<p>We primarily use Knox&#x2019;s proxying and authentication services.  Knox acts as a reverse proxy for all UIs and the REST application.</p>
<div class="section">
<h3><a name="Knox_Security"></a>Knox Security</h3>
<p>With Knox enabled, Knox now handles authentication when accessing the UIs and REST together.  Basic authentication is still an option for making requests directly to the REST application.  Any request to the UIs must go through Knox first and contain the proper security token.<br />
If a valid token is not found, Knox will redirect to the Knox SSO login form.  Once a valid token is found, Knox will then redirect to the original url and the request will be forwarded on.  Accessing the REST application through Knox also follows this pattern. The UIs make REST requests this way with Knox enabled since they no longer depend on Express to proxy requests.  The context path now determines which type of request it is rather than the host and port.</p>
<p>REST still requires authentication so a filter is provided that can validate a Knox token using token properties and a Knox public key.  The REST application also supports Basic authentication.  Since both Knox and the REST application should use the same authentication mechanism, LDAP authentication is required for the REST application.</p>
<p>Roles are mapped directly to LDAP groups when Knox is enabled for REST.  LDAP group names are converted to upper case and prepended with &#x201c;ROLE_&#x201d;.  For example, if a user&#x2019;s groups in LDAP were &#x201c;user&#x201d; and &#x201c;admin&#x201d;, the corresponding roles in REST with Knox enabled would be &#x201c;ROLE_USER&#x201d; and &#x201c;ROLE_ADMIN&#x201d;.</p></div>
<div class="section">
<h3><a name="Knox_Request.2FResponse_Flow"></a>Knox Request/Response Flow</h3>
<p>The following diagram illustrates the flow of data for the various types of requests when Knox is enabled:</p>
<p><img src="knox_flow_diagram.png" alt="Knox Flow Diagram" /></p>
<p>Note how the flow diagrams for Static asset requests and Rest requests (through Knox) are identical.</p></div></div>
<div class="section">
<h2><a name="Enabling_Knox_for_Metron"></a>Enabling Knox for Metron</h2>
<p>Follow the instructions in the next 3 sections to enable Knox for Metron.  The new Knox urls will be similar to (substitute the Knox host/port in your environment for <tt>node1:8443</tt>):</p>
<ul>

<li>Metron Alerts UI - <a class="externalLink" href="https://node1:8443/gateway/metron/metron-alerts/">https://node1:8443/gateway/metron/metron-alerts/</a></li>
<li>Metron Management UI - <a class="externalLink" href="https://node1:8443/gateway/metron/metron-management/sensors">https://node1:8443/gateway/metron/metron-management/sensors</a></li>
<li>Metron REST - <a class="externalLink" href="https://node1:8443/gateway/metron/metron-rest/swagger-ui.html">https://node1:8443/gateway/metron/metron-rest/swagger-ui.html</a></li>
</ul>
<div class="section">
<h3><a name="Install_Metron_Clients"></a>Install Metron Clients</h3>
<p>The Metron Client component in Ambari is responsible for installing the service definition and topology files in the appropriate Knox directories.  These files are installed whenever the Metron Client component(s) are installed, started or restarted AND the <tt>Knox Enabled</tt> Metron Ambari property is set to true (under the <tt>Security</tt> tab in the Metron Config section).  Ambari calls the script at <tt>$METRON_HOME/bin/install_metron_knox.sh</tt> which installs the following files:</p>
<ul>

<li><tt>$KNOX_HOME/conf/topologies/metron.xml</tt></li>
<li><tt>$KNOX_HOME/conf/topologies/metronsso.xml</tt></li>
<li><tt>$KNOX_HOME/data/services/metron-alerts/$METRON_VERSION/rewrite.xml</tt></li>
<li><tt>$KNOX_HOME/data/services/metron-alerts/$METRON_VERSION/service.xml</tt></li>
<li><tt>$KNOX_HOME/data/services/metron-management/$METRON_VERSION/rewrite.xml</tt></li>
<li><tt>$KNOX_HOME/data/services/metron-management/$METRON_VERSION/service.xml</tt></li>
<li><tt>$KNOX_HOME/data/services/metron-rest/$METRON_VERSION/rewrite.xml</tt></li>
<li><tt>$KNOX_HOME/data/services/metron-rest/$METRON_VERSION/service.xml</tt></li>
</ul>
<p>A Metron Client should be installed anywhere a Knox Gateway is installed.  It is not strictly required but Metron will not be available through any Knox Gateways that do not have these files installed.</p></div>
<div class="section">
<h3><a name="Enable_Knox_for_Metron_in_Ambari"></a>Enable Knox for Metron in Ambari</h3>
<p>After Metron Client components have been installed on the appropriate hosts, there are a couple settings that need to be changed in the Ambari &#x201c;Security&#x201d; tab.<br />
First the Knox SSO public key needs to be read from Knox.  Run the following command on a Knox Gateway to get the key:</p>

<div>
<div>
<pre class="source">openssl s_client -connect node1:8443 &lt; /dev/null | openssl x509 | grep -v 'CERTIFICATE' | paste -sd &quot;&quot; -
</pre></div></div>

<p>The <tt>Knox SSO Public Key</tt> Ambari property should be set to the output of that command.  In the same section, set the <tt>Knox Enabled</tt> setting to &#x201c;ON&#x201d;.</p>
<p>After these changes have been made, the following Metron components must be restarted:</p>
<ul>

<li>Metron Client</li>
<li>Metron Alerts UI</li>
<li>Metron Management UI</li>
<li>Metron REST</li>
</ul>
<p>Any change to the settings described in this section will cause Ambari to suggest restarting these services.  Either restart them manually or follow the prompt in Ambari.</p>
<p>Note:  Knox can only be enabled for Metron when Metron authentication is set to <tt>LDAP</tt> (the <tt>LDAP Enabled</tt> setting in Ambari).<br />
If <tt>LDAP</tt> is not enabled an error will be thrown when any of the previous components are restarted.</p></div>
<div class="section">
<h3><a name="Update_Quicklinks_.28Optional.29"></a>Update Quicklinks (Optional)</h3>
<p>Currently there is no way to dynamicly change the quick links in Ambari to the new Knox urls so it must be done manually.  Locate this file on the Ambari server host:</p>

<div>
<div>
<pre class="source">/var/lib/ambari-server/resources/mpacks/metron-ambari.mpack-$METRON_MPACK_VERSION/common-services/METRON/$METRON_VERSION/quicklinks/quicklinks.json
</pre></div></div>

<p>Quicklinks for each component are defined as an array of json objects under the <tt>/configuration/links/</tt> attribute.</p>
<p>Locate the json object for the component you want to update.  Change the <tt>url</tt> attribute to match the new Knox url.  For example, to update the Metron REST quick link, locate the json object with the <tt>label</tt> property set to <tt>Swagger UI</tt>.  Change the <tt>url</tt> property from <tt>%@://%@:%@/swagger-ui.html</tt> to <tt>https://&lt;knox gateway host&gt;:&lt;knox gateway port&gt;/gateway/metron/metron-rest/swagger-ui.html</tt>.</p>
<p>The json object should look like this in full dev:</p>

<div>
<div>
<pre class="source">{
    &quot;name&quot;: &quot;metron_rest_ui&quot;,
    &quot;label&quot;: &quot;Swagger UI&quot;,
    &quot;requires_user_name&quot;: &quot;false&quot;,
    &quot;component_name&quot;: &quot;METRON_REST&quot;,
    &quot;url&quot;:&quot;https://node1:8443/gateway/metron/metron-rest/swagger-ui.html&quot;,
    &quot;port&quot;:{
      &quot;http_property&quot;: &quot;metron_rest_port&quot;,
      &quot;http_default_port&quot;: &quot;8082&quot;,
      &quot;https_property&quot;: &quot;metron_rest_port&quot;,
      &quot;https_default_port&quot;: &quot;8082&quot;,
      &quot;regex&quot;: &quot;^(\\d+)$&quot;,
      &quot;site&quot;: &quot;metron-rest-env&quot;
    }
}
</pre></div></div>

<p>Repeat for the Alerts UI and Management UI.  Any update to this file requires an Ambari server restart.</p></div></div>
        </div>
      </div>
    </div>
    <hr/>
    <footer>
      <div class="container-fluid">
        <div class="row-fluid">
Â© 2015-2016 The Apache Software Foundation. Apache Metron, Metron, Apache, the Apache feather logo,
            and the Apache Metron project logo are trademarks of The Apache Software Foundation.
        </div>
      </div>
    </footer>
  </body>
</html>
