更新时间:2024-07-22 GMT+08:00
配置应用代码
功能介绍
如果开启了用户认证功能,就需要管理员账号给访问用户授权以及配置相关参数,这样才可以访问HBase集群。
必须使用CloudTable控制台下载的2.x版本客户端,且客户端中包含jar包,才能使用用户认证功能。
操作步骤
- 复制如下参数到应用的hbase-site.xml文件中。
<property > <name>hbase.security.authentication</name> <value>iam</value> </property> <property > <name>hadoop.security.authentication</name> <value>TOKEN</value> </property> <property> <name>hbase.client.userprovider.class</name> <value>org.apache.hadoop.hbase.security.UserProviderExtend</value> </property> <property > <name>hbase.zookeeper.custom.auth.enabled</name> <value>true</value> </property> <property > <name>zookeeper.custom.authinfo.providers</name> <value>org.apache.hadoop.hbase.security.zookeeper.HBaseIAMAuthInfoProvider</value> </property> <property> <name>iam.user.password.encrypted</name> <value>false</value> </property> <property> <name>hbase.zookeeper.authProvider.scheme</name> <value>iam</value> </property> <property > <name>hbase.client.sasl.provider.class</name> <value>org.apache.hadoop.hbase.security.provider.IAMProviderSelector</value> </property> <property > <name>hbase.client.sasl.provider.extras</name> <value>org.apache.hadoop.hbase.security.provider.IAMSaslClientAuthenticationProvider</value> </property> <property> <name>hbase.rpc.client.impl</name> <value>org.apache.hadoop.hbase.ipc.BlockingRpcClient</value> </property>
如果集群开启了安全通道,还需要添加如下参数到应用的hbase-site.xml中。<property> <name>hbase.rpc.protection</name> <value>privacy</value> </property>
- 参考创建Configuration对修改后的配置文件进行加载。
- 参考如下代码,加载用于认证的用户信息。样例代码中的IAM_USER_DOMAIN,IAM_USER_NAME,IAM_USER_PASSWORD需要根据使用的应用提前配置在环境变量中。
// IAM账户名 String domainName= System.getenv("IAM_USER_DOMAIN"); // IAM用户名(子账号名) String userName = System.getenv("IAM_USER_NAME"); // 基于信息安全考虑,强烈建议将在配置文件或者环境变量中的密码配置为加密后的密文, // 然后在代码中将密码解密后使用。 String userPassword = ((com.huawei.hadoop.hbase.crypto.Crypt) encryptedPass -> { // 需要开发人员根据密文的加密方式进行对应的解密操作并返回。 return "decryptedPass"; }).decrypt(System.getenv("IAM_USER_PASSWORD")); conf.set(org.apache.zookeeper.security.common.IAMConstants.IAM_USER_DOMAIN_NAME, domainName); conf.set(org.apache.zookeeper.security.common.IAMConstants.IAM_USER_NAME, userName); conf.set(org.apache.zookeeper.security.common.IAMConstants.IAM_USER_PASSWORD, userPassword);
- 参考创建Connection,使用更新后的conf对象创建HBase的连接。
父主题: 样例代码说明