翻译: How-to: Enable User Authentication and Authorization in Apache HBase

原文: By Matteo Bertozzi

使用默认的Apache HBase配置,每个人都可以读取和写入系统中所有可用的表。对于很多企业机构来说,这种策略是不能接受的。
管理员可以设置防火墙来决定哪些机器允许与HBase通信。但是,能够通过防火墙的机器仍然允许读写所有表。这种机制是有效的,但还不够,因为HBase仍然不能区分使用相同客户机的多个用户,而且对于HBase表、列簇或列限定符(column qualifier)访问仍然没有粒度。
在这篇文章中,我们将讨论如何将Kerberos与Hadoop和HBase一起使用来提供用户身份验证,以及HBase如何实现用户授权以授予用户对特定数据集的特定操作的权限。

Secure HBase:身份验证和授权

安全的HBase旨在防止嗅探器、未经身份验证/未经授权的用户和基于网络的攻击。它不能防止意外情况下,有权限的用户删除所有数据。
使用HBase配置能为用户提供身份验证,这确保只有经过授权的用户才能与HBase通信。授权系统是在RPC级别实现的,并且基于简单身份验证和安全层(SASL),该层支持Kerberos(以及其他身份验证机制)。SASL允许在每个连接的基础上进行身份验证、加密协商和/或消息完整性验证。(“hbase.rpc.protection” 配置属性)。
启用用户身份验证后的下一步是让管理员能够定义一系列允许或拒绝特定操作的用户授权规则。授权系统,也称为访问控制器协处理器或访问控制列表(ACL),从HBase 0.92 (CDH4)开始可用,并提供了为指定用户定义授权策略(读/写/创建/管理)的能力,表/族/限定符粒度。

Kerberos

Kerberos是一种网络化的身份验证协议。它旨在通过使用秘钥加密为客户机/服务器应用程序提供强大的身份验证。Kerberos协议使用强大的加密技术(AES、3DES、……),因此客户机可以跨不安全的网络连接向服务器证明自己的身份(反之亦然)。在客户机和服务器使用Kerberos证明其身份之后,它们还可以对所有通信进行加密,以确保在进行业务时的隐私和数据完整性。

票据交换协议

在高层次上,要使用Kerberos访问服务,每个客户端必须遵循三个步骤:

  • Kerberos身份验证:客户机向Kerberos身份验证服务器验证自身,并接收票据授予票据(TGT)。
  • Kerberos授权:客户端从票据授予服务器请求一个服务票据,如果与请求一起发送的客户端TGT有效,则服务器发出票据和会话密钥。
  • 服务请求:客户端使用服务票据向提供客户端正在使用的服务(如HDFS, HBase,…)交换协议的服务器进行身份验证。

HBase, HDFS, ZooKeeper SASL

由于HBase依赖于HDFS和ZooKeeper, secure HBase依赖于一个安全的HDFS和一个安全的ZooKeeper。这意味着HBase服务器需要创建一个安全服务会话,如上所述,以与HDFS和ZooKeeper通信。
HBase写的所有文件都存储在HDFS中。与Unix文件系统一样,HDFS提供的访问控制是基于用户、组和权限的。由HBase创建的所有文件都有“HBase”作为用户,但这种访问控制是基于系统提供的用户名,每个可以访问机器的人都有可能以用户“HBase”的身份“sudo”。Secure HDFS添加了认证步骤,以保证“hbase”用户是可信的。
ZooKeeper在每个znode上都有一个访问控制列表(ACL), ACL允许基于用户信息以类似于HDFS的方式对用户进行读/写访问。

HBase ACL

既然我们的用户通过Kerberos进行了身份验证,我们就可以确定收到的用户名是我们信任的用户之一。有时这是不够的粒度-我们想要控制一个指定的用户能够读或写表。为此,HBase提供了一种授权机制,允许对指定的用户进行受限访问。
要启用此特性,必须启用Access Controller协处理器,方法是将其添加到主服务器和区域服务器协处理器类下的hbase-site.xml。(请参阅如何设置HBase安全配置)。
协处理器是在每个HBase区域服务器和/或主服务器中运行的代码。它能够拦截大多数操作(put, get, delete,…),并在操作执行之前和/或之后运行任意代码。
使用这种能力在每个操作之前执行一些代码,访问控制器协处理器可以检查用户权限并决定用户是否可以执行操作。
HBase shell有一对命令,允许管理员管理用户权限:

grant [table] [family] [qualifier]
revoke [table] [family] [qualifier]

如你所见,管理员能够基于表模式限制用户访问:

给User-W对Table-X/Family-Y的读权限(grant 'User-W', 'R', 'Table-X', 'Family-Y')
给User-W对Qualifier-Z操作的读写权限 (grant 'User-W', 'RW', 'Table-X', 'Family-Y', 'Qualifier-Z')

管理员也有能力授予全局权限,这些权限在集群级别上操作,比如创建表,平衡区域,关闭集群等等:

给User-W创建表的权限  (grant 'User-W', 'C')
给User-W管理集群的权限 (grant 'User-W', 'A')

所有权限都存储在访问控制器协处理器创建的表中,称为acl。该表的主键是您在grant命令中指定的表名。acl表只有一个列族,每个限定符描述特定表/用户的权限粒度。该值包含授予的实际权利。
正如您所看到的,HBase shell命令与数据的存储方式紧密相关。grant命令添加或更新一行,revoke命令从acl表中删除一行。

引擎盖下的访问控制器

如上所述,访问控制器协处理器使用拦截每个用户请求的能力,并检查用户是否有权执行操作。
对于每个操作,访问控制器都需要查询acl表,以查看用户是否有权执行操作。
然而,此操作可能会对性能产生负面影响。解决这个问题的解决方案是使用acl表的持久性和ZooKeeper来加快权限查找。每个区域服务器在内存中加载acl表,并获得ZkPermissionWatcher的更改通知。通过这种方式,每个区域服务器每次都有更新的值,并且通过使用内存映射执行每个权限检查。

Roadmap

虽然Kerberos是一种稳定的、经过良好测试和验证的身份验证系统,但HBase ACL特性仍然非常基本,其语义仍在不断发展。HBASE-6096是伞形JIRA的参考,用于在ACL特性的v2中发布的所有改进。
关于授权和访问控制的另一个公开主题是实现每个键值的安全系统(HBASE-6222),该系统将允许在同一单元中使用与安全标记相关联的不同值。这将允许根据用户的权限显示一条特定的信息。

总结

HBase Security增加了两个额外的特性,允许您保护数据免受嗅探者或其他网络攻击(通过使用Kerberos对用户进行身份验证和加密服务之间的通信),并允许您定义用户授权策略、限制操作和限制特定用户的数据可见性。

Matteo Bertozzi is a Software Engineer at Spotify and an HBase Consultant at Cloudera.

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,222评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,455评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 157,720评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,568评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,696评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,879评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,028评论 3 409
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,773评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,220评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,550评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,697评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,360评论 4 332
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,002评论 3 315
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,782评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,010评论 1 266
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,433评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,587评论 2 350