[ 
https://issues.apache.org/jira/browse/TRAFODION-109?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15324539#comment-15324539
 ] 

Roberta Marton commented on TRAFODION-109:
------------------------------------------

The first phase of automation with Kerberos is ready.

The following use cases are supported

I.      New secure install: Customer installs Trafodion on a cluster with 
secure Hadoop. There is no existing Trafodion installation.
II.     Conversion from non-secure to secure: Customer has Trafodion installed 
on a non-secure Hadoop cluster. Customer enables Hadoop security on this 
existing cluster. Customer runs a Trafodion script to enable Hadoop security 
integration with Trafodion.
When Kerberos is enabled in Trafodion, the installation process:

•       Adds a Trafodion principal in Kerberos, one per node.  Name of 
principal: 
 trafodion/`hostname –f`@realm
•       Creates a keytab for each principal (using a keytab allows access 
without prompting for a password) and distributes keytab to each node. Default 
name of keytab (same for all nodes) is
trafodion.service.keytab
•       Adds a "kinit" command to the trafodion .bashrc script.  A new ticket 
granting ticket will be initialized if one is not present when someone logs on 
as the trafodion ID. 
•       Starts a ticket renewal server procedure, started by krb5service, 
renewal service process is krb5check.

The ticket renewal service renews tickets up until the maximum number of 
renewals allowed.  So if your ticket lifetime is 1 day and the number of 
renewals is 7 days, the ticket renewal service automatically renews tickets 6 
times.  Once the ticket granting ticket expires, then they must be initialized 
again to continue running Trafodion.  Connecting to each node as the Trafodion 
ID will initialize ticket granting tickets if one does not exist.  The ticket 
renewal service also has an 'init' option to recreate the ticket granting 
ticket.

The ticket renewal service consists of three new scripts.  

    - krb5service which manages the service
    - krb5check – daemon that wakes up periodically to log ticket status and 
renew tickets
    - krb5functions - contains common functions used by krb5service & krb5check


The following files were changed:

•       The trafodion_install script (use case 1) was changed to:
o       Call new script traf_secure_setup to ask security related questions
o       Call new script trafodion_add_kerberos to install Kerberos feature
o       Call new script trafodion_add_ldap to install LDAP feature
o       Remove LDAP installation (traf_authentication_setup) from traf_sqgen
o       Call new script traf_secure to perform sqlci security commands.

•       The trafodion_uninstaller script was changed:
o       Destroy any cached Kerberos tickets
o       Stop running the ticket renewal process

•       The traf_config_setup script was changed to remove LDAP related 
questions, all security related tasks are now part of the traf_secure_setup 
script.

•       The traf_cloudera_mods and traf_hortonworks_mods scripts were changed: 
o       If Kerberos is enabled (SECURE_HADOOP == Y), then find the HDFS keytab 
and principal and generate a ticket.  This is needed to perform hdfs related 
requests. 
o       The traf_hortonworks_mods scripts also adds the HBase coprocessor's 
needed to enable security at the same time it adds Trafodion coprocessors.  
This is done to work around an existing bug.

•       The sqstart script was changed to not start Trafodion if Kerberos is 
enabled on the system but no valid Trafodion ticket was found.

The following scripts were added:

•       traf_add_kerberos - is responsible for:
o       Creating and distributing Kerberos principals and keytabs.  The script 
always asks for the KDC admin password since this value is not stored anywhere 
for security reasons.
o       Changing the trafodion ID's .bashrc shell to init the Kerberos ticket 
granting ticket and start the automatic ticket renewal agent.
o       Granting trafodion ID privileges in HBase including create, read, 
write, and execute.

•       traf_add_ldap – is responsible for:
o       Verifying that the LDAP configuration file is correct
o       Creating and propagating the LDAP configuration file
o       Updating sqenvcom.sh to indicate that authentication is enabled (set to 
YES).

•       traf_secure – is responsible for:
o       starting Trafodion, if not already started
o       initializing authorization
o       altering users to map predefined users to existing LDAP users.

•       traf_secure_setup which ask security related questions for Kerberos and 
LDAP

•       trafodion_secure_install – (use case 2) adds Kerberos to an existing 
system:
o       Stops Trafodion, if already running
o       Calls the new script traf_secure_setup to ask security related questions
o       Calls traf_add_kerberos
o       Calls traf_add_ldap 
o       Calls the new script traf_secure to start Trafodion and perform sqlci 
security commands.

The script traf_authentication_setup is no longer being called by traf_sqgen 
but it is needed for testing purposes – it can be used to setup authentication 
and authorization when Kerberos is not enabled.


There is still more work to be done to complete this work.  The following 
contains the remaining tasks as of this delivery - will write up separate 
JIRA's for these so they can be tracked.

- Add checks for security configuration issues at the same time other config 
problems are checked (traf_config_check) - e.g. valid kerberos admin principle 
defined.
- Add a way to securely store passwords for Trafodion use.
- Fix a problem we have supporting a Kerberized Zookeeper. 
- Add a mechanism that does not require Trafodion install or secure install to 
use a Kerberos Admin password. Also remove passwords in the clear from being 
stored in the config file.
- Support Kerberos for a vanilla apache release.
- Add Kerberos support to our test environment.
- Fix issues using signed certificates
- Create a monitoring process that checks on ticket expiration across all nodes 
- also, if desired, support automatically initialize of new tickets when they 
expire. 
- Update installation documentation to include steps for Kerberizing Trafodion
- Support conversion from secure to non-secure: Customer has Trafodion 
installed on a secure Hadoop cluster. Customer disables Hadoop security on this 
existing cluster. Customer runs a Trafodion script to disable Hadoop security 
integration with Trafodion. 

> LP Blueprint: instrument-secure-hadoop - Instrument Trafodion to work with 
> Secure Hadoop
> ----------------------------------------------------------------------------------------
>
>                 Key: TRAFODION-109
>                 URL: https://issues.apache.org/jira/browse/TRAFODION-109
>             Project: Apache Trafodion
>          Issue Type: New Feature
>          Components: sql-security
>            Reporter: Roberta Marton
>            Assignee: Roberta Marton
>            Priority: Critical
>             Fix For: 1.1 (pre-incubation)
>
>
> The next step to enhance Trafodion security is to seamlessly integrate within 
> theSecure  Hadoop eco-system.
>  
> Trafodion is installed on top of the Hadoop and supports authentication 
> through OpenLDAP and authorization through Trafodion; however, Hadoop, by 
> itself runs in a non-secure mode. This blueprint defines a task to configure 
> Trafodion to run in with Secure Hadoop.  When the secure mode is 
> instrumented, each user and service will be authenticated by Kerberos which 
> include all products Trafodion uses in its eco-system. The means that  secure 
> versions of Hadoop, HBase, Zookeeper, and others will be integrated.



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

Reply via email to