1) Sorry I misspoke.  I meant to say this is not possible in the Alerts UI
as far as I know.  I put up a PR with a proposed solution here:
https://github.com/apache/metron/pull/1266.
2) Yes Knox is a service you can install with Ambari, similar to Ranger or
Spark.  There are some things that are specifically configured in Knox and
there are some things specific to Metron.  I will put up a PR with the
changes needed so you can see exactly what is involved.
3) I don't understand what you mean here.  Is this a question?
4) I think it's a little early to predict the Ambari changes required.
This will depend on how tasks 1-3 go.  I imagine it's similar to other
mpack work:  expose some parameters in ambari and bind those to config
files.  My understanding from this thread so far is that we should focus on
a manual, documented approach to start.

On Thu, Nov 15, 2018 at 7:53 PM Michael Miklavcic <
michael.miklav...@gmail.com> wrote:

> Thanks Ryan,
>
> 1) Can you clarify "not a good way to do this?" Are you saying we don't
> have a way to set this and need to add the config option, or that a
> solution is not obvious and it's unclear what to do? It seems to me you're
> saying the former, but I'd like to be sure.
> 2) Is Knox not a service made available by Ambari similar to Ranger or
> Spark? I'm assuming that similar to Kerberos, there are some things that
> are specifically configured in Knox and others that are app-specific. Some
> explanation of what this looks like would be helpful.
> 3) Sounds like this follows pretty naturally from #1
> 4) Relates to #2. I think we need some guidance on what a manual vs
> MPack/automated install would look like.
>
> Cheers,
> Mike
>
>
> On Thu, Nov 15, 2018 at 4:07 PM Ryan Merriman <merrim...@gmail.com> wrote:
>
> > Wanted to give an update on the context path issue.  I investigated
> > rewriting url links in the outgoing static assets with Knox and it was
> not
> > trivial.  Fortunately I found a simple solution that works with or
> without
> > Knox.  I changed the base tag in index.html from <base href="/"> to <base
> > href="./">, or in other words made the base href relative.
> >
> > I believe I am at the point where I can task this out and provide a high
> > level overview of the changes needed.  I think that each task will be a
> > manageable size and can stand alone so I don't think we need a feature
> > branch.
> >
> > The first task involves a general change to the UI code.  We need a way
> to
> > set the path to the REST service with a configuration setting because it
> is
> > different with and without Knox.  Currently there is not a good way to do
> > this in the UI.  We can use the environment files but that is a build
> time
> > setting and is not flexible.  I can see this capability being useful for
> > other use cases in the future.  I think we could even split this up into
> 2
> > separate tasks, one for the alerts UI and one for the management UI.
> >
> > The second task involves adding Knox to our stack either by default as a
> > dependency in the mpack or with a documented approach.  We would add our
> > REST service, Alerts UI, and Management UI as services in Knox.
> Everything
> > would continue to function as it currently does but with all
> communication
> > going through Knox.  LDAP authentication would be required when using
> Knox
> > and Knox will authenticate with the REST service by passing along an
> > Authorization header.  Enabling Knox would be a manual process that
> > involves deploying assets (Knox descriptor files) and changing
> > configuration.  There would be no change to how the UI functions by
> default
> > (without Knox) and either LDAP or JDBC authentication could still be
> used..
> >
> > The third task involves enabling SSO with Knox.  We would update the REST
> > service so that it can authenticate with a Knox SSO token.  We would
> > provide documentation on how to update the Knox settings in Ambari to
> > enable SSO.  The Alerts/Management UI would need to expose configuration
> > properties for the REST url and login url since these would be different
> > when Knox is enabled.  We would also need to provide documentation on how
> > to make these UI configuration changes, based on the work done in task 1.
> >
> > An optional forth task would be exposing configuration settings and
> > enabling Knox with Ambari.  We would eliminate the manual steps necessary
> > for enabling Knox and instead automate those steps with an Ambari input
> > control, similar to how LDAP is enabled.
> >
> > Thoughts on this plan?
> >
> > On Thu, Nov 15, 2018 at 10:22 AM James Sirota <jsir...@apache.org>
> wrote:
> >
> > > In my view Knox SSO is such a minor feature when it comes to Metron's
> > > capabilities than it's not worth supporting multiple scenarios where it
> > > works with Knox or without Knox.  Where we should be configurable (and
> > are
> > > configurable) is on the analytics and stream processing.  But this?  As
> > > long as the UI authenticates securely I don't think anyone is going to
> > care
> > > what proxy it's using.  The code itself should be written in a way that
> > > it's pluggable so if we ever wanted to use another proxy or disable it
> > all
> > > together we could.  But this should not be a configuration we pass on
> to
> > > the user.  The added complexity is simply not worth it here.  We have
> to
> > > start being opinionated about making sensible choices on behalf of the
> > > user.  A sensible choice here is to run with Knox and LDAP.  The JDBC
> > > component should exist for another release to allow the community to
> > > migrate over to LDAP and then be deprecated.  The code should still be
> > > pluggable and if anyone wanted to extend it to work with JDBC they
> could,
> > > or if people wanted to plug in another proxy they could, but this is
> not
> > > something we would officially support.
> > >
> > > Thanks,
> > > James
> > >
> > > 12.11.2018, 07:36, "Ryan Merriman" <merrim...@gmail.com>:
> > > > Let me clarify on exposing both legacy and Knox URLs at the same
> time.
> > > The
> > > > base urls will look something like this:
> > > >
> > > > Legacy REST - http://node1:8082/api/v1
> > > > Legacy Alerts UI - http://node1:4201:/alerts-list
> > > >
> > > > Knox REST - https://node1:8443/gateway/default/metron/api/v1
> > > > Knox Alerts UI -
> > > > https://node1:8443/gateway/default/metron-alerts-ui/alerts-list
> > > >
> > > > If Knox were turned on and the alerts UI deployed as is, it would not
> > > > work. This is because static assets are referenced with
> > > > http://node1:4201/assets/some-asset.js which does not include the
> > > correct
> > > > context path to the alerts UI in knox. To make it work, you have to
> set
> > > > the base ref to "/gateway/default/metron-alerts-ui" so that static
> > assets
> > > > are referenced at
> > > >
> > https://node1:8443/gateway/default/metron-alerts-ui/assets/some-asset.js
> > > .
> > > > When you do that, the legacy alerts UI will no longer work. I guess
> the
> > > > point I'm trying to make is that we would have to switch between them
> > or
> > > > have 2 separate application running. I imagine most users only need
> one
> > > or
> > > > the other running so probably not an issue.
> > > >
> > > > Jon, the primary upgrade consideration I see is with authentication.
> To
> > > be
> > > > able to use Knox, you would have to upgrade to LDAP-based
> > authentication
> > > if
> > > > you were still using JDBC-based authentication in REST. The urls
> would
> > > > also change obviously.
> > > >
> > > > On Sun, Nov 11, 2018 at 6:38 PM zeo...@gmail.com <zeo...@gmail.com>
> > > wrote:
> > > >
> > > >>  Phew, that was quite the thread to catch up on.
> > > >>
> > > >>  I agree that this should be optional/pluggable to start, and I'm
> > > interested
> > > >>  to hear the issues as they relate to upgrading an existing cluster
> > > (given
> > > >>  the suggested approach) and exposing both legacy and knox URLs at
> the
> > > same
> > > >>  time.
> > > >>
> > > >>  Jon
> > > >>
> > > >>  On Fri, Nov 9, 2018, 4:46 PM Michael Miklavcic <
> > > >>  michael.miklav...@gmail.com>
> > > >>  wrote:
> > > >>
> > > >>  > 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
> > > >>  > >> > > > >
> > > >>  > >> > > > >
> > > >>  > >> > > >
> > > >>  > >> > >
> > > >>  > >> >
> > > >>  > >>
> > > >>  > >
> > > >>  >
> > > >>  --
> > > >>
> > > >>  Jon Zeolla
> > >
> > > -------------------
> > > Thank you,
> > >
> > > James Sirota
> > > PMC- Apache Metron
> > > jsirota AT apache DOT org
> > >
> >
>

Reply via email to