Ubuntu上HBase安全设置指南
小樊
33
2025-12-30 10:35:11
Ubuntu上HBase安全设置指南
一 基础安全先决条件
- 启用并正确配置 Kerberos KDC/AdminServer,在 /etc/krb5.conf 中设置默认域与 KDC/Admin 地址;创建 HBase 服务主体(如 hbase/_HOST@YOUR.REALM)并分发 keytab 到所有节点,权限设为 600,属主为 hbase 运行用户。
- 保证集群 时间同步(NTP),避免因时钟漂移导致票据与权限校验异常。
- 统一 DNS 与主机名解析(正反向一致),多网卡环境显式设置 hbase.regionserver.dns.interface/nameserver,确保配置在所有节点一致。
- 提升系统资源限制:在 /etc/security/limits.conf 为 hbase 用户设置如 nofile 32768、nproc 32000,并在 /etc/pam.d/common-session 加入 session required pam_limits.so;HDFS 侧按需调高 dfs.datanode.max.xcievers(如 4096)以避免 “Too many open files” 或 “missing blocks”。
- 注意:HBase 安全依赖底层 HDFS 与 ZooKeeper 的安全状态,需同步规划其认证与权限策略。
二 身份鉴别与访问控制
- 启用 Kerberos 认证:在 hbase-site.xml 设置
- hbase.security.authentication=kerberos
- hadoop.security.authentication=kerberos
- hbase.master.kerberos.principal=hbase/_HOST@YOUR_REALM
- hbase.regionserver.kerberos.principal=hbase/_HOST@YOUR_REALM
- hbase.master.keytab.file=/etc/security/keytabs/hbase.service.keytab
- hbase.regionserver.keytab.file=/etc/security/keytabs/hbase.service.keytab
使用 kinit 获取票据后访问(如 kinit user@YOUR_REALM)。
- 启用 HBase ACL(RBAC):
- hbase.security.authorization=true
- 在协处理器加载 AccessController:
- hbase.coprocessor.master.classes=org.apache.hadoop.hbase.security.access.AccessController
- hbase.coprocessor.region.classes=org.apache.hadoop.hbase.security.access.AccessController
- Shell 授权示例:
- 创建用户:create_user ‘user1’, ‘ComplexPass123!’
- 授予权限:grant ‘user1’, ‘RWCA’, ‘my_namespace:my_table’
- 回收权限:revoke ‘user1’, ‘W’, ‘my_namespace:my_table:cf1’
- 启用 审计日志:
- hbase.security.audit.log=true
- hbase.security.audit.log.file=/var/log/hbase/audit.log
建议接入 ELK 或类似系统进行集中分析与告警。
三 传输与存储加密
- RPC/数据传输加密:
- hbase.rpc.engine=org.apache.hadoop.hbase.ipc.SecureRpcEngine
- hbase.security.ssl.enabled=true
- hbase.ssl.keystore.location=/path/to/keystore.jks
- hbase.ssl.keystore.password=keystore_password
- hbase.ssl.truststore.location=/path/to/truststore.jks
- hbase.ssl.truststore.password=truststore_password
- Web UI 启用 HTTPS:
- 设置 hbase.ssl.enabled=true;如需变更端口,配置 hbase.master.info.port / hbase.regionserver.info.port;客户端使用 https:// 访问。
- 静态数据保护:
- 启用 HDFS 透明加密(Transparent Encryption) 保护落盘数据;
- 在 HBase 层面可结合 标签(Labels)与访问控制 实现更细粒度的数据可见性与权限;
- 目录权限加固:hbase.data.umask.enable=true,hbase.data.umask=007(数据目录与本地 WAL 目录建议仅 属主/属组 可访问)。
四 最小权限与合规运维
- 最小权限原则:仅授予业务所需权限(如 R/W/C/A 的子集),定期清理离职/临时账号权限;对 命名空间/表/列族/单元格 实施分层授权。
- 凭据与文件安全:keytab 与 keystore/truststore 权限 600,属主 hbase;启用 kinit 票据生命周期管理,避免长期有效票据。
- 审计与监控:持续 tail -f /var/log/hbase/audit.log 或接入 ELK,对异常 GET/PUT/CREATE/DELETE 与权限变更进行告警。
- 配置与密钥备份:定期备份 hbase-site.xml、keytab、keystore/truststore 与审计日志,变更前后保留回滚版本。
- 合规与漏洞报告:遵循 ASF 安全策略,安全相关问题通过 apache.org/security 渠道提交,避免使用公开 JIRA 报告安全漏洞。
五 快速验证清单
- 使用 kinit 获取用户票据后执行 hbase shell list,确认可在认证下访问;
- 以不同用户执行带权限校验的操作(如 get/put/scan),验证 ACL 是否生效;
- 查看 /var/log/hbase/audit.log 是否记录关键操作与结果;
- 通过 https://:port 访问 Web UI,确认 HTTPS 正常;
- 使用 openssl s_client 或同等工具验证 RPC/SSL 握手与证书配置。