用户授权
开启用户认证后需要鉴权才可以进行身份验证,此章节介绍如何鉴权。
操作前准备
- 创建一个HBase集群,开启用户认证,请参见开启/禁用用户认证。
- 新建集群开启安全通道加密,请参见HBase安全通道加密。
操作步骤
- 登录表格存储服务管理控制台。
- 控制台左上角,选择区域。
- 单击左侧“帮助”,进入帮助界面。
- 单击帮助界面右侧“常用链接”中的“hbase2.x客户端下载”,下载HBase客户端并安装客户端,请参见手动安装客户端(也可使用一键部署客户端安装)。
- 进入安装客户端目录下进行客户端配置,将如下配置添加到客户端conf目录下的hbase-site.xml文件中。
- 新增固定配置参数,直接复制如下参数到客户端的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文件中配置IAM的账户名和用户名,需要添加以下字段。
<property> <name>iam.user.domain.name</name> <value>待认证的IAM账户名</value> </property> <property> <name>iam.user.name</name> <value>待认证的IAM用户名</value> </property>
图1 添加用户名- 如果需要给其他用户授权,此处填写创建集群的账户和用户名。如果需要用已经授权的账号访问集群,此处填写授权的账号和用户名。
- 创建集群的用户是管理员用户可以给其他用户授权。
- 配置zookeeper地址到配置文件。
在客户端解压目录下,打开“hbase/conf/hbase-site.xml”文件,配置如下参数:
- “hbase.zookeeper.quorum”:该参数值为在集群管理列表中查找的对应集群的“ZK链接地址”。
登录表格存储服务管理控制台,在左侧导航树单击“集群管理”,然后在集群列表中找到所需要的集群,并获取相应的“ZK链接地址”,配置在“hbase/conf/hbase-site.xml”文件,请参见图3。
图2 查看zk链接地址 - 检查是否存在该配置项“mapreduce.cluster.local.dir”,如果不存在,请添加该配置项。
- “hbase.zookeeper.quorum”:该参数值为在集群管理列表中查找的对应集群的“ZK链接地址”。
如果集群开启了安全通道加密,需要添加如下参数到客户端的hbase-site.xml中,如果未开启安全通道加密,无需关注。<property> <name>hbase.rpc.protection</name> <value>privacy</value> </property>
- 新增固定配置参数,直接复制如下参数到客户端的hbase-site.xml文件中。
- 使用SSH工具登录,执行“bin/hbase shell”,启动Shell访问集群,验证提示需要输入密码。
图4 提示输入密码
- 输入错误的密码,单击回车键,验证是否可以启动shell访问集群。
图5 验证异常
- 重复步骤6,输入正确的密码,成功启动shell访问HBase集群。
- 新建数据表,并写入数据。
create 't1', 'f1'
插入数据。put 't1', '123', 'f1:c1', 'abc'
查看数据。
scan 't1'
图6 插入数据图7 查看数据 - 给用户授权。
grant '用户名$租户名' ,'权限', '数据库名:表名'
例如:授予用户hbase_xxxx数据表“test”的可读权限。
grant 'hbase_xxx$test_xxx' ,'R', 'test'
- 用户名$租户名:“租户名”为IAM账号中的主账号,“用户名”为IAM账号中的子账户。
- 权限:有READ('R')、WRITE('W')、CREATE('C')、ADMIN('A')、EXEC('X')三种权限。
- 可读权限用“R”表示。
- 可写权限用“W”表示。
- 创建、删除数据表用“C”表示。
- 管理员权限,执行集群操作用“A”表示。
- 调用endpoint的权限用“X”表示。
- 数据库名:表名:表示在某数据下的数据表,如果表名前没有数据库名则表示是default数据库中的表。
- 退出hbase shell重复步骤5、步骤6,将配置中的iam.user.domain.name和iam.user.name修改为授权的租户名和用户名,进入客户端使用授权的用户名密码访问。
- 授权验证。
- 查看“t1”数据表中的数据。
scan 't1'
图8 使用授权账号查看数据表test - 数据表“t1”是否可以插入新的数据,插入失败表示授权成功。
put 't1', '123', 'f1:c1', 'abcd'
图9 插入数据失败图
- 查看“t1”数据表中的数据。
- 如果想关闭用户认证,在集群管理禁用用户认证,请参考禁用用户认证步骤。