1. 前置准备:系统安全加固
在配置HBase安全前,需先强化CentOS系统基础安全:
sudo yum update修补系统漏洞;firewall-cmd开放HBase必需端口(如Master的16000、RegionServer的16020、ZooKeeper的2181等),并设置为permanent后reload;/etc/login.defs文件,强制用户设置复杂密码(长度≥10位,包含大小写字母、数字和特殊字符);chattr +i命令锁定/etc/passwd、/etc/shadow等关键文件,防止未授权修改。2. 启用HBase安全模式
编辑hbase-site.xml(位于/etc/hbase/conf/),添加以下核心配置以开启安全功能:
<property>
<name>hbase.security.enabled</name>
<value>true</value>
</property>
<property>
<name>hbase.security.authentication</name>
<value>kerberos</value> <!-- 必须使用Kerberos认证 -->
</property>
<property>
<name>hbase.security.authorization</name>
<value>true</value> <!-- 启用授权 -->
</property>
<property>
<name>hbase.coprocessor.master.classes</name>
<value>org.apache.hadoop.hbase.security.access.AccessController</value> <!-- Master端授权处理器 -->
</property>
<property>
<name>hbase.coprocessor.region.classes</name>
<value>org.apache.hadoop.hbase.security.access.AccessController</value> <!-- Region端授权处理器 -->
</property>
修改后需重启HBase服务(sudo systemctl restart hbase-master、sudo systemctl restart hbase-regionserver)使配置生效。
3. 配置Kerberos认证
Kerberos是HBase高安全场景的核心认证机制,需完成以下步骤:
sudo yum install krb5-workstation安装必要工具;/etc/krb5.conf文件,添加Realm和KDC信息(替换为实际值):[libdefaults]
default_realm = YOUR_REALM.COM
[realms]
YOUR_REALM.COM = {
kdc = kdc.yourdomain.com:88
admin_server = kdc.yourdomain.com:749
}
[domain_realm]
.yourdomain.com = YOUR_REALM.COM
yourdomain.com = YOUR_REALM.COM
kadmin.local命令(需KDC管理员权限):kadmin.local -q "addprinc -randkey hbase/_HOST@YOUR_REALM.COM" # 创建HBase服务Principal
kadmin.local -q "xst -k /etc/security/keytabs/hbase.service.keytab hbase/_HOST@YOUR_REALM.COM" # 导出Keytab文件
kinit命令获取票据,klist命令查看票据是否有效:kinit hbase/_HOST@YOUR_REALM.COM -kt /etc/security/keytabs/hbase.service.keytab
klist
需确保HBase集群所有节点(Master、RegionServer)均完成上述配置,且Keytab文件权限设置为600(仅root可读)。
4. 配置访问控制列表(ACL)
HBase ACL用于细粒度控制用户/组对资源的访问权限(表、命名空间、列族等),步骤如下:
hbase-site.xml中添加hbase.acl.defaultAction=DENY(默认拒绝所有未明确授权的操作);grant命令(语法:grant <用户/组>, 权限类型, 资源>):# 给用户user1授予表tbl1的读权限(R)
grant 'user1', 'R', 'tbl1'
# 给用户组@testgrp授予命名空间ns1的CREATE权限(C)
grant '@testgrp', 'C', '@ns1'
# 给用户admin授予表tbl2的所有权限(RWXCA)
grant 'admin', 'RWXCA', 'tbl2'
revoke命令(语法:revoke <用户/组>, 权限类型, 资源>);user_permission '表名'或user_permission 'NAMESPACE:表名'命令查看指定资源的权限分配。5. 集成安全插件(可选但推荐)
为提升安全管理的便捷性,可集成Apache Ranger或Apache Sentry等安全插件:
6. 启用审计日志
审计日志用于记录用户操作(如表创建、数据修改、权限变更),便于后续追溯:
在hbase-site.xml中添加以下配置:
<property>
<name>hbase.security.audit.log.enabled</name>
<value>true</value>
</property>
<property>
<name>hbase.security.audit.log.file</name>
<value>/var/log/hbase/audit.log</value> <!-- 审计日志路径 -->
</property>
确保/var/log/hbase/目录存在且权限正确(hbase:hbase),重启HBase服务后,审计日志将自动记录所有权限相关操作。
7. 数据加密(可选但重要)
为保护数据在传输和存储中的安全,可启用以下加密功能:
hbase-site.xml中指定证书路径;8. 定期维护与监控
user_permission命令检查用户权限,移除不再需要的权限;drop table操作);