温馨提示×

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 配置超级账号。
  • 规划 REALMKDCkadmin 访问;在所有节点安装 krb5-workstation,统一 /etc/krb5.conf,并确保 DNS/hosts 解析一致。HBase 侧需准备服务主体(如 hbase/_HOST@REALM)与 keytab,并保证 ZooKeeperHDFS 侧也处于安全模式(如 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 作用域)。

0