A couple more things, and I think this goes without saying - whatever we do
with Knox should NOT

   1. Require unit and integration tests to use Knox
   2. Break fulldev

Also, I don't know that I saw you mention this, but I'm unsure how we
should leverage Knox as a core piece of the platform. i.e. should we make
this required or optional? I'm open to hearing opinions on this, but I'm
inclined to keep this a pluggable option.

Mike


On Fri, Nov 9, 2018 at 2:42 PM Michael Miklavcic <
michael.miklav...@gmail.com> wrote:

> Thanks for the update Ryan. Per my earlier comments, I thought it might be
> the case that we could dramatically simplify this by leveraging Knox's
> proxy capabilities, and per your research that appears to be the case. This
> is a dramatic simplification and improvement of this feature imo, +1. I'm
> also +1 on a couple distinct steps that you've laid out: fix the UI issues
> in master, then add Knox for SSO. That should help mitigate issues with
> merge conflicts with ongoing development.
>
> > I think it will be a challenge exposing the UIs through both the Knox
> url and legacy urls at the same time.
> I'm not sure I understand the issue here. Are you referring to this
> comment? "Added a ng build option to build the UI with base href set to
> Knox base path." Isn't it just a matter of URL rewriting/forwarding? I
> thought we'd be exposing the URL's directly in one context, and through
> Knox in the other. Either way, it seems like we should be able to provide a
> dynamic base path through configuration in our web applications. I'd expect
> to modify that property based on whether Knox is configured or not.
>
> > I'm also not clear on how one would use Knox with REST set to legacy
> JDBC-based authentication. As far as I know Knox does not support JDBC so
> there would be a mismatch between Knox and REST.
> I'm OK with not having Knox work with JDBC. That's a feature of Knox and
> probably not something we care much about.
>
> >We could initially make Knox an optional feature that requires setup with
> the help of some documentation (like Kerberos) while keeping the system the
> way it is now by default.
> Sounds good to me.
>
> > I imagine we'll deprecate JDBC-based authentication at some point so
> that may be a good time to switch.
> I would like to announce deprecation in our next release and move to
> remove it in a following release.
>
> Thanks for taking this on and great job laying things out.
>
> Thanks,
> Mike
>
> On Fri, Nov 9, 2018 at 2:09 PM Ryan Merriman <merrim...@gmail.com> wrote:
>
>> I have spent some time recently reviewing this discussion and the feature
>> branch that Simon put out.  I think this is an important feature and want
>> to move it forward.  I started another discussion on adding Knox to our
>> stack but this discussion has a lot of good context so I will continue it
>> here.
>>
>> I think the main point of contention was that this feature branch included
>> several different architectural changes and it was unclear if they were
>> needed and if so, could be done separately.  Fortunately LDAP
>> authentication has been accepted into master so we can cross it off the
>> list.  From my understanding of the points people have made, that leaves
>> Knox related SSO changes and migrating expressjs to a different, JVM-based
>> web server that includes proxying capabilities (Zuul).
>>
>> I think everyone agrees that if we can limit the scope to just Knox
>> related
>> SSO changes that would be ideal.  I believe I have found a way to do that
>> while working on a small POC this week.  The key to this (Simon alluded to
>> it earlier) is to put both REST and our UIs behind Knox.  I initially was
>> focused on just adding REST as a service in Knox and decided to experiment
>> with also adding our UIs.  After I did this it became clear that this
>> simplifies things considerably:
>>
>>    - The REST app and the UIs are now served from the same host so CORS
>>    concerns go away.
>>    - We no longer need to worry about proxying REST requests from the UIs
>>    with express or Zuul because Knox handles that for us.  This will make
>> our
>>    express configuration even simpler.  In fact, all we need is a simple
>> way
>>    to serve static UI assets.
>>    - We no longer need to check for SSO tokens and redirect in the UI
>>    web/app servers (or the REST app for that matter) because Knox handles
>> that
>>    for us.
>>    - The UIs can now easily access any Knox service (not just our REST
>> app)
>>    without any extra proxy configuration.
>>    - SSO token authentication is only necessary in REST so there is no
>> need
>>    to create shared Spring modules or split functionality out.
>>
>> The most significant change I had to make (borrowed from Simon's feature
>> branch) was the SSO token authentication mentioned above.  The primary
>> short term benefit with this approach is that outside of some general
>> deficiencies unrelated to this our UI architecture doesn't need to
>> fundamentally change.  I could summarize the changes as:
>>
>>    - Knox install and configuration (setting up REST and the alerts UI as
>>    Knox services)
>>    - Added Knox SSO token authentication to REST
>>    - Updated REST urls in the UI code (should be configurable)
>>    - Fixed a few UI bugs where relative paths were not being used
>>    - Added a ng build option to build the UI with base href set to Knox
>>    base path (
>>
>> https://github.com/angular/angular-cli/wiki/build#base-tag-handling-in-indexhtml
>>    )
>>
>> Most the UI changes are preexisting, minor issues that could be fixed
>> directly in master.  We would need to think of an approach for the base
>> href build requirement but I'm sure it's not that bad.
>>
>> However there will be some backwards compatibility issues we would need to
>> think through.  I think it will be a challenge exposing the UIs through
>> both the Knox url and legacy urls at the same time.  I'm also not clear on
>> how one would use Knox with REST set to legacy JDBC-based authentication.
>> As far as I know Knox does not support JDBC so there would be a mismatch
>> between Knox and REST.  Knox does have the ability to pass along basic
>> authentication headers so LDAP in REST would work.  We could initially
>> make
>> Knox an optional feature that requires setup with the help of some
>> documentation (like Kerberos) while keeping the system the way it is now
>> by
>> default.  I imagine we'll deprecate JDBC-based authentication at some
>> point
>> so that may be a good time to switch.
>>
>> What do people think about this approach?  Concerns?  Are there any huge
>> holes in this I'm not thinking about?
>>
>> I want to highlight that the work Simon did in his feature branch was
>> crucial to better understanding this.  I am pretty sure we'll end up
>> reusing a lot code from that branch.
>>
>> On Thu, Sep 27, 2018 at 6:30 PM Michael Miklavcic <
>> michael.miklav...@gmail.com> wrote:
>>
>> > Apparently, I hit send on my last email before finishing my synopsis
>> (per
>> > @Otto's Q in Slack). To summarize, based on my current understanding I
>> > believe that each of the feature branch changes I've outline above are
>> > units of work that are related, yet should be executed on independently.
>> > Knox SSO in its own feature branch. Migrating technologies like NodeJs
>> or
>> > migrating the auth DB to LDAP seem like they belong in their own
>> separate
>> > PR's or feature branches.
>> >
>> > Thanks,
>> > Mike
>> >
>> > On Thu, Sep 27, 2018 at 4:08 PM Casey Stella <ceste...@gmail.com>
>> wrote:
>> >
>> > > I'm coming in late to the game here, but for my mind a feature branch
>> > > should involve the minimum architectural change to accomplish a given
>> > > feature.
>> > > The feature in question is SSO integration.  It seems to me that the
>> > > operative question is can we do the feature without making the OTHER
>> > > architectural change
>> > > (e.g. migrating from expressjs to spring boot + zuul).  I would argue
>> > that
>> > > if we WANT to do that, then it should be a separate feature branch.
>> > >
>> > > Thus, I leave with a question: is there a way to accomplish this
>> feature
>> > > without ripping out expressjs?
>> > >
>> > >    - If so and it is feasible, I would argue that we should decouple
>> this
>> > >    into a separate feature branch.
>> > >    - If so and it is infeasible, I'd like to hear an argument as to
>> the
>> > >    infeasibility and let's decide given that
>> > >    - If it is not possible, then I'd argue that we should keep them
>> > coupled
>> > >    and move this through as-is.
>> > >
>> > > On a side-note, it feels a bit weird that we're narrowing to a bundled
>> > > proxy, rather than having that be a pluggable thing.  I'm not super
>> > > knowledgeable in this space, so I apologize
>> > > in advance if this is naive, but isn't this a pluggable, external
>> > component
>> > > (e.g. nginx)?
>> > >
>> > > On Thu, Sep 27, 2018 at 5:05 PM Michael Miklavcic <
>> > > michael.miklav...@gmail.com> wrote:
>> > >
>> > > > I've spent some more time reading through Simon's response and the
>> > added
>> > > > sequence diagram. This is definitely helpful - thank you Simon.
>> > > >
>> > > > I need to redact my initial list:
>> > > >
>> > > >    1. Node migrated to Spring Boot, expressjs migrated to a
>> > > >    non-JS/non-NodeJs proxying mechanism (ie Zuul in this case)
>> > > >    2. JDBC removed completely in favor of LDAP
>> > > >    3. Knox/SSO
>> > > >
>> > > > I'm a bit conflicted on the best way to move forward and would like
>> > some
>> > > > thoughts from other community members on this. I think an argument
>> can
>> > be
>> > > > made that 1 and 2 are independent of 3, and should/could really be
>> > > > independent PR's against master.
>> > > >
>> > > > The need for a replacement for expressjs (Zuul in this case) is an
>> > > artifact
>> > > > that our request/response cycle for REST calls is a simple matter of
>> > > > forwarding with some additional headers for authentication. There's
>> a
>> > > > JSESSIONID managed by the client browser in our current
>> architecture,
>> > for
>> > > > example. You login to the alerts or the management UI which
>> forwards a
>> > > > request to REST, which looks up credentials in a backend database,
>> and
>> > > > passes the results back up the chain. All browser requests go
>> directly
>> > to
>> > > > the specific UI you're working with - this is the CORS problem. You
>> > > can't,
>> > > > without some effort with headers for adding other domains to the
>> safe
>> > > list
>> > > > or disabling the security check for CORS, make remote calls
>> directly to
>> > > > REST. That's why we proxy. Switching over to Spring Boot leaves a
>> gap
>> > > with
>> > > > expressjs having handled the proxying and filtering, since it's only
>> > > > available to a NodeJs application (it's server-side javascript vs
>> the
>> > > > client side javascript deployed via our Angular applications). Enter
>> > > Zuul,
>> > > > which now effectively handles that. At runtime, Zuul is a part of
>> the
>> > > > Spring app that serves up our UI's. It handles the requests via
>> > > filtering,
>> > > > forwards them to REST, manages the response back to the client. Very
>> > > > similar to what expressjs was doing, per my current understanding.
>> The
>> > > > sequence diagrams Simon added are useful, and I think some of what
>> was
>> > > less
>> > > > clear was what we currently vs what the new changes are doing to the
>> > > > architecture. This is no fault of Simon's - there simply wasn't any
>> > > > architecture diagrams/documents around this before. Here's my
>> > impression
>> > > of
>> > > > the very very basic current state - someone more familiar with this
>> > > > architecture please advise if I'm incorrect about anything (probably
>> > > Ryan).
>> > > >
>> > > > https://imgur.com/f8GtSmh
>> > > >
>> > > > Zuul would be replacing the bit about expressjs in the diagram, and
>> > > instead
>> > > > of node we have spring boot. This covers 1. 2 and 3 are other
>> issues.
>> > I'd
>> > > > like to see similar exposition of those server processes with knox
>> > > > involved. I imagine in that case we bump up from 3 to 4 server
>> > instances
>> > > > for the additional knox endpoint.
>> > > >
>> > > > Mike
>> > > >
>> > > >
>> > > >
>> > > >
>> > > >
>> > > > On Wed, Sep 19, 2018 at 11:28 AM James Sirota <jsir...@apache.org>
>> > > wrote:
>> > > >
>> > > > > Thank you, Simon.  The diagrams help a lot
>> > > > >
>> > > > > 19.09.2018, 21:27, "Simon Elliston Ball" <
>> > si...@simonellistonball.com
>> > > >:
>> > > > > > To clarify some of this I've put some documentation into
>> > > > > > https://github.com/apache/metron/pull/1203 under METRON-1755 (
>> > > > > > https://issues.apache.org/jira/browse/METRON-1755). Hopefully
>> the
>> > > > > diagrams
>> > > > > > there should make it clearer.
>> > > > > >
>> > > > > > Simon
>> > > > > >
>> > > > > > On Tue, 18 Sep 2018 at 14:17, Simon Elliston Ball <
>> > > > > > si...@simonellistonball.com> wrote:
>> > > > > >
>> > > > > >>  Hi Mike,
>> > > > > >>
>> > > > > >>  Some good points here which could do with some clarification.
>> I
>> > > > suspect
>> > > > > >>  the architecture documentation could be clearer and fill in
>> some
>> > of
>> > > > > these
>> > > > > >>  gaps, and I'll have a look at working on that and providing
>> some
>> > > > > diagrams.
>> > > > > >>
>> > > > > >>  The short version is that the Zuul proxy gateway has been
>> added
>> > to
>> > > > > replace
>> > > > > >>  the Nodejs express proxy used to gateway the REST api calls in
>> > the
>> > > > > current
>> > > > > >>  hosts. This is done in both cases to avoid CORS restrictions
>> by
>> > > > > allowing
>> > > > > >>  the same host that serves the UI files to proxy call to the
>> API.
>> > > > > >>
>> > > > > >>  The choice of Zuul was partly a pragmatic one (it's the one
>> > that's
>> > > > > there
>> > > > > >>  in the box as it were with Spring Boot, which we use for the
>> REST
>> > > > API,
>> > > > > via
>> > > > > >>  the Spring Cloud Netflix project which wraps a bunch of
>> related
>> > > > pieces
>> > > > > into
>> > > > > >>  Spring). The choice of Spring Boot to host the UIs themselves
>> was
>> > > > > similarly
>> > > > > >>  for parity with the REST host, to simplify the stack (we
>> remove
>> > the
>> > > > > >>  occasionally problematic need to install nodejs on target
>> > servers,
>> > > > > which is
>> > > > > >>  outside of the regular OS and HDP stacks we support).
>> > > > > >>
>> > > > > >>  Arguably, the Zuul proxy is not necessary if we force
>> everything
>> > > > > through a
>> > > > > >>  Knox instance, since Knox would provide a single endpoint. We
>> > > > probably
>> > > > > >>  however don't want to force Knox and SSL, hence using Zuul to
>> > keep
>> > > it
>> > > > > >>  closer to our current architecture. Zuul does some other nice
>> > > things,
>> > > > > which
>> > > > > >>  might help us in future, so it's really about laying down some
>> > > > options
>> > > > > for
>> > > > > >>  potentially doing micro-services style things at a later date.
>> > I'm
>> > > > not
>> > > > > >>  saying we have to, or even should go that way, it will just
>> make
>> > > life
>> > > > > >>  easier later if we decide to. It will also help us if we want
>> to
>> > > add
>> > > > > HA,
>> > > > > >>  circuit breaking etc to the architecture at a later date. That
>> > > said,
>> > > > I
>> > > > > >>  regret that I ever said the word micro-services, since it's
>> > caused
>> > > > > >>  confusion. Just think of it as a proxy to deal with the CORS
>> > > problem.
>> > > > > >>
>> > > > > >>  Zuul is implemented as a set of filters, but we are not using
>> it
>> > > for
>> > > > > its
>> > > > > >>  authentication filtering. We're using it as a proxy. Shiro is
>> an
>> > > > > >>  authentication framework, and could arguably used to provide
>> the
>> > > > > security
>> > > > > >>  piece, but frankly wrapping shiro as a replacement for Spring
>> > > > Security
>> > > > > in a
>> > > > > >>  Spring application seemed like it will make life a lot harder.
>> > This
>> > > > > could
>> > > > > >>  be done, but it's not the native happy path, and would pull in
>> > > > > additional
>> > > > > >>  dependencies that duplicate functionality that's already
>> embedded
>> > > in
>> > > > > Spring
>> > > > > >>  Security.
>> > > > > >>
>> > > > > >>  The version of Knox used is the default from HDP. The link
>> > version
>> > > > you
>> > > > > >>  mention is a docs link. I'll update it to be the older
>> version,
>> > > which
>> > > > > is
>> > > > > >>  the same and we can decide if we want to maintain the
>> freshness
>> > of
>> > > it
>> > > > > when
>> > > > > >>  we look to upgrade underlying patterns. Either way, the
>> content
>> > is
>> > > > the
>> > > > > >>  same.
>> > > > > >>
>> > > > > >>  I did consider other hosting mechanisms, including Undertow a
>> > > > > >>
>> > > > > >>  If you have a different suggestion to using the Spring default
>> > ways
>> > > > of
>> > > > > >>  doing things, or we want to use a framework other than Spring
>> for
>> > > > this,
>> > > > > >>  then maybe we could change to that, but the route chosen here
>> is
>> > > > > definitely
>> > > > > >>  the easy path in the context of the decision made to use
>> Spring
>> > in
>> > > > > metron
>> > > > > >>  rest, and if anything opens up our choices while minimising,
>> in
>> > > fact
>> > > > > >>  reducing, our dependency management overhead.
>> > > > > >>
>> > > > > >>  I hope that explains some of the thinking behind the choices
>> > made,
>> > > > but
>> > > > > the
>> > > > > >>  guiding principals I followed were:
>> > > > > >>  * Don't fight the framework if you don't have to
>> > > > > >>  * Reduce the need for additional installation pieces and third
>> > > party
>> > > > > repos
>> > > > > >>  * Minimize dependencies we would have to manage
>> > > > > >>  * Avoid excessive change of the architecture, or forcing
>> users to
>> > > > adopt
>> > > > > >>  Knox if they didn't want the SSL overhead.
>> > > > > >>
>> > > > > >>  Simon
>> > > > > >>
>> > > > > >>  On Tue, 18 Sep 2018 at 02:46, Michael Miklavcic <
>> > > > > >>  michael.miklav...@gmail.com> wrote:
>> > > > > >>
>> > > > > >>>  Thanks for the write-up Ryan, this is a great start. I have
>> some
>> > > > > further
>> > > > > >>>  questions based on your feedback and in addition to my
>> initial
>> > > > thread.
>> > > > > >>>
>> > > > > >>>  Just for clarification, what version of Knox are we using?
>> HDP
>> > > > 2.6.5,
>> > > > > >>>  which
>> > > > > >>>  is what we currently run full dev against, supports 0.12.0.
>> > > > > >>>
>> > > > > >>>
>> > > > >
>> > > >
>> > >
>> >
>> https://docs.hortonworks.com/HDPDocuments/HDP2/HDP-2.6.5/bk_release-notes/content/comp_versions.html
>> > > > > >>>  .
>> > > > > >>>  I see references to Knox 1.1.0 (latest) in this committed PR
>> -
>> > > > > >>>
>> > > > > >>>
>> > > > >
>> > > >
>> > >
>> >
>> https://github.com/apache/metron/pull/1111/files#diff-70b412194819f3cb829566f05d77c1a6R122
>> > > > > >>>  .
>> > > > > >>>  This is probably just a super small mismatch, and it probably
>> > goes
>> > > > > without
>> > > > > >>>  saying, but I just want to be doubly sure that we're
>> installing
>> > > the
>> > > > > >>>  default
>> > > > > >>>  via the standard install mechanism as opposed to something
>> > > separate
>> > > > > and
>> > > > > >>>  manual.
>> > > > > >>>
>> > > > > >>>  On the subject of Zuul wrt Nodejs filters. I'd like to hear
>> some
>> > > > more
>> > > > > >>>  detail on:
>> > > > > >>>
>> > > > > >>>     1. Why do we need filtering via Zuul? For instance, is
>> > > filtering
>> > > > > >>>  routing
>> > > > > >>>     not handled by Knox? From the beginner docs: "The gateway
>> > > itself
>> > > > > is a
>> > > > > >>>  layer
>> > > > > >>>     over an embedded Jetty JEE server. At the very highest
>> level
>> > > the
>> > > > > >>>  gateway
>> > > > > >>>     processes requests by using request URLs to lookup
>> specific
>> > JEE
>> > > > > Servlet
>> > > > > >>>     Filter chain that is used to process the request. The
>> gateway
>> > > > > framework
>> > > > > >>>     provides extensible mechanisms to assemble chains of
>> custom
>> > > > filters
>> > > > > >>>  that
>> > > > > >>>     support secured access to services." [1]
>> > > > > >>>     2. What other library options were considered for this
>> > feature
>> > > > and
>> > > > > how
>> > > > > >>>     was it chosen over the others? I search on "apache spring
>> web
>> > > > > filters"
>> > > > > >>>  and
>> > > > > >>>     it's almost all about Shiro -
>> > > > https://shiro.apache.org/spring.html.
>> > > > > I
>> > > > > >>>     also see quite a bit about filtering for Spring Boot
>> > > applications
>> > > > > along
>> > > > > >>>     with a write-up of how to accomplish the same with Web MVC
>> > > here -
>> > > > > >>>
>> > > > > >>>
>> > > > >
>> > > >
>> > >
>> >
>> https://stackoverflow.com/questions/19825946/how-to-add-a-filter-class-in-spring-boot
>> > > > > >>>  .
>> > > > > >>>     The Knox documentation boilerplate examples are also using
>> > > Shiro.
>> > > > > >>>     "shiro.ini - The configuration file for the Shiro
>> > > authentication
>> > > > > >>>  provider’s
>> > > > > >>>     filters. This information is derived from the information
>> in
>> > > the
>> > > > > >>>  provider
>> > > > > >>>     section of the topology file." [1]
>> > > > > >>>
>> > > > > >>>  My assumption is that there are deliberate decisions in
>> favor of
>> > > > this
>> > > > > mix
>> > > > > >>>  of technologies over others, and I think some additional
>> > > explanation
>> > > > > will
>> > > > > >>>  make that clear. As it stands per the Knox documentation, it
>> > looks
>> > > > > like
>> > > > > >>>  we're going on a different route from the
>> preferred/recommended
>> > > > > idioms.
>> > > > > >>>
>> > > > > >>>  [1]
>> > > > > >>>
>> > > > > >>>
>> > > > >
>> > > >
>> > >
>> >
>> http://knox.apache.org/books/knox-0-12-0/dev-guide.html#Architecture+Overview
>> > > > > >>>
>> > > > > >>>  Ryan, I agree about microservices. This should not derail nor
>> > be a
>> > > > > major
>> > > > > >>>  part of discussion around this feature, imho. I think there's
>> > > quite
>> > > > a
>> > > > > bit
>> > > > > >>>  left to discuss on that subject. I want to make sure that
>> we're
>> > > not
>> > > > > >>>  prematurely favoring architectural choices by pulling in
>> > libraries
>> > > > > that
>> > > > > >>>  are
>> > > > > >>>  potentially opinionated about how to accomplish those goals.
>> If
>> > > they
>> > > > > are,
>> > > > > >>>  I
>> > > > > >>>  would expect we are comfortable ripping those libraries out
>> if
>> > the
>> > > > > >>>  community favors a different direction.
>> > > > > >>>
>> > > > > >>>  On the subject of Spring Boot vs Nodejs. I can see some
>> > rationale
>> > > > for
>> > > > > >>>  making things homogenous (though, in a microservices
>> > architecture,
>> > > > if
>> > > > > we
>> > > > > >>>  go
>> > > > > >>>  that route, that's not strictly necessary), but what is the
>> > > > > justification
>> > > > > >>>  for Spring Boot over Nodejs? Why would want one over the
>> other?
>> > > > > >>>
>> > > > > >>>  On Mon, Sep 17, 2018 at 3:38 PM Ryan Merriman <
>> > > merrim...@gmail.com>
>> > > > > >>>  wrote:
>> > > > > >>>
>> > > > > >>>  > I have reviewed a couple different PRs so I'll add some
>> > context
>> > > > > where I
>> > > > > >>>  > can. Obviously Simon would be the most qualified to answer
>> but
>> > > > I'll
>> > > > > >>>  add my
>> > > > > >>>  > thoughts.
>> > > > > >>>  >
>> > > > > >>>  > For question 1, while they may not all be necessary I
>> think it
>> > > > does
>> > > > > make
>> > > > > >>>  > sense to include them in this feature branch if our primary
>> > goal
>> > > > is
>> > > > > >>>  > integrating Knox SSO. We could push off removing JDBC
>> > > > authentication
>> > > > > >>>  for
>> > > > > >>>  > reasons I'll get to in my response to question 2. If we
>> want
>> > to
>> > > do
>> > > > > one
>> > > > > >>>  at
>> > > > > >>>  > a time (switch to spring boot, add Zuul as a dependency,
>> then
>> > > add
>> > > > > Knox
>> > > > > >>>  SSO)
>> > > > > >>>  > then that's ok but I do think there are dependencies and
>> > should
>> > > be
>> > > > > done
>> > > > > >>>  in
>> > > > > >>>  > order. For example, adding Knox SSO requires some work
>> around
>> > > > > request
>> > > > > >>>  > filtering. If we were to do this before moving to Spring
>> Boot
>> > we
>> > > > > would
>> > > > > >>>  > need to implement the filters in Nodejs which would be
>> > throwaway
>> > > > > once we
>> > > > > >>>  > get around to migrating away from that. For Zuul, I believe
>> > it's
>> > > > > >>>  purpose
>> > > > > >>>  > is to facilitate the filtering (although it does a lot
>> more)
>> > so
>> > > it
>> > > > > >>>  doesn't
>> > > > > >>>  > make sense to add that separate from the Knox SSO work.
>> > > > > >>>  >
>> > > > > >>>  > For question 2, I think you bring up a good point. We
>> probably
>> > > > don't
>> > > > > >>>  want
>> > > > > >>>  > to just rip our current authentication method out. We might
>> > want
>> > > > to
>> > > > > >>>  > consider deprecating it instead and making Knox SSO and
>> LDAP
>> > > > > >>>  authentication
>> > > > > >>>  > optional.
>> > > > > >>>  >
>> > > > > >>>  > For question 3, this is a bigger shift than just a
>> component
>> > > > > upgrade.
>> > > > > >>>  It's
>> > > > > >>>  > more like shifting platforms, from Elasticsearch to Solr
>> for
>> > > > > example.
>> > > > > >>>  Like
>> > > > > >>>  > I alluded to in my response to question 1, I don't think we
>> > > should
>> > > > > >>>  require
>> > > > > >>>  > throwaway work just because we want to review these parts
>> > > > > separately.
>> > > > > >>>  >
>> > > > > >>>  > For question 4, I will defer to Simon. I don't believe we
>> > > > > necessarily
>> > > > > >>>  > require Zuul so I will let him elaborate on why he choose
>> that
>> > > > > library
>> > > > > >>>  and
>> > > > > >>>  > what the potential impact is of adding it to our project.
>> > > > > >>>  >
>> > > > > >>>  > For question 5 and 6, I will also defer to Simon on this.
>> The
>> > > > focus
>> > > > > of
>> > > > > >>>  > this feature as I understand it is a consistent
>> authentication
>> > > > > mechanism
>> > > > > >>>  > and support for SSO. I will let him lay out his vision for
>> > micro
>> > > > > >>>  services.
>> > > > > >>>  >
>> > > > > >>>  > Knox SSO would be a great improvement and is what I think
>> we
>> > > > should
>> > > > > >>>  focus
>> > > > > >>>  > on in this feature branch. Micro services is something we
>> > should
>> > > > > >>>  certainly
>> > > > > >>>  > discuss but it might be a bit of a distraction and I
>> wouldn't
>> > > want
>> > > > > to
>> > > > > >>>  hold
>> > > > > >>>  > up the other useful parts.
>> > > > > >>>  >
>> > > > > >>>  > On Fri, Sep 14, 2018 at 8:38 PM Michael Miklavcic <
>> > > > > >>>  > michael.miklav...@gmail.com> wrote:
>> > > > > >>>  >
>> > > > > >>>  > > Hey all,
>> > > > > >>>  > >
>> > > > > >>>  > > I started looking through the Knox SSO feature branch
>> (see
>> > > here
>> > > > > >>>  > > https://issues.apache.org/jira/browse/METRON-1663).
>> This is
>> > > > some
>> > > > > >>>  great
>> > > > > >>>  > new
>> > > > > >>>  > > security functionality work and it looks like it will
>> bring
>> > > some
>> > > > > >>>  > important
>> > > > > >>>  > > new features to the Metron platform. I'm coming at this
>> > pretty
>> > > > > green,
>> > > > > >>>  so
>> > > > > >>>  > I
>> > > > > >>>  > > do have some questions regarding the proposed changes
>> from a
>> > > > high
>> > > > > >>>  level
>> > > > > >>>  > > architectural perspective. There are a few changes within
>> > the
>> > > > > current
>> > > > > >>>  FB
>> > > > > >>>  > > PR's that I think could use some further explanation. At
>> > first
>> > > > > >>>  glance, it
>> > > > > >>>  > > seems we could potentially simplify this branch a great
>> deal
>> > > and
>> > > > > get
>> > > > > >>>  it
>> > > > > >>>  > > completed much sooner if we narrowed the focus a bit.
>> But I
>> > > > could
>> > > > > >>>  > certainly
>> > > > > >>>  > > be wrong here and happy for other opinions. I searched
>> > through
>> > > > the
>> > > > > >>>  > mailing
>> > > > > >>>  > > list history to see if there is any additional background
>> > and
>> > > > the
>> > > > > main
>> > > > > >>>  > > DISCUSS thread I could find was regarding initially
>> setting
>> > up
>> > > > the
>> > > > > >>>  > feature
>> > > > > >>>  > > branch, which talked about adding Knox and LDAP.
>> > > > > >>>  > >
>> > > > > >>>  > >
>> > > > > >>>  >
>> > > > > >>>
>> > > > >
>> > > >
>> > >
>> >
>> https://lists.apache.org/thread.html/cac2e6314284015b487121e77abf730abbb7ebec4ace014b19093b4c@%3Cdev.metron.apache.org%3E
>> > > > > >>>  > > .
>> > > > > >>>  > > If I've missed any follow-up, please let me know.
>> > > > > >>>  > >
>> > > > > >>>  > > Looking at the broader set of Jiras associated with 1663
>> and
>> > > the
>> > > > > >>>  first PR
>> > > > > >>>  > > 1665, it looks like there are 4 main thrusts of this
>> branch
>> > > > right
>> > > > > now:
>> > > > > >>>  > >
>> > > > > >>>  > > 1. Knox/SSO
>> > > > > >>>  > > 2. Node migrated to Spring Boot
>> > > > > >>>  > > 3. JDBC removed completely in favor of LDAP
>> > > > > >>>  > > 4. Introduction of Zuul, also microservices?
>> > > > > >>>  > >
>> > > > > >>>  > > I strongly urge for the purpose of reviewing this feature
>> > > branch
>> > > > > that
>> > > > > >>>  we
>> > > > > >>>  > > base much of the discussion off of
>> > > > > >>>  > > https://issues.apache.org/jira/browse/METRON-1755, the
>> > > > > architecture
>> > > > > >>>  > > diagram. Minimally, an explanation of the current
>> > architecture
>> > > > > along
>> > > > > >>>  with
>> > > > > >>>  > > discussion around the additional proposed changes and
>> > > rationale
>> > > > > would
>> > > > > >>>  be
>> > > > > >>>  > > useful for evaluation. I don't have a solid enough
>> > > understanding
>> > > > > yet
>> > > > > >>>  of
>> > > > > >>>  > the
>> > > > > >>>  > > full scope of changes and how they differ from the
>> existing
>> > > > > >>>  architecture
>> > > > > >>>  > > just from looking at the PR's alone.
>> > > > > >>>  > >
>> > > > > >>>  > > 1. The first question is a general one regarding the
>> > necessity
>> > > > of
>> > > > > >>>  the
>> > > > > >>>  > 3
>> > > > > >>>  > > additional features alongside Knox - migrating Node to
>> > Spring
>> > > > > Boot,
>> > > > > >>>  > > removing JDBC altogether, adding dependencies on
>> Netflix's
>> > > Zuul
>> > > > > >>>  > > framework.
>> > > > > >>>  > > Are these necessary for adding Knox/SSO? They seem like
>> > > > > potentially
>> > > > > >>>  > > separate features, imo.
>> > > > > >>>  > > 2. It looks like LDAP will be a required component for
>> > > > interacting
>> > > > > >>>  > with
>> > > > > >>>  > > Metron via the UI's. I see this PR
>> > > > > >>>  > > https://github.com/apache/metron/pull/1186 which removes
>> > JDBC
>> > > > > >>>  > > authentication. Are we ready to remove it completely or
>> > would
>> > > it
>> > > > > be
>> > > > > >>>  > > better
>> > > > > >>>  > > to leave it as a minimal installation option? What is the
>> > > > proposed
>> > > > > >>>  > > migration path for existing users? Do we feel comfortable
>> > > > > requiring
>> > > > > >>>  > that
>> > > > > >>>  > > all installations, including full dev, install and
>> configure
>> > > > LDAP?
>> > > > > >>>  For
>> > > > > >>>  > > comparison, in the PCAP feature branch we discussed
>> removing
>> > > the
>> > > > > >>>  > > existing
>> > > > > >>>  > > PCAP REST application in the initial discussion, got
>> > > agreement,
>> > > > > and
>> > > > > >>>  > > later
>> > > > > >>>  > > removed it in the course of working on the feature
>> branch.
>> > The
>> > > > PR
>> > > > > >>>  is
>> > > > > >>>  > > fairly
>> > > > > >>>  > > clear, however I think we're just missing some basic
>> > > discussion
>> > > > > >>>  around
>> > > > > >>>  > > the
>> > > > > >>>  > > implications, as I've outlined above. Some additional
>> > relevant
>> > > > > >>>  > > discussion
>> > > > > >>>  > > occurred on this PR
>> > > https://github.com/apache/metron/pull/1112
>> > > > > >>>  which
>> > > > > >>>  > > would be good to summarize for purposes of this
>> overarching
>> > > > > >>>  > architecture
>> > > > > >>>  > > discussion.
>> > > > > >>>  > > 3. Migration from Node to Spring Boot. I believe this is
>> > > already
>> > > > > >>>  used
>> > > > > >>>  > by
>> > > > > >>>  > > the REST application and if anything brings some
>> cohesion to
>> > > our
>> > > > > >>>  > server
>> > > > > >>>  > > strategy. Strictly speaking, is there a reason this is
>> > > required
>> > > > > for
>> > > > > >>>  > > Knox?
>> > > > > >>>  > > It seems comparable to a component upgrade, such as
>> moving
>> > > from
>> > > > ES
>> > > > > >>>  2.x
>> > > > > >>>  > > to
>> > > > > >>>  > > 5.6.x and upgrading Angular 6.
>> > > > > >>>  > > 4. Introduction of Netflix's Zuul.
>> > > > > >>>  > > https://issues.apache.org/jira/browse/METRON-1665.
>> > > > > >>>  > > - > "The UIs currently proxy to the REST API to avoid
>> CORS
>> > > > > >>>  issues,
>> > > > > >>>  > > this will be achieved with Zuul."
>> > > > > >>>  > > - Can we elaborate more on where or how CORS is a problem
>> > with
>> > > > > >>>  our
>> > > > > >>>  > > existing architecture, how Zuul will help solve that, and
>> > how
>> > > it
>> > > > > >>>  > > fits with
>> > > > > >>>  > > Knox? Wouldn't this be handled by Knox? Since Larry McCay
>> > > > > >>>  chimed in
>> > > > > >>>  > > with
>> > > > > >>>  > > interest on the original SSO thread about the FB, I'm
>> hoping
>> > > he
>> > > > > >>>  is
>> > > > > >>>  > > also
>> > > > > >>>  > > willing to chime in on this as well.
>> > > > > >>>  > > - This looks like it has the potential to be a rather
>> large
>> > > > > >>>  piece
>> > > > > >>>  > of
>> > > > > >>>  > > fundamental infrastructure (as it's also pertinent to
>> > > > > >>>  > microservices)
>> > > > > >>>  > > to
>> > > > > >>>  > > pull into the platform, and I'd like to be sure the
>> > community
>> > > is
>> > > > > >>>  > > aware of
>> > > > > >>>  > > and is OK with the implications.
>> > > > > >>>  > > 5. > "The proposal is to use a spring boot application,
>> > > allowing
>> > > > > >>>  us to
>> > > > > >>>  > > harmonize the security implementation across the UI
>> static
>> > > > servers
>> > > > > >>>  and
>> > > > > >>>  > > the
>> > > > > >>>  > > REST layer, and to provide a routing platform for later
>> > > > > >>>  > microservices."
>> > > > > >>>  > > -
>> > > > > >>>  > > https://issues.apache.org/jira/browse/METRON-1665.
>> > > > > >>>  > > - Microservices is a pretty loaded term. I know there had
>> > been
>> > > > > >>>  some
>> > > > > >>>  > > discussion a while back during the PCAP feature branch
>> > start,
>> > > > > >>>  but I
>> > > > > >>>  > > don't
>> > > > > >>>  > > recall ever reaching a consensus on it. More detail in
>> this
>> > > > > >>>  thread
>> > > > > >>>  > -
>> > > > > >>>  > >
>> > > > > >>>  > >
>> > > > > >>>  >
>> > > > > >>>
>> > > > >
>> > > >
>> > >
>> >
>> https://lists.apache.org/thread.html/1db7c6fa1b0f364f8c03520db9989b4f7a446de82eb4d9786055048c@%3Cdev.metron.apache.org%3E
>> > > > > >>>  > > .
>> > > > > >>>  > > Can we get some clarification on what is meant by
>> > > microservices
>> > > > > >>>  > > in the case
>> > > > > >>>  > > of this FB and relevant PR's, what that architecture
>> looks
>> > > like,
>> > > > > >>>  > and
>> > > > > >>>  > > how
>> > > > > >>>  > > it's achieved with the proposed changes in this PR/FB? It
>> > > seems
>> > > > > >>>  > Zuul
>> > > > > >>>  > > is
>> > > > > >>>  > > also pertinent to this discussion, but there are many
>> ways
>> > to
>> > > > > >>>  > > skin this cat
>> > > > > >>>  > > so I don't want to presume -
>> > > > > >>>  > >
>> > > > > >>>  > >
>> > > > > >>>
>> > > > >
>> > https://blog.heroku.com/using_netflix_zuul_to_proxy_your_microservices
>> > > > > >>>  > > 6. Zuul, Spring Boot, and microservices - Closely
>> related to
>> > > > > >>>  > point 5
>> > > > > >>>  > > above. It seems that we weren't quite ready for this
>> when it
>> > > was
>> > > > > >>>  > > brought up
>> > > > > >>>  > > in May, or at the very least we had some concern of what
>> > > > direction
>> > > > > >>>  to
>> > > > > >>>  > > go.
>> > > > > >>>  > > What is the operational impact, mpack impact, and how we
>> > > propose
>> > > > > to
>> > > > > >>>  > > manage
>> > > > > >>>  > > it with Kerberos, etc.?
>> > > > > >>>  > >
>> > > > > >>>  > >
>> > > > > >>>  >
>> > > > > >>>
>> > > > >
>> > > >
>> > >
>> >
>> https://lists.apache.org/thread.html/c19904681e6a6d9ea3131be3d1a65b24447dca31b4aff588b263fd87@%3Cdev.metron.apache.org%3E
>> > > > > >>>  > >
>> > > > > >>>  > > There is a lot to like in this feature branch, imo. Great
>> > > > feature
>> > > > > >>>  > addition
>> > > > > >>>  > > with Knox and SSO. Introduction of LDAP support for
>> > > > > authentication for
>> > > > > >>>  > > Metron UI's. Simplification/unification of our server
>> > hosting
>> > > > > >>>  > > infrastructure. I'm hoping we can flesh out some of the
>> > > details
>> > > > > >>>  pointed
>> > > > > >>>  > out
>> > > > > >>>  > > above a bit more and get this feature through. Great
>> work so
>> > > > far!
>> > > > > >>>  > >
>> > > > > >>>  > > Best,
>> > > > > >>>  > > Mike Miklavcic
>> > > > > >>>  > >
>> > > > > >>>  >
>> > > > > >>
>> > > > > >>  --
>> > > > > >>  --
>> > > > > >>  simon elliston ball
>> > > > > >>  @sireb
>> > > > > >
>> > > > > > --
>> > > > > > --
>> > > > > > simon elliston ball
>> > > > > > @sireb
>> > > > >
>> > > > > -------------------
>> > > > > Thank you,
>> > > > >
>> > > > > James Sirota
>> > > > > PMC- Apache Metron
>> > > > > jsirota AT apache DOT org
>> > > > >
>> > > > >
>> > > >
>> > >
>> >
>>
>

Reply via email to