概述

    阿里云HBase安全包括多方面的措施,主要构成部分有:网络隔离,白名单,身份认证,权限控制,数据加密等,具体介绍可

参考文章底部链接。本文主要是阿里云hbase安全实战体验篇,介绍如何开通使用HBase安全功能,并涉及身份认证以及权限控制配合

使用介绍。
    首先还是回顾一下我们使用云HBase的时候,会涉及哪些主要的安全防护:
     
    如上图,最外层是网络隔离,用户hbase实例存在于云上用户自己单独的vpc环境内,其他用户访问不了云hbase实例。要想与hbase
网络连通,要么用户部署用户访问程序到 云 hbase实例相同vpc下的ecs上,要么使用公网访问的方式。此外,还需要填写网络白名单,
把用户的ecs配置到hbase实例的白名单上。如:我云上的机器ip是42.120.74.94,那么我配置到白名单就应该是如下:    
    大多数用户使用hbase的时候,都默认只使用了上述这些方式进行安全控制,实际上,阿里云HBase还支持用户开启kerberos安全
身份认证以及hbase ACL权限控制。大多数用户场景其实不开这些都是可以的,毕竟他们使用hbase的时候,只作为自己内部业务系统的数据库使用。
云HBase安全使用场景
    那么我们可以思考一个问题,云上的HBase在什么样的场景下不需要开启这个功能也可以达到生产要求?以及什么样的场景推荐开
启这个安全功能?为了形象描述,这里举个例子说明。   
例:某车联网创业公司,创业之初他们使用阿里云HBase数据库作为车的轨迹点数据存储,供用户查询自己的历史路程和足迹。该公司的业务部署架构如下:       
如上图所示,大部分用户使用hbase都是内部自己系统独享使用。hbase系统只作为业务系统的数据库访问,没有任何第3方伙伴需要访问这个数据库,那么
这个时候该车联网创业公司其实像上图一样,利用网络隔离和白名单控制就达到生产环境要求了。   
后来随着业务的发展,创业公司需要挖掘这些轨迹隐患的更多内在含义,与某第三方数据挖掘公司合作,要求第三方每天访问此HBase存储
的轨迹数据,并按需求生成报表。这个时候,HBase就涉及到多责任方访问的安全问题,那么他就要开启这个云HBase安全服务,避免不必要的误操作或者越权纷争等。 
    如下图:车连网公司只给第三方数据挖掘公司一个只读账号,只让他访问特定的轨迹数据,而不能进行其他任何操作。        
    随着该车联网创业公司的数据挖掘指标越来越有意思,客户不断壮大,公司也在不断扩大,公司开始把研发团队拆分成数据业务
部门和官网bbs部门。不同部门之间共用一个ecs资源部署服务,利用云HBase安全,也可以把他们间的权限进行隔离控制,防止越界操作,部署结构如下图:    
    
    综上所述,如果HBase是用户自己独享使用的,可以不开启云HBase 底层安全防护;如果你想让除了你以外的其他业务方、不同部门员工来
访问hbase数据库实例的时候,或许应该要考虑开启云hbase安全来进行身份认证和权限控制,实践效果更佳。

阿里云hbase安全功能之初体验

    阿里云HBase安全,主要由alibaba和Intel合作开发的HAS(Hadoop authortication
service)实现的安全认证,支持kerberos协议并简化了使用方式;同时配合使用hbase
ACL实现用户权限控制,可以控制精确到列级别。下面我们一步步体验一下功能。
申请安装安全集群
    目前采用咨询沟通后开放形式来启用云HBase安全,后续会全网开放HBase安全功能选项。首先 钉钉扫码联系“云HBase答疑”,  咨询客服并确认您需
要开通云HBase安全功能。

    开通后,HBase的访问都需要提供用户名密码,客服会给你HBase管理员的初始账户密码,比如我这里初始管理账户的用户密码是root/123456。
另外,客服会给你最新的alihbase-1.1.4 client 安全版本tar包。

验证安全访问
   
接下来访问HBase只能像MySQL一样,提供账户密码才能访问。我们来先验证一下安全HBase的访问效果。解压alihbase-1.1.4-rc2-bin.tar.gz,修改
conf目录下的hbase-site.xml,添加以下配置:其中 zk地址替换为自己的zk访问地址。 <property>
<name>hbase.zookeeper.quorum</name> <value>zk1,zk2,zk3</value> </property>
<property> <name>username</name> <value>root</value> </property> <property>
<name>password</name> <value>123456</value> </property>
    配置完后,我们进行正常hbase shell访问了,如图:


    当我们没有使用正确的用户名或者密码不对的时候,访问会报错如下:

    会报ERROR: No valid credentials provided (Mechanism level: Failed to find
any kerberos tgt),通常密码错误、用户不存在等原因,导致登录
失败后错误都是显示这个。还有就是开启安全的情况下,如果你没有填写用户名或密码任意一个时,那么会比较明显的提醒你,你正在访问的是
一个安全集群,你需要提供账户密码进行访问,如下图显示第3行末尾显示,“you must provide username/password” 字眼。


