centos hbase安全设置如何实现
小樊
31
2025-12-11 21:19:46
CentOS 上 HBase 安全设置落地指南
一 架构与前置条件
- 建议启用高安全模式:开启 Kerberos 认证,并启用 HBase ACL 授权;未启用 Kerberos 的集群即使开启 ACL 也可能被伪造身份绕过,生产环境强烈不建议使用 simple 模式。HBase 的授权范围支持 Global / Namespace / Table / ColumnFamily / Cell,权限包含 R/W/X/C/A,主体支持 User / Group,并可通过 hbase.superuser 配置超级账号。
- 规划 REALM、KDC 与 kadmin 访问;在所有节点安装 krb5-workstation,统一 /etc/krb5.conf,并确保 DNS/hosts 解析一致。HBase 侧需准备服务主体(如 hbase/_HOST@REALM)与 keytab,并保证 ZooKeeper 与 HDFS 侧也处于安全模式(如 HDFS 开启权限、启用 SASL)。
二 核心配置步骤
-
启用 Kerberos 认证(HBase 侧)
- 在 hbase-site.xml 中启用认证与 RPC 保护,并配置服务主体与 keytab(示例):
- hbase.security.authentication=kerberos
- hbase.security.authorization=true
- hbase.rpc.protection=privacy(或 authentication)
- hbase.master.kerberos.principal=hbase/_HOST@YOUR-REALM
- hbase.master.keytab.file=/etc/security/keytabs/hbase.master.keytab
- hbase.regionserver.kerberos.principal=hbase/_HOST@YOUR-REALM
- hbase.regionserver.keytab.file=/etc/security/keytabs/hbase.regionserver.keytab
- 在 KDC 创建主体并导出 keytab(所有节点分发并保持权限最小化,建议 600):
- kadmin.local -q “addprinc -randkey hbase/$(hostname -f)@YOUR-REALM”
- kadmin.local -q “xst -k /etc/security/keytabs/hbase.master.keytab hbase/$(hostname -f)@YOUR-REALM”
- kadmin.local -q “xst -k /etc/security/keytabs/hbase.regionserver.keytab hbase/$(hostname -f)@YOUR-REALM”
- 注意:HBase 1.x 与 2.x 在协处理器与属性名上存在差异,启用 ACL 需按版本正确配置协处理器(见下一节)。
-
启用 HBase ACL 授权
- 在 hbase-site.xml 开启授权并注册协处理器(以 HBase 2.x 为例):
- hbase.security.authorization=true
- hbase.coprocessor.master.classes=org.apache.hadoop.hbase.security.access.AccessController
- hbase.coprocessor.region.classes=org.apache.hadoop.hbase.security.token.TokenProvider,org.apache.hadoop.hbase.security.access.AccessController
- hbase.coprocessor.regionserver.classes=org.apache.hadoop.hbase.security.access.AccessController,org.apache.hadoop.hbase.security.token.TokenProvider
- 重启 HBase 使配置生效。之后通过 HBase Shell 进行授权(示例):
- grant ‘alice’,‘RW’,‘tbl1’(授予用户 alice 对表 tbl1 的读写)
- grant ‘@dev’,‘R’,‘@ns1’(授予 dev 组对命名空间 ns1 的读)
- revoke ‘bob’,‘W’,‘tbl1’
- user_permission ‘TABLE_A’(查看表权限)
-
传输与静态加密
- 传输加密:在 hbase-site.xml 启用 SSL/TLS(如 hbase.ssl.enabled=true),为 HMaster/RegionServer、客户端配置证书与信任库,确保 RPC、Thrift/REST 等通道加密。
- 静态加密:启用 HFile/WAL 透明加密(TDE),使用 Hadoop KMS 或本地 KeyProvider 管理密钥,配置列族/表级加密,保护落盘数据。
三 网络与系统加固
- 防火墙与端口最小化
- 仅开放必要端口(示例):
- ZooKeeper:2181
- HMaster UI:16010
- RegionServer UI:16030
- Master RPC:16000
- RegionServer RPC:16020
- 使用 firewalld 持久化放行并定期审计规则。
- 系统与账号
- 使用 最小权限 运行 HBase 进程(专用系统账号),keytab 与配置文件权限 600,定期轮换密钥。
- 启用 audit 审计日志(HBase 审计或借助 Ranger 审计),集中采集与告警。
四 验证与运维
- 认证与授权验证
- 使用 kinit 获取票据后连接 Shell:kinit hbase/$(hostname -f)@YOUR-REALM;执行 hbase shell list 验证访问;切换为普通用户(如 kinit alice@YOUR-REALM)验证 ACL 是否生效。
- 常见排错
- 启动失败或无法连接:检查 REALM/KDC 可达性、keytab 权限与主体是否匹配、时钟偏差(建议 < 5 分钟)、以及 ZooKeeper/HDFS 是否同为安全模式。
- ACL 不生效:确认协处理器已加载、配置已分发、重启完成,且访问主体与授权主体一致(注意 User/Group 前缀与 Namespace/Table 作用域)。