[
https://issues.apache.org/jira/browse/AMBARI-9721?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14333613#comment-14333613
]
Manish Nema commented on AMBARI-9721:
-------------------------------------
To resolve above problem, I am adding machine principals in
host-principal-keytab-list.csv file generated by Ambari and changing Jinja
script as follows to use appropriate host principal in storm.yaml, please review
/var/lib/ambari-server/resources/stacks/HDP/2.1/services/STORM/package/templates/storm.yaml.j2
ui.filter.params:
"type": "kerberos"
"kerberos.principal": "HTTP/{{_hostname_lowercase}}" <<<This is changed from
"{{storm_ui_jaas_principal}}"
"kerberos.keytab": "{{storm_ui_keytab_path}}"
> SPNEGO principals are not added for logviewer for all supervisor nodes for
> secure storm cluster
> -----------------------------------------------------------------------------------------------
>
> Key: AMBARI-9721
> URL: https://issues.apache.org/jira/browse/AMBARI-9721
> Project: Ambari
> Issue Type: Bug
> Components: ambari-admin, ambari-server
> Affects Versions: 1.7.0
> Environment: CentOS 6.6 64bit
> Java jdk1.7.0_67
> Kerberos enabled
> Reporter: Manish Nema
> Labels: ambari-web, storm-security
>
> While securing cluster through Ambari (Storm only cluster), SPNEGO principals
> for logviewers are not added for other supervisor nodes by ambari in
> spnego.service.keytab. It only adds principal for Nimbus nodes, this results
> in spnego.service.keytab only for Nimbus node.
> Logviewer service for other nodes (supervisor) are not started because of
> this. Copying the generated spnego.service.keytab from nimbus nodes to other
> nodes leads to following error
> 2015-02-20 12:49:11 o.a.h.s.a.s.AuthenticationFilter [WARN] Authentication
> exception: GSSException: Failure unspecified at GSS-API level (Mechanism
> level: Checksum failed)
> org.apache.hadoop.security.authentication.client.AuthenticationException:
> GSSException: Failure unspecified at GSS-API level (Mechanism level: Checksum
> failed)
> at
> org.apache.hadoop.security.authentication.server.KerberosAuthenticationHandler.authenticate(KerberosAuthenticationHandler.java:360)
> ~[hadoop-auth-2.4.0.jar:na]
> at
> org.apache.hadoop.security.authentication.server.AuthenticationFilter.doFilter(AuthenticationFilter.java:357)
> ~[hadoop-auth-2.4.0.jar:na]
> at
> org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1291)
> [jetty-servlet-7.6.13.v20130916.jar:7.6.13.v20130916]
> at
> org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:443)
> [jetty-servlet-7.6.13.v20130916.jar:7.6.13.v20130916]
> at
> org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1044)
> [jetty-server-7.6.13.v20130916.jar:7.6.13.v20130916]
> at
> org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:372)
> [jetty-servlet-7.6.13.v20130916.jar:7.6.13.v20130916]
> at
> org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:978)
> [jetty-server-7.6.13.v20130916.jar:7.6.13.v20130916]
> at
> org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:135)
> [jetty-server-7.6.13.v20130916.jar:7.6.13.v20130916]
> at
> org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:116)
> [jetty-server-7.6.13.v20130916.jar:7.6.13.v20130916]
> at org.eclipse.jetty.server.Server.handle(Server.java:369)
> [jetty-server-7.6.13.v20130916.jar:7.6.13.v20130916]
> at
> org.eclipse.jetty.server.AbstractHttpConnection.handleRequest(AbstractHttpConnection.java:486)
> [jetty-server-7.6.13.v20130916.jar:7.6.13.v20130916]
> at
> org.eclipse.jetty.server.AbstractHttpConnection.headerComplete(AbstractHttpConnection.java:933)
> [jetty-server-7.6.13.v20130916.jar:7.6.13.v20130916]
> at
> org.eclipse.jetty.server.AbstractHttpConnection$RequestHandler.headerComplete(AbstractHttpConnection.java:995)
> [jetty-server-7.6.13.v20130916.jar:7.6.13.v20130916]
> at org.eclipse.jetty.http.HttpParser.parseNext(HttpParser.java:644)
> [jetty-http-7.6.13.v20130916.jar:7.6.13.v20130916]
> at
> org.eclipse.jetty.http.HttpParser.parseAvailable(HttpParser.java:235)
> [jetty-http-7.6.13.v20130916.jar:7.6.13.v20130916]
> at
> org.eclipse.jetty.server.AsyncHttpConnection.handle(AsyncHttpConnection.java:82)
> [jetty-server-7.6.13.v20130916.jar:7.6.13.v20130916]
> at
> org.eclipse.jetty.io.nio.SelectChannelEndPoint.handle(SelectChannelEndPoint.java:668)
> [jetty-io-7.6.13.v20130916.jar:7.6.13.v20130916]
> at
> org.eclipse.jetty.io.nio.SelectChannelEndPoint$1.run(SelectChannelEndPoint.java:52)
> [jetty-io-7.6.13.v20130916.jar:7.6.13.v20130916]
> at
> org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:608)
> [jetty-util-7.6.13.v20130916.jar:7.6.13.v20130916]
> at
> org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:543)
> [jetty-util-7.6.13.v20130916.jar:7.6.13.v20130916]
> at java.lang.Thread.run(Thread.java:745) [na:1.7.0_67]
> Caused by: org.ietf.jgss.GSSException: Failure unspecified at GSS-API level
> (Mechanism level: Checksum failed)
> at
> sun.security.jgss.krb5.Krb5Context.acceptSecContext(Krb5Context.java:788)
> ~[na:1.7.0_67]
> at
> sun.security.jgss.GSSContextImpl.acceptSecContext(GSSContextImpl.java:342)
> ~[na:1.7.0_67]
> at
> sun.security.jgss.GSSContextImpl.acceptSecContext(GSSContextImpl.java:285)
> ~[na:1.7.0_67]
> at
> sun.security.jgss.spnego.SpNegoContext.GSS_acceptSecContext(SpNegoContext.java:875)
> ~[na:1.7.0_67]
> at
> sun.security.jgss.spnego.SpNegoContext.acceptSecContext(SpNegoContext.java:548)
> ~[na:1.7.0_67]
> at
> sun.security.jgss.GSSContextImpl.acceptSecContext(GSSContextImpl.java:342)
> ~[na:1.7.0_67]
> at
> sun.security.jgss.GSSContextImpl.acceptSecContext(GSSContextImpl.java:285)
> ~[na:1.7.0_67]
> at
> org.apache.hadoop.security.authentication.server.KerberosAuthenticationHandler$2.run(KerberosAuthenticationHandler.java:327)
> ~[hadoop-auth-2.4.0.jar:na]
> at
> org.apache.hadoop.security.authentication.server.KerberosAuthenticationHandler$2.run(KerberosAuthenticationHandler.java:309)
> ~[hadoop-auth-2.4.0.jar:na]
> at java.security.AccessController.doPrivileged(Native Method)
> ~[na:1.7.0_67]
> at javax.security.auth.Subject.doAs(Subject.java:415) ~[na:1.7.0_67]
> at
> org.apache.hadoop.security.authentication.server.KerberosAuthenticationHandler.authenticate(KerberosAuthenticationHandler.java:309)
> ~[hadoop-auth-2.4.0.jar:na]
> ... 20 common frames omitted
> Caused by: sun.security.krb5.KrbCryptoException: Checksum failed
> at
> sun.security.krb5.internal.crypto.Aes256CtsHmacSha1EType.decrypt(Aes256CtsHmacSha1EType.java:102)
> ~[na:1.7.0_67]
> at
> sun.security.krb5.internal.crypto.Aes256CtsHmacSha1EType.decrypt(Aes256CtsHmacSha1EType.java:94)
> ~[na:1.7.0_67]
> at sun.security.krb5.EncryptedData.decrypt(EncryptedData.java:177)
> ~[na:1.7.0_67]
> at sun.security.krb5.KrbApReq.authenticate(KrbApReq.java:278)
> ~[na:1.7.0_67]
> at sun.security.krb5.KrbApReq.<init>(KrbApReq.java:144) ~[na:1.7.0_67]
> at
> sun.security.jgss.krb5.InitSecContextToken.<init>(InitSecContextToken.java:108)
> ~[na:1.7.0_67]
> at
> sun.security.jgss.krb5.Krb5Context.acceptSecContext(Krb5Context.java:771)
> ~[na:1.7.0_67]
> ... 31 common frames omitted
> Caused by: java.security.GeneralSecurityException: Checksum failed
> at
> sun.security.krb5.internal.crypto.dk.AesDkCrypto.decryptCTS(AesDkCrypto.java:451)
> ~[na:1.7.0_67]
> at
> sun.security.krb5.internal.crypto.dk.AesDkCrypto.decrypt(AesDkCrypto.java:272)
> ~[na:1.7.0_67]
> at sun.security.krb5.internal.crypto.Aes256.decrypt(Aes256.java:76)
> ~[na:1.7.0_67]
> at
> sun.security.krb5.internal.crypto.Aes256CtsHmacSha1EType.decrypt(Aes256CtsHmacSha1EType.java:100)
> ~[na:1.7.0_67]
> ... 37 common frames omitted
> Also Ambari generates storm.yaml file on restarts of supervisor nodes and
> this presently generates "kerberos.principal": "HTTP/<nimbus.host>" only
> whereas it should generate kerberos principal for appropriate
> logviewer/supervisor node.
> ui.filter.params:
> "type": "kerberos"
> "kerberos.principal": "HTTP/two.cluster"
> "kerberos.keytab": "/etc/security/keytabs/spnego.service.keytab"
> "kerberos.name.rules": "DEFAULT"
> This leads to logviewer process initialize only with nimbus principal and
> later on generate error while browsing UI of logviewer process with following
> error
> after generating correct keytab which contains HTTP principals for each host
> and distributing it to all supervisor/logviewer nodes, logviewer starts
> properly but that require manual changes to storm.yaml file to change
> kerberos.principal for that node and manual restart to logviewer process.
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)