修改root管理员密码
    在上述验证通过情况下,执行脚本 bin/hasopt.sh脚本进入账户管理命令行:
    修改成功后,后续的root访问就必须使用最新的密码了。也可以使用 resetown  root  <old_password>
<new_password> 命令行修改正在使用的root用户密码
用户管理
    如上述,我们可以使用用户管理命令行对用户进行管理,初始我们只有root管理员账户,可以使用管理工具对用户进行管理,具体命令功能说明如表: 
命令说明使用样例及参数使用限制
add 或 adduser添加用户add <username> <password> 只能root用户
delete 或 deleteuser删除用户delete <username>只能root用户
disable 或 disableverification关闭身份验证无参数只能root用户
enable 或 enableverification开启身份认证无参数只能root用户
reset 或 resetpassword重设用户密码(root为普通用户重置)reset只能root用户
list 或 listalluserlist所以用户名无参数只能root用户
resetown 或 resetmyownpwd重设自己的密码reset  <myusername> <origianl_password>
<new_password>无
q 或 quit 或 exit退出用户管理命令行无参数无
cmd 或 help 或 输入不存在命令时显示命令行帮助说明无参数无   
权限控制管理
    上述我们使用的root管理员用户进行访问,它是hbase实例的superuser。接下来我们继续就着上述车联网创业公司的例子,分别给不同
部门使用人员分配不同的权限:
用户表车联网数据库部门车联网app/官网业务部门第三方数据挖掘合作公司
car_track可读可写,可修改表结构可读可写,不可修改表结构可读,不可写,不可修改表结构
car_info可读可写,可修改表结构可读可写,不可修改表结构可读,不可写,不可修改表结构
user_info可读可写,可修改表结构可读可写,不可修改表结构不可读不可写   
根据上述表格的权限控制需求,我们为数据部门创建datauser用户,为业务部门创建bizuser用户,为第三方合作公司创建partneruser用户。如图:
    接下来执行hbase shell使用grant命令,分别对datauser/bizuser/partneruser 分配不同的权限。执行命令如图:
    如上,我们就可以简单的从不部门基本权限控制他们的访问hbase动作了。HBase ACL最小支持列级别粒度的权限控制。但是为了方便维护,
建议用户设计权限控制方案的时候,可以简洁一点。    HBase 权限控制主要使用两个命令管理,grant和revoke命令,具体使用方法如下:
grant <user> <permissions> [<@namespace> [<table> [<column family> [<column
qualifier>]]] For example: hbase> grant 'bobsmith', 'RWXCA' hbase> grant
'@admins', 'RWXCA' hbase> grant 'bobsmith', 'RWXCA', '@ns1' hbase> grant
'bobsmith', 'RW', 't1', 'f1', 'col1' hbase> grant 'bobsmith', 'RW', 'ns1:t1',
'f1', ‘col1’ revoke <user> [<@namespace> [<table> [<column family> [<column
qualifier>]]]] For example: hbase> revoke 'bobsmith' hbase> revoke '@admins'
hbase> revoke 'bobsmith', '@ns1' hbase> revoke 'bobsmith', 't1', 'f1', 'col1'
hbase> revoke 'bobsmith', 'ns1:t1', 'f1', 'col1'    最小支持列级别控制权限。
小结
 
 当我们有多用户访问安全风险的时候,使用云hbase安全,推荐开启云HBase安全功能,对用户的访问进行身份认证和权限控制,有效的进行公司间或部门间的合作时,对hbase的访问控制管理。
   阿里云hbase 安全支持:    ​​1)非开启安全集群可以升级到开启安全集群     ​​2)开启状态实例申请回滚到非开启状态 
    ​​3)申请临时关闭身份认证    4)阿里云hbase间跨域访问,典型的如copytable,本地client跨域安全访问两集群等    5)用户管理
    ​6) ​ 权限管理,HBase ACL最小支持列级别权限控制    欢迎有兴趣或需求的用户,钉钉扫码 联系 “云HBase答疑” 客服了解更多

友情链接
KaDraw流程图
API参考文档
OK工具箱
云服务器优惠
阿里云优惠券
腾讯云优惠券
华为云优惠券
站点信息
问题反馈
邮箱:[email protected]
QQ群:637538335
关注微信