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

787 阅读9分钟
原文链接: click.aliyun.com

概述

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

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

使用介绍。

    首先还是回顾一下我们使用云HBase的时候,会涉及哪些主要的安全防护:
     37d0989ecc03af43b11f03b14c174bdd272236e1
    如上图,最外层是网络隔离,用户hbase实例存在于云上用户自己单独的vpc环境内,其他用户访问不了云hbase实例。要想与hbase 网络连通,要么用户部署用户访问程序到 云 hbase实例相同vpc下的ecs上,要么使用公网访问的方式。此外,还需要填写网络白名单, 把用户的ecs配置到hbase实例的白名单上。如:我云上的机器ip是42.120.74.94,那么我配置到白名单就应该是如下: 5c578da1fd70aa3fe42e2c5dc09b1b3561df88cd    
    大多数用户使用hbase的时候,都默认只使用了上述这些方式进行安全控制,实际上,阿里云HBase还支持用户开启kerberos安全 身份认证以及hbase ACL权限控制。大多数用户场景其实不开这些都是可以的,毕竟他们使用hbase的时候,只作为自己内部业务系 统的数据库使用。

云HBase安全使用场景

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

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

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

修改root管理员密码

     在上述验证通过情况下,执行脚本 bin/hasopt.sh脚本进入账户管理命令行: 6849c01f18f4b62553f193029f8f580c001fa2e4
    修改成功后,后续的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 或 listalluser list所以用户名 无参数 只能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用 户。如图: 091e8a21460c2f8a861c8ac22d23207d2efcfc7e
    接下来执行hbase shell使用grant命令,分别对datauser/bizuser/partneruser 分配不同的权限。执行命令如图: f8d377e3c73280fab5c255d9e0680cfa116bf8f7
    如上,我们就可以简单的从不部门基本权限控制他们的访问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答疑” 客服了解更多 12c2eca00a159aa7f620847b3253568acb9c31d7

相关材料

​云HBase企业级安全解析直播分享历史视频:
文章回顾:https://yq.aliyun.com/articles/411306
PDF下载:https://yq.aliyun.com/download/2459

最后播报一下,云HBase2.0 在2018年6月6日将正式发布,点击了解更多
02e60ad330a6a8d6913136d358d31b1fd7d3ea31