阿里云HBase安全系列 —— 初体验

概述

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

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

使用介绍。

    首先还是回顾一下我们使用云HBase的时候,会涉及哪些主要的安全防护:

      阿里云HBase安全系列 —— 初体验_第1张图片

    如上图,最外层是网络隔离,用户hbase实例存在于云上用户自己单独的vpc环境内,其他用户访问不了云hbase实例。要想与hbase
网络连通,要么用户部署用户访问程序到 云 hbase实例相同vpc下的ecs上,要么使用公网访问的方式。此外,还需要填写网络白名单,
把用户的ecs配置到hbase实例的白名单上。如:我云上的机器ip是42.120.74.94,那么我配置到白名单就应该是如下:
阿里云HBase安全系列 —— 初体验_第2张图片    

    大多数用户使用hbase的时候,都默认只使用了上述这些方式进行安全控制,实际上,阿里云HBase还支持用户开启kerberos安全
身份认证以及hbase ACL权限控制。大多数用户场景其实不开这些都是可以的,毕竟他们使用hbase的时候,只作为自己内部业务系
统的数据库使用。

云HBase安全使用场景

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

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


    阿里云HBase安全,主要由alibaba和Intel合作开发的HAS(Hadoop authortication service)实现的安全认证,支持kerberos协议并简
了使用方式;同时配合使用hbase ACL实现用户权限控制,可以控制精确到列级别。下面我们一步步体验一下功能。

申请安装安全集群

    目前采用咨询沟通后开放形式来启用云HBase安全,后续会全网开放HBase安全功能选项。首先 钉钉扫码联系“云HBase答疑”,  咨询客
服并确认您需要开通云HBase安全功能。
12c2eca00a159aa7f620847b3253568acb9c31d7

    开通后,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访问地址。
  
    hbase.zookeeper.quorum
    zk1,zk2,zk3
  
  
    username
    root
  
  
    password
    123456
  

    配置完后,我们进行正常hbase shell访问了,如图:

阿里云HBase安全系列 —— 初体验_第6张图片

    当我们没有使用正确的用户名或者密码不对的时候,访问会报错如下:
阿里云HBase安全系列 —— 初体验_第7张图片

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

修改root管理员密码

 
   在上述验证通过情况下,执行脚本 bin/hasopt.sh脚本进入账户管理命令行:
阿里云HBase安全系列 —— 初体验_第8张图片
    修改成功后,后续的root访问就必须使用最新的密码了。也可以使用 resetown  root   命令行修
改正在使用的root用户密码

用户管理

    如上述,我们可以使用用户管理命令行对用户进行管理,初始我们只有root管理员账户,可以使用管理工具对用户进行管理,具体
命令功能说明如表:
 
命令 说明 使用样例及参数 使用限制
add 或 adduser 添加用户 add   只能root用户
delete 或 deleteuser 删除用户 delete 只能root用户
disable 或 disableverification 关闭身份验证 无参数 只能root用户
enable 或 enableverification 开启身份认证 无参数 只能root用户
reset 或 resetpassword 重设用户密码(root为普通用户重置) reset 只能root用户
list 或 listalluser list所以用户名 无参数 只能root用户
resetown 或 resetmyownpwd 重设自己的密码 reset  
q 或 quit 或 exit 退出用户管理命令行 无参数
cmd 或 help 或 输入不存在命令时 显示命令行帮助说明 无参数
   

权限控制管理

    上述我们使用的root管理员用户进行访问,它是hbase实例的superuser。接下来我们继续就着上述车联网创业公司的例子,分别给不同
部门使用人员分配不同的权限:
用户表 车联网数据库部门 车联网app/官网业务部门 第三方数据挖掘合作公司
car_track 可读可写,可修改表结构 可读可写,不可修改表结构 可读,不可写,不可修改表结构
car_info 可读可写,可修改表结构 可读可写,不可修改表结构 可读,不可写,不可修改表结构
user_info 可读可写,可修改表结构 可读可写,不可修改表结构 不可读不可写
    根据上述表格的权限控制需求,我们为数据部门创建datauser用户,为业务部门创建bizuser用户,为第三方合作公司创建partneruser用
户。如图:
阿里云HBase安全系列 —— 初体验_第9张图片
    接下来执行hbase shell使用grant命令,分别对datauser/bizuser/partneruser 分配不同的权限。执行命令如图:
阿里云HBase安全系列 —— 初体验_第10张图片
    如上,我们就可以简单的从不部门基本权限控制他们的访问hbase动作了。HBase ACL最小支持列级别粒度的权限控制。但是为了方便维护,
建议用户设计权限控制方案的时候,可以简洁一点。
    HBase 权限控制主要使用两个命令管理,grant和revoke命令,具体使用方法如下:

   grant   [<@namespace> [ [ []]]
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  [<@namespace> [
[ []]]] 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答疑” 客服了解更多
阿里云HBase安全系列 —— 初体验_第11张图片

你可能感兴趣的:(hbase,hbase安全,大数据安全)