在Sqoop中管理密码的关键提示

本文介绍了在使用Sqoop进行Hadoop数据传输时,如何安全地管理和自动化处理密码,包括使用受保护的文件、从数据库读取密码、使用Expect脚本以及HadoopCredentialProviderAPI等方法。

Sqoop是用于Hadoop的流行数据传输工具。 Sqoop允许从结构化数据存储(如关系数据库,企业数据仓库和NoSQL数据存储)轻松导入和导出数据。 Sqoop还与Hive,HBase和Oozie等基于Hadoop的系统集成。

在此博客文章中,我将介绍可用于在Sqoop中管理密码的各种选项。 Sqoop是一个非常稳定且易于使用的工具,用于将数据传入和传出Hadoop。 但是,如果要自动执行导入/导出过程,则密码必须在计划文本中,这可能会被滥用。 以下是应对这一挑战的一些解决方案。

1.在文件系统中使用受保护的文件

为产品和开发创建单独的文件(将单独的帐户用于产品和开发总是一个好习惯)。

根据用户设置文件权限

ProdFile,只有Prod用户可以访问

-rw-------  1 vgunnuProd  staff   1.1M Oct  6  2014 password.txt

开发文件,授予组读取权限–在团队成员之间共享文件

-rw-r-----  1 vgunnuDev  staff   1.1M Oct  6  2014 password.txt

sqoop import --connect jdbc:mysql://mapr.com/sqoop \
	 		--username sqoop \
			--password-file /mapr/democluster/opt/passwords/prodpass.txt --table vgunnu

2.从数据库中读取密码

维护Dev和PROD数据库表,并利用MySQL授权权限锁定PROD密码表,以便允许从Prod边缘节点访问某些用户。

# Read password from database
# Select Password from mapr.Prod where applicationdb='mapr.vgunnu'
echo -n $Password > /mapr/democluster/opt/passwords/prodpass.txt
sqoop import --connect jdbc:mysql://mapr.com/sqoop \
	 		--username vgunnu \
			--password-file /mapr/democluster/opt/passwords/prodpass.txt --table vgunnu
rm /mapr/democluster/opt/passwords/prodpass.txt

3.使用数据库和Expect脚本

在上面的选项中,我们可以使用linux spawn and Expect脚本来代替将密码保存到文件中。

#!/bin/bash
# Read password from database
# Select Password from mapr.Prod where applicationdb='mapr.vgunnu'
# Read password to variable pwd
/usr/bin/expect «EOF
    spawn sqoop import --connect jdbc:mysql://mapr.com/sqoop --username vgunnu -P --table vgunnu
    expect "Enter password:"
    send "$pwd\r\n"
    set timeout -1  # Wait for Sqoop to finish
    expect "~~~~~~~~~~~~"
    wait
EOF

4.使用Hadoop CredentialProvider API

在Hadoop 2.6中,引入了一项基本功能–凭据API。 Hadoop中的CredentialProvider API允许分离应用程序以及它们如何存储所需的密码/秘密。 使用Sqoop 1.4.5时,Sqoop支持credentail API密钥库。

生成加密的credentail密钥库:

[mapr@maprdemo ~]$ hadoop credential create msql.vgunnudb -provider jceks://maprfs/user/mapr/mysql.password.m.jceks
Enter password: 
Enter password again: 
msql.vgunnudb has been successfully created.
org.apache.hadoop.security.alias.JavaKeyStoreProvider has been updated.

[mapr@maprdemo ~]$ hadoop credential list -provider jceks://maprfs/user/mapr/mysql.password.m.jceks
Listing aliases for CredentialProvider: jceks://maprfs/user/mapr/mysql.password.m.jceks
msql.vgunnudb

sqoop import -Dhadoop.security.credential.provider.path=jceks://maprfs/user/mapr/mysql.password.m.jceks \
			--connect jdbc:mysql://mapr.com/sqoop \
	 		--username vgunnu \
			--password-file /mapr/democluster/opt/passwords/prodpass.txt --table vgunnu \
             -–password-alias msql.vgunnudb

在此博客文章中,您了解了可用于在Sqoop中管理密码的不同选项。 如果您还有其他问题,请在下面的评论部分中提问。

翻译自: https://www.javacodegeeks.com/2016/03/key-tips-managing-passwords-sqoop.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值