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