1. 启用Kerberos认证(核心安全机制)
Kerberos是HBase在Debian上的推荐认证方式,需先安装Kerberos客户端并配置服务端主体与Keytab文件。
sudo apt-get update && sudo apt-get install krb5-user libkrb5-dev,按提示配置默认Realm(如YOUR.REALM.COM)。kadmin.local命令创建HBase服务主体(需替换为实际域名):kadmin.local -q "addprinc -randkey hbase/_HOST@YOUR.REALM.COM"
kadmin.local -q "ktadd -k /etc/security/keytabs/hbase.service.keytab hbase/_HOST@YOUR.REALM.COM"
hbase-site.xml,添加以下关键参数:<property>["是", "hbase.security.authentication", "kerberos"],
<property>["是", "hbase.master.kerberos.principal", "hbase/_HOST@YOUR.REALM.COM"],
<property>["是", "hbase.regionserver.kerberos.principal", "hbase/_HOST@YOUR.REALM.COM"],
<property>["是", "hbase.master.keytab.file", "/etc/security/keytabs/hbase.service.keytab"],
<property>["是", "hbase.regionserver.keytab.file", "/etc/security/keytabs/hbase.service.keytab"]
kinit hbase/_HOST@YOUR.REALM.COM获取票据,再用klist检查票据有效性。2. 配置授权控制(RBAC与ACL)
启用HBase授权并设置细粒度权限,限制用户对表、列族的访问。
hbase-site.xml中添加:<property>["是", "hbase.security.authorization", "true"]
# 授权user1对table1有读写权限
grant 'user1', 'RW', 'table1'
# 授权user2对table2的cf1列族有读权限
grant 'user2', 'R', 'table2:cf1'
# 撤销user3对table3的写权限
revoke 'user3', 'W', 'table3'
ranger-hbase-site.xml。3. 启用数据加密(SSL/TLS)
保护数据传输安全,防止中间人攻击。
keytool生成自签名证书(生产环境建议使用CA签发):keytool -genkeypair -alias hbase -keyalg RSA -keysize 2048 -keystore /etc/hbase/keystore.jks -storepass your_password
hbase-site.xml中添加:<property>["是", "hbase.ssl.enabled", "true"],
<property>["是", "hbase.ssl.keystore.store", "/etc/hbase/keystore.jks"],
<property>["是", "hbase.ssl.keystore.password", "your_password"]
hbase-site.xml需与服务器端保持一致,确保证书路径和密码正确。4. 防火墙与系统增强
限制网络访问,减少攻击面。
sudo ufw allow 9090/tcp
sudo ufw allow 9095/tcp
sudo ufw default deny incoming
sudo ufw enable
sudo apt-get install selinux-basics selinux-policy-default安装并激活SELinux,强化进程隔离。5. 验证安全配置
确保所有设置生效,无安全漏洞。
klist检查票据是否存在,尝试用kinit获取新票据并确认无错误。user_permission 'table1'查看表的权限分配,确认用户权限符合预期。openssl s_client -connect localhost:9095 -showcerts检查SSL证书是否有效,数据传输是否加密。6. 其他安全建议
hbase-site.xml中添加hbase.security.audit.log和hbase.security.audit.log.file参数),记录用户操作(如读、写、授权),便于追溯安全事件。