I'm also not convinced that a Javascript-based approach is the way to go. We shouldn't switch the default UI until (at a minimum) we have the command-line tools that Colin requested, and even then I'd still want to retain support for text-based browsers like elinks unless there are compelling technical reasons not to.
Haohui, I'm sympathetic since you've already done all this work on a pure-JS version, but it's also true that the existing JSP pages could be cleaned up to achieve basically the same visual effect while also still working in text-only browsers. Thanks, Andrew On Wed, Oct 30, 2013 at 12:34 AM, Luke Lu <l...@vicaya.com> wrote: > I don't think that we have reached a consensus that the new javascript only > UI is the right direction to go. Most people considered it "interesting". I > personally think it's inappropriate for core Hadoop UI, as it increases > attack surface of the UI and taking away existing mitigation options from > users unnecessarily. See my latest comments on HDFS-5333 for "concrete" > examples. > > __Luke > > > On Tue, Oct 29, 2013 at 11:28 AM, Haohui Mai <h...@hortonworks.com> wrote: > > > I would like to summarize the discussions so far. It seems that we have > > reached two consensus: > > > > 1. The new JavaScript-based UI is the right direction to go. > > 2. For now we should keep the old JSP pages around for compatibility > > reasons. > > > > There're some debates on the usages of the JMX / JSON APIs, but this is > > orthogonal to switching the UI, thus I consider it as a technical detail. > > We can continue the discussions in the public jira. > > > > The new UI has already landed in the trunk, based on the consensus it > seems > > that we can switch the default UI to the new one shortly. The user can > > still access the old web UI using the same URLs. > > > > The only question remain is that who is going to maintain the old web UI. > > My answer is that we should leave them as deprecated and focus the effort > > on the new web UI. > > > > Thanks, > > Haohui > > > > > > > > On Tue, Oct 29, 2013 at 5:22 AM, Zheng, Kai <kai.zh...@intel.com> wrote: > > > > > > having /JMX for monitoring integration and a /JSON end point for the > UI > > > IMHO, this makes sense, especially for the long term. JMX interface > > serves > > > as management console in admin perspective, WebUI serves as end user > > > interface. Both might share same functionality codes, but that does not > > > validate we couple them together. > > > > > > Thanks & regards, > > > Kai > > > > > > -----Original Message----- > > > From: Alejandro Abdelnur [mailto:t...@cloudera.com] > > > Sent: Tuesday, October 29, 2013 8:14 AM > > > To: hdfs-dev@hadoop.apache.org > > > Subject: Re: Replacing the JSP web UIs to HTML 5 applications > > > > > > Isn't using JMX to expose JSON for the web UI misusing JMX? > > > > > > I would think a more appropriate approach would be having /JMX for > > > monitoring integration and a /JSON end point for the UI data. > > > > > > Thanks. > > > > > > > > > On Mon, Oct 28, 2013 at 4:58 PM, Haohui Mai <h...@hortonworks.com> > > wrote: > > > > > > > Alejandro, > > > > > > > > If I understand correctly, that is the exact approach that the new > web > > > > UI is taking. The new web UI takes the output from JMX and renders > > > > them as HTML at the client side. > > > > > > > > ~Haohui > > > > > > > > > > > > On Mon, Oct 28, 2013 at 4:18 PM, Alejandro Abdelnur < > t...@cloudera.com > > > > >wrote: > > > > > > > > > Haohui, > > > > > > > > > > If you have NN and DNs producing JSON instead HTML, then you can > > > > > build JS based web UIs. Take for example Oozie, Oozie produces > JSON, > > > > > it has a > > > > built > > > > > in JS web ui that consumes JSON and Hue has built an external web > UI > > > > > that also consumes JSON. In the case of Hue UI, Oozie didn't have > to > > > > > change anything to get that UI and improvements on the Hue UI don't > > > > > require changes in Oozie unless it is to produce additional > > > information. > > > > > > > > > > hope this clarifies. > > > > > > > > > > Thx > > > > > > > > > > > > > > > On Mon, Oct 28, 2013 at 4:06 PM, Haohui Mai <h...@hortonworks.com> > > > > wrote: > > > > > > > > > > > Echo my comments on HDFS-5402: > > > > > > > > > > > > bq. If we're going to remove the old web UI, I think the new web > > > > > > UI has to have the same level of unit testing. We shouldn't go > > > > > > backwards in terms of unit testing. > > > > > > > > > > > > I take a look at TestNamenodeJspHelper / TestDatanodeJspHelper / > > > > > > TestClusterJspHelper. It seems to me that we can merge these > tests > > > > > > with > > > > > the > > > > > > unit tests on JMX. > > > > > > > > > > > > bq. If we are going to > > > > > > remove this capability, we need to add some other command-line > > > > > > tools to get the same functionality. These tools could use REST > if > > > > > > we have that, or JMX, but they need to exist before we can > > > > > > consider removing the old UI. > > > > > > > > > > > > This is a good point. Since all information are available through > > > > > > JMX, > > > > > the > > > > > > easiest way to approach it is to write some scripts using > Node.js. > > > > > > The architecture of the new Web UIs is ready for this. > > > > > > > > > > > > > > > > > > On Mon, Oct 28, 2013 at 3:57 PM, Alejandro Abdelnur > > > > > > <t...@cloudera.com > > > > > > >wrote: > > > > > > > > > > > > > Producing JSON would be great. Agree with Colin that we should > > > > > > > leave > > > > > for > > > > > > > now the current JSP based web ui. > > > > > > > > > > > > > > thx > > > > > > > > > > > > > > > > > > > > > On Mon, Oct 28, 2013 at 11:16 AM, Colin McCabe < > > > > cmcc...@alumni.cmu.edu > > > > > > > >wrote: > > > > > > > > > > > > > > > This is a really interesting project, Haohui. I think it > will > > > > > > > > make our web UI much nicer. > > > > > > > > > > > > > > > > I have a few concerns about removing the old web UI, however: > > > > > > > > > > > > > > > > * If we're going to remove the old web UI, I think the new > web > > > > > > > > UI > > > > has > > > > > > > > to have the same level of unit testing. We shouldn't go > > > > > > > > backwards > > > > in > > > > > > > > terms of unit testing. > > > > > > > > > > > > > > > > * Most of the deployments of elinks and links out there don't > > > > support > > > > > > > > Javascript. This is just a reality of life when using CentOS > > > > > > > > 5 or > > > > 6, > > > > > > > > which many users are still using. I have used "links" to > > > > > > > > diagnose problems through the web UI in the past, in systems > > > > > > > > where access to the cluster was available only through > telnet. > > > > > > > > If we are going to remove this capability, we need to add > some > > > > > > > > other command-line > > > > tools > > > > > > > > to get the same functionality. These tools could use REST if > > > > > > > > we > > > > have > > > > > > > > that, or JMX, but they need to exist before we can consider > > > > removing > > > > > > > > the old UI. > > > > > > > > > > > > > > > > best, > > > > > > > > Colin > > > > > > > > > > > > > > > > On Fri, Oct 25, 2013 at 7:31 PM, Haohui Mai > > > > > > > > <h...@hortonworks.com> > > > > > > > wrote: > > > > > > > > > Thanks for the reply, Luke. Here I just echo my response > > > > > > > > > from the > > > > > > jira: > > > > > > > > > > > > > > > > > > bq. this client-side js only approach, which is less secure > > > > > > > > > than > > > > a > > > > > > > > > progressively enhanced hybrid approach used by YARN. The > > > > > > > > > recent > > > > > gmail > > > > > > > > > XSS fiasco highlights the issue. > > > > > > > > > > > > > > > > > > I'm presenting an informal security analysis to compare the > > > > > security > > > > > > of > > > > > > > > the > > > > > > > > > old and the new web UIs. > > > > > > > > > > > > > > > > > > An attacker launches an XSS attack by injecting malicious > > > > > > > > > code > > > > > which > > > > > > > are > > > > > > > > > usually HTML or JavaScript fragments into the web page, so > > > > > > > > > that > > > > the > > > > > > > > > malicious code can have the same privileges of the web > page. > > > > > > > > > > > > > > > > > > First, in the scope of XSS attacks, note that the threat > > > > > > > > > models > > > > of > > > > > > > > > launching XSS attacks on Internet sites Gmail/Linkedin and > > > > > > > > > the > > > > one > > > > > of > > > > > > > the > > > > > > > > > Hadoop UIs are different. They have fundamental different > > > > > > > > > sets of > > > > > > > > external > > > > > > > > > inputs that the attackers have control to. Internet sites > > > > > > > > > have > > > > > little > > > > > > > > > control of these inputs. In the case of Gmail / Linkedin, > an > > > > attack > > > > > > can > > > > > > > > > send you a crafted e-mail, or put malicious description in > > > > > > > > > his / her Linkedin profile. The sets of external inputs are > > > > *restricted* > > > > > in > > > > > > > > > Hadoop UIs. The new web UIs take JMX and WebHDFS as inputs. > > > > > > > > > The attacker has to launch a XSS attack by: > > > > > > > > > > > > > > > > > > * Compromise the jars so that the output of JMX / WebHDFS > > > > > > > > > have > > > > the > > > > > > > > > malicious code. > > > > > > > > > * Replace the web UIs completely to include the malicious > > code. > > > > > > > > > > > > > > > > > > In either case *the attacker has to compromise the hadoop > > > > > > > > > core or > > > > > the > > > > > > > > > namenode*. That means the new web UIs are at least as > secure > > > > > > > > > as > > > > the > > > > > > > > hadoop > > > > > > > > > core, and the namenode machine. > > > > > > > > > > > > > > > > > > Second, I argue that using client-side templates are more > > > > > > > > > secure > > > > > than > > > > > > > the > > > > > > > > > current JSP-based server-side templates. To defend against > > > > > > > > > XSS attacks, both techniques have to filter the external > > > > > > > > > inputs at > > > > > > *every* > > > > > > > > > possible execution paths. Several facts much be taken into > > > > > > > > > plays when evaluating the security of both approaches in > > > > real-world > > > > > > > > > environments: > > > > > > > > > > > > > > > > > > * The JavaScript libraries used in the new web UIs have > > > > > > > > > survived > > > > in > > > > > > > > > extremely large-scale production tests. jQuery is used by > > > > > > > > > Google > > > > > and > > > > > > > > > Microsoft, bootstrap is used by Twitter, and dust.js is > > > > > > > > > used by > > > > > > > > Linkedin. > > > > > > > > > All libraries survived from hundreds of thousands of > attack > > > > > > > > > attempts on a daily basis. I agree that the libraries > > > > might > > > > > > > still > > > > > > > > > be imperfect, but there's no way that we can test the JSP > > > > > > > > > web UIs to achieve the same level of assurances given the > > > > > > > > > amount of > > > > > > > > resources > > > > > > > > > the community has. > > > > > > > > > * Client-side templates consolidate all filtering logic in > > > > > > > > > one > > > > > > central > > > > > > > > > place. Recall that the goal is to filter all external > inputs > > > > > > > > > at > > > > > every > > > > > > > > > execution paths, this is a much more systematic approach > > > > compared > > > > > to > > > > > > > the > > > > > > > > > server-side templates we have today. It is difficult (if > not > > > > > > > > > impossible) to do it in a JSP/ASP/PHP application, since > > > > > > > > > such > > > > > > > filtering > > > > > > > > > can be only achieved via ad-hoc approaches ([1] shows some > > > > > > > > > empirical data). Also, HDFS-4901 recently describes a XSS > > > > > > > vulnerability > > > > > > > > in > > > > > > > > > browseDirectory.jsp. > > > > > > > > > > > > > > > > > > bq. You'd require proper SSL (not self signed) setup to > > > > > > > > > avoid JS injection > > > > > > > > > > > > > > > > > > Commodity browsers enforce Same-Origin Policy to defend > > > > > > > > > against > > > > > code > > > > > > > > > injections. It has nothing to do with what kinds of SSL > > > > > certificates > > > > > > > > > you hold. > > > > > > > > > > > > > > > > > > bq. I also have concerns that we commit these changes > > > > > > > > > without > > > > > > matching > > > > > > > > > unit tests > > > > > > > > > > > > > > > > > > The JavaScript code can be automatically tested. The same > > > > > > > > > code > > > > can > > > > > be > > > > > > > run > > > > > > > > > by node.js and the test can compared with pre-defined > > > > > > > > > results. It is also possible to write an adapter to use > > > > > > > > > Rhino to > > > > > > > > accomplish > > > > > > > > > the same task. We can discuss how to integrate them into > the > > > > > > > > > maven test routines in a different thread. > > > > > > > > > > > > > > > > > > bq. Client side rendering completely breaks the workflows > > > > > > > > > for ops > > > > > who > > > > > > > > rely > > > > > > > > > on text based terminal/emacs/vim browsers (no js support) > to > > > > > > > > > monitor component UI. > > > > > > > > > > > > > > > > > > links / elinks (http://elinks.or.cz/) are text-based web > > > > browsers > > > > > > that > > > > > > > > > support JavaScript. > > > > > > > > > > > > > > > > > > bq. The priority/requirements for UI in core Hadoop should > > > > > > > > > be > > > > > > security > > > > > > > > and > > > > > > > > > correctness, which client side templating cannot address > > > > > > > > > properly so far. > > > > > > > > > > > > > > > > > > I agree that we should focus on security and correctness. > > > > > > > > > The > > > > > > > paragraphs > > > > > > > > > above explain that how the architecture of the new UIs > makes > > > > > > > > > the UIs more secure in real-world settings compared to the > > > > UI > > > > > > we > > > > > > > > have > > > > > > > > > today. > > > > > > > > > > > > > > > > > > References: > > > > > > > > > > > > > > > > > > 1. A. Yip et al. Improving Application Security with Data > > > > > > > > > Flow > > > > > > > > Assertions. > > > > > > > > > In SOSP'2009. > > > > > > > > > > > > > > > > > > > > > > > > > > > On Fri, Oct 25, 2013 at 10:02 AM, Luke Lu <l...@apache.org> > > > > wrote: > > > > > > > > > > > > > > > > > >> Echoing my comments on HDFS-3555: > > > > > > > > >> > > > > > > > > >> I have concerns with this client-side js only approach, > > > > > > > > >> which is > > > > > > less > > > > > > > > >> secure than a progressively enhanced hybrid approach used > > > > > > > > >> by > > > > YARN. > > > > > > The > > > > > > > > >> recent gmail XSS fiasco highlights the issue. I also have > > > > concerns > > > > > > > that > > > > > > > > we > > > > > > > > >> commit these changes without matching unit tests - the > fact > > > > > > > > >> you > > > > > > cannot > > > > > > > > >> effectively unit test these changes should tell you > > > > > > > > >> something > > > > > about > > > > > > > this > > > > > > > > >> approach. > > > > > > > > >> > > > > > > > > >> *Requiring* JS means that an admin cannot turn off js to > > > > > (partially) > > > > > > > use > > > > > > > > >> core Hadoop UI. You'd *require* proper SSL (not self > > > > > > > > >> signed) > > > > setup > > > > > > to > > > > > > > > avoid > > > > > > > > >> JS injection, even if security of js libraries used is > > > > > > > > >> perfect, > > > > > > which > > > > > > > I > > > > > > > > >> doubt (search gmail/linkedin XSS). Client side rendering > > > > > completely > > > > > > > > breaks > > > > > > > > >> the workflows for ops who rely on text based > > > > > > > > >> terminal/emacs/vim > > > > > > > browsers > > > > > > > > >> (no js support) to monitor component UI. > > > > > > > > >> > > > > > > > > >> IMO, JS-only rendering belongs to social networking sites > > > > > > > > >> and/or > > > > > > SaaS > > > > > > > > >> front-ends, where full time UI/security specialists > > > > > > > > >> babysits UI > > > > > > > > changes. I > > > > > > > > >> think eventually most users will use a self servicing UI > in > > > > > > > > >> a > > > > SaaS > > > > > > > > >> front-end that uses REST/JMX API to get data from back-end > > > > > > components, > > > > > > > > >> besides their own app master/service UI. The > > > > priority/requirements > > > > > > for > > > > > > > > UI > > > > > > > > >> in core Hadoop should be security and correctness, which > > > > > > > > >> client > > > > > side > > > > > > > > >> templating cannot address properly so far. > > > > > > > > >> > > > > > > > > >> > > > > > > > > >> On Tue, Oct 22, 2013 at 3:59 PM, Haohui Mai < > > > > h...@hortonworks.com > > > > > > > > > > > > > > wrote: > > > > > > > > >> > > > > > > > > >> > Hi all, > > > > > > > > >> > > > > > > > > > >> > > > > > > > > > >> > Jing Zhao and I recently have reimplemented the > JSP-based > > > > > > > > >> > web > > > > > UIs > > > > > > in > > > > > > > > >> HTML 5 > > > > > > > > >> > applications (HDFS-5333). Based on our prelimanary > > > > > > > > >> > testing > > > > > results > > > > > > > we > > > > > > > > >> > believe thst the new web UIs of the namenodes and the > > > > > > > > >> > datanode > > > > > are > > > > > > > > ready > > > > > > > > >> > for everyday uses. > > > > > > > > >> > > > > > > > > > >> > You're more than welcome to try it out on trunk by > > > > > > > > >> > visiting > > > > > > http:// > > > > > > > > >> > <namenode>/dfshealth.html > > > > > > > > >> > > > > > > > > > >> > There are a number of benefits from this transition. > From > > > > > > > > >> > a > > > > > > > > developer's > > > > > > > > >> > prospective, the most notable one is *maintainability*: > > > > > > > > >> > > > > > > > > > >> > (1) The abstractions between the UI and the core server > > > > > > > > >> > are > > > > > > > > well-defined, > > > > > > > > >> > decoupling the UI and the core hadoop servers. > > > > > > > > >> > > > > > > > > > >> > (2) It allows us to deprecate the logic in the JSP > pages. > > > > > > > > >> > The > > > > > old > > > > > > > web > > > > > > > > UIs > > > > > > > > >> > have to duplicate the logic in the JSPs. The logic is > > > > > > > > >> > often > > > > > > > > out-of-dated > > > > > > > > >> > and not well-tested, which leads to broken pages and > > > > > > > > >> > security vulnerabilities(e.g. HDFS-5251, HDFS-5307, > > > > > > > > >> > HDFS-5308, > > > > HDFS-5317 > > > > > > and > > > > > > > > >> > HDFS-4901). The architecture of the new UIs prevent > these > > > > > > > > >> > bugs > > > > > at > > > > > > > the > > > > > > > > >> very > > > > > > > > >> > beginning. > > > > > > > > >> > > > > > > > > > >> > > > > > > > > > >> > I propose that deprecate the old, JSP-based web UIs in > > > > > > > > >> > 2.3. I > > > > > > opened > > > > > > > > >> > HDFS-5402 to track the relevant discussions. > > > > > > > > >> > > > > > > > > > >> > Your feedbacks are highly appreciated. > > > > > > > > >> > > > > > > > > > >> > > > > > > > > > >> > Sincerely, > > > > > > > > >> > > > > > > > > > >> > Haohui > > > > > > > > >> > > > > > > > > > >> > -- > > > > > > > > >> > CONFIDENTIALITY NOTICE > > > > > > > > >> > NOTICE: This message is intended for the use of the > > > > > > > > >> > individual > > > > > or > > > > > > > > entity > > > > > > > > >> to > > > > > > > > >> > which it is addressed and may contain information that > is > > > > > > > > confidential, > > > > > > > > >> > privileged and exempt from disclosure under applicable > > > > > > > > >> > law. If > > > > > the > > > > > > > > reader > > > > > > > > >> > of this message is not the intended recipient, you are > > > > > > > > >> > hereby > > > > > > > notified > > > > > > > > >> that > > > > > > > > >> > any printing, copying, dissemination, distribution, > > > > > > > > >> > disclosure > > > > > or > > > > > > > > >> > forwarding of this communication is strictly prohibited. > > > > > > > > >> > If > > > > you > > > > > > have > > > > > > > > >> > received this communication in error, please contact the > > > > sender > > > > > > > > >> immediately > > > > > > > > >> > and delete it from your system. Thank You. > > > > > > > > >> > > > > > > > > > >> > > > > > > > > > > > > > > > > > > -- > > > > > > > > > CONFIDENTIALITY NOTICE > > > > > > > > > NOTICE: This message is intended for the use of the > > > > > > > > > individual or > > > > > > > entity > > > > > > > > to > > > > > > > > > which it is addressed and may contain information that is > > > > > > confidential, > > > > > > > > > privileged and exempt from disclosure under applicable law. > > > > > > > > > If > > > > the > > > > > > > reader > > > > > > > > > of this message is not the intended recipient, you are > > > > > > > > > hereby > > > > > > notified > > > > > > > > that > > > > > > > > > any printing, copying, dissemination, distribution, > > > > > > > > > disclosure or forwarding of this communication is strictly > > > > > > > > > prohibited. If you > > > > > have > > > > > > > > > received this communication in error, please contact the > > > > > > > > > sender > > > > > > > > immediately > > > > > > > > > and delete it from your system. Thank You. > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > -- > > > > > > > Alejandro > > > > > > > > > > > > > > > > > > > -- > > > > > > CONFIDENTIALITY NOTICE > > > > > > NOTICE: This message is intended for the use of the individual or > > > > entity > > > > > to > > > > > > which it is addressed and may contain information that is > > > > > > confidential, privileged and exempt from disclosure under > > > > > > applicable law. If the > > > > reader > > > > > > of this message is not the intended recipient, you are hereby > > > > > > notified > > > > > that > > > > > > any printing, copying, dissemination, distribution, disclosure or > > > > > > forwarding of this communication is strictly prohibited. If you > > > > > > have received this communication in error, please contact the > > > > > > sender > > > > > immediately > > > > > > and delete it from your system. Thank You. > > > > > > > > > > > > > > > > > > > > > > > > > > -- > > > > > Alejandro > > > > > > > > > > > > > -- > > > > CONFIDENTIALITY NOTICE > > > > NOTICE: This message is intended for the use of the individual or > > > > entity to which it is addressed and may contain information that is > > > > confidential, privileged and exempt from disclosure under applicable > > > > law. If the reader of this message is not the intended recipient, you > > > > are hereby notified that any printing, copying, dissemination, > > > > distribution, disclosure or forwarding of this communication is > > > > strictly prohibited. If you have received this communication in > error, > > > > please contact the sender immediately and delete it from your system. > > > Thank You. > > > > > > > > > > > > > > > > -- > > > Alejandro > > > > > > > -- > > CONFIDENTIALITY NOTICE > > NOTICE: This message is intended for the use of the individual or entity > to > > which it is addressed and may contain information that is confidential, > > privileged and exempt from disclosure under applicable law. If the reader > > of this message is not the intended recipient, you are hereby notified > that > > any printing, copying, dissemination, distribution, disclosure or > > forwarding of this communication is strictly prohibited. If you have > > received this communication in error, please contact the sender > immediately > > and delete it from your system. Thank You. > > >