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

概述

    阿里云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 或 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用
户。如图:
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答疑” 客服了解更多

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值