You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@ambari.apache.org by "Robert Levas (JIRA)" <ji...@apache.org> on 2015/01/01 01:05:13 UTC

[jira] [Updated] (AMBARI-8485) Hive service components should indicate security state

     [ https://issues.apache.org/jira/browse/AMBARI-8485?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Robert Levas updated AMBARI-8485:
---------------------------------
    Attachment: AMBARI-8485_01.patch

* Added security state logic
* Updated {{common-services/HIVE/0.12.0.2.0/package/scripts/params.py}} to unconditionally set _hdfs_user_ for {{HDFSDirectory}} resource rather than use _hdfs_principal_name_ if _security_enabled_ is true because it was causing username errors.

Patch  File [^AMBARI-8485_01.patch]

> Hive service components should indicate security state
> ------------------------------------------------------
>
>                 Key: AMBARI-8485
>                 URL: https://issues.apache.org/jira/browse/AMBARI-8485
>             Project: Ambari
>          Issue Type: Improvement
>          Components: ambari-server, stacks
>    Affects Versions: 2.0.0
>            Reporter: Robert Levas
>            Assignee: Robert Levas
>              Labels: hcatalog, hive, kerberos, metastore, mysql, security
>             Fix For: 2.0.0
>
>         Attachments: AMBARI-8485_01.patch
>
>
> The Hive service components should indicate security state when queried by Ambari Agent via STATUS_COMMAND.  Each component should determine it's state as follows:
> h3. HIVE_METASTORE
> h4. Indicators
> * Command JSON
> ** config\['configurations']\['cluster-env']\['security_enabled'] 
> *** = “true”
> * Configuration File: params.hive_client_conf_dir + ‘hive-site.xml’
> ** hive.metastore.sasl.enabled"
> *** = "true"
> *** required 
> ** hive.server2.authentication
> *** = “kerberos”
> *** required
> ** hive.security.authorization.enabled
> *** = “true”
> *** required
> ** hive.metastore.kerberos.principal
> *** not empty
> *** required
> ** hive.metastore.kerberos.keytab.file
> *** not empty
> *** path exists and is readable
> *** required
> h4. Pseudocode
> {code}
> if indicators imply security is on and validate
>     if kinit(have metastore principal) succeeds
>         state = SECURED_KERBEROS
>     else
>         state = ERROR 
> else
>     state = UNSECURED
> {code}
> h3. HIVE_SERVER
> h4. Indicators
> * Command JSON
> ** config\['configurations']\['cluster-env']\['security_enabled'] 
> *** = “true”
> * Configuration File: params.hive_client_conf_dir + ‘hive-site.xml’
> ** hive.metastore.sasl.enabled"
> *** = "true"
> *** required 
> ** hive.server2.authentication
> *** = “kerberos”
> *** required
> ** hive.security.authorization.enabled
> *** = “true”
> *** required
> ** hive.server2.authentication.kerberos.principal
> *** not empty
> *** required
> ** hive.server2.authentication.kerberos.keytab
> *** not empty
> *** path exists and is readable
> *** required
> ** hive.server2.authentication.spnego.principal
> *** not empty
> *** required
> ** hive.server2.authentication.spnego.keytab
> *** not empty
> *** path exists and is readable
> *** required
> h4. Pseudocode
> {code}
> if indicators imply security is on and validate
>     if kinit(hive server principal) succeeds
>         state = SECURED_KERBEROS
>     else
>         state = ERROR 
> else
>     state = UNSECURED
> {code}
> h3. WEBHCAT_SERVER
> h4. Indicators
> * Command JSON
> ** config\['configurations']\['cluster-env']\['security_enabled'] 
> *** = “true”
> * Configuration File: params.hive_client_conf_dir + ‘hive-site.xml’
> ** hive.metastore.sasl.enabled"
> *** = "true"
> *** required 
> ** hive.server2.authentication
> *** = “kerberos”
> *** required
> ** hive.security.authorization.enabled
> *** = “true”
> *** required
> * Configuration File: params.config_dir + ‘webhcat-site.xml’
> ** templeton.kerberos.secret
> *** = “secret”
> *** required
> ** templeton.kerberos.principal
> *** not empty
> *** required
> ** templeton.kerberos.keytab
> *** not empty
> *** path exists and is readable
> *** required
> h4. Pseudocode
> {code}
> if indicators imply security is on and validate
>     if kinit(webhcat server principal) succeeds
>         state = SECURED_KERBEROS
>     else
>         state = ERROR 
> else
>     state = UNSECURED
> {code}
> h3. HIVE_CLIENT
> h4. Indicators
> * Command JSON
> ** config\['configurations']\['cluster-env']\['security_enabled'] 
> *** = “true”
> h4. Pseudocode
> {code}
> if indicators imply security is on and validate
>     state = SECURED_KERBEROS
> else
>     state = UNSECURED
> {code}
> _*Note*_: Due to the _cost_ of calling {{kinit}} results should be cached for a period of time before retrying.  This may be an issue depending on the frequency of the heartbeat timeout.
> _*Note*_: {{kinit}} calls should specify a _temporary_ cache file which should be destroyed after command is executed - BUG-29477



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)