[
https://issues.apache.org/jira/browse/SOLR-7236?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14386392#comment-14386392
]
Per Steffensen commented on SOLR-7236:
--------------------------------------
Thanks for a constructive answer!
bq. Because as long as the network and HTTP are handled by software that is
outside of Solr, Solr has absolutely no ability to control it.
First of all, that is not true. Second, I am pretty sure that Solr does not
have any ambition to deal with all the hard low-level network stuff itself. We
will always use a 3rd party component for that - Netty, Spray or whatever. So
it will always be a 3rd party component that connects with the network,
receives requests, parses them etc before handing over control to Solr. So why
not let Jetty (or any other web-container) do that - they do the job pretty
well.
bq. Ideally, you should be able to drop a configuration right in a handler
definition (such as the one for /select) found in solrconfig.xml, listing
security credentials (username/password, IP address, perhaps even certificate
information) that you are willing to accept for that handler, along with
exceptions or credentials that will allow SolrCloud inter-node communication to
work.
You can do that with a web-container, and I do believe that the way you would
do it will not change much whether you want to do it with Jetty or Netty. The
HttpServletRequest handed over by the web-container contains everything you
need (maybe together with the web-container context), just as it probably would
with any other network component. You can plug things into the web-container
just as you probably can with any other network component.
If you give me an more exact example of what you want to achieve, that you
believe cannot be achieved with a web-container, but you believe can be
achieved with the other approach, I would love to make the code showing that
you are wrong. If I can’t, I will forever keep quiet - and that in itself is
quit an achievement.
bq. Bringing the servlet container under our control as we did with 5.0 (with
initial work in 4.10) allows us to tell people how to configure the servlet
container for security in a predictable manner
Yes, and if it was a web-container that had control, your could point to
web-container documentation for info about how to configure.
Even though I think it is an unnecessary move, it is an ok idea to say that
Solr IS running in Jetty, making us able to tell exactly how to configure
whatever you need to. If you want to use any other web-container, you are on
your own. But leaving it a web-app behind the scenes would be great, so that
advanced users can still take advantage of that. The problem, though, is that
you lock with Jetty, and Jetty becomes an “implementation detail” of Solr. Do
not do that if it is not necessary, and I still have not seen very good reasons
to do it. But at least I recognize that there might be good reasons.
I am not sure about what you actually did in 5.0 (with initial work in 4.10).
As far as I can see Solr still starts out by starting Jetty. Can you point me
to some of the most important JIRAs for the remove-web-container initiative.
Thanks!
bq. but it is still not *Solr* and its configuration that's controlling it.
But it can be, without removing the web-container.
The thing I fear is spending a lot of resources and time removing Jetty and
replacing it with lots of other 3rd party components (e.g. including Netty),
and at best just reach status quo after a year or two. This entire
umbrella-issue (SOLR-7236) is only/mainly necessary because of the
moving-out-of-web-container initiative.
The fact that Solr is running in a web-container makes it very flexible - e.g.
my projects have significant changes to both web.xml and jetty.xml. Other
people might have similar setups just with Tomcat or whatever. Establishing the
same kind of flexibility without a web-container will take years.
In my organization we started out using ElasticSearch, but for political
reasons we moved to SolrCloud. The first thing that made me happy about that,
was the fact that Solr(Cloud) is a web-app, because I know exactly how they
work, they are standardized and flexible - believe a lot of people feel the
same way
At least, if you insist on removing the web-container, make sure not to do it
before all the flexibility it gives can somehow be achieved in another way. If
you really wanted to do cool stuff in this area, making Solr(Cloud) based on
dependency injection (configuration and/or annotation) would be great - e.g.
using Spring or Guice. Both top-level Solr, but also sub-parts of Solr. E.g.
the fact that solrconfig.xml is a self-invented configuration-structure that
screams to be replaced by (de-facto) standardized dependency injection is a
major problem.
Sorry for partly highjacking the issue, [~janhoy] - I did not manage to keep
this about security only
> Securing Solr (umbrella issue)
> ------------------------------
>
> Key: SOLR-7236
> URL: https://issues.apache.org/jira/browse/SOLR-7236
> Project: Solr
> Issue Type: New Feature
> Reporter: Jan Høydahl
> Labels: Security
>
> This is an umbrella issue for adding security to Solr. The discussion here
> should discuss real user needs and high-level strategy, before deciding on
> implementation details. All work will be done in sub tasks and linked issues.
> Solr has not traditionally concerned itself with security. And It has been a
> general view among the committers that it may be better to stay out of it to
> avoid "blood on our hands" in this mine-field. Still, Solr has lately seen
> SSL support, securing of ZK, and signing of jars, and discussions have begun
> about securing operations in Solr.
> Some of the topics to address are
> * User management (flat file, AD/LDAP etc)
> * Authentication (Admin UI, Admin and data/query operations. Tons of auth
> protocols: basic, digest, oauth, pki..)
> * Authorization (who can do what with what API, collection, doc)
> * Pluggability (no user's needs are equal)
> * And we could go on and on but this is what we've seen the most demand for
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]