温馨提示×

hbase在ubuntu上的安全设置

小樊
35
2025-12-14 18:08:38
栏目: 智能运维

Ubuntu上Apache HBase的安全设置清单

一 基础加固与网络边界

  • 启用并收紧防火墙(UFW)
    • 建议策略:默认拒绝入站、允许出站;仅开放必要端口(如 SSH 22/TCP、HBase Master/RegionServer 服务端口、HBase Web UI 端口)。
    • 常用命令:
      • 启用与默认策略:sudo ufw enablesudo ufw default deny incomingsudo ufw default allow outgoing
      • 开放端口:sudo ufw allow 22/tcp;按实际端口开放,例如:sudo ufw allow 16000:16020/tcp(示例端口范围,请替换为你的配置)
      • 查看与删除:sudo ufw statussudo ufw delete allow 22/tcp
    • 说明:UFW是Ubuntu常用的防火墙前端,规则变更后即时生效,适合快速收敛暴露面。

二 身份鉴别与访问控制

  • 启用强认证 Kerberos
    • 前提:HDFS 与 HBase 两侧同时开启强认证,避免“上层强、底层弱”的失效安全。
    • 服务端配置(所有节点 hbase-site.xml):
      • <property><name>hbase.security.authentication</name><value>kerberos</value></property>
      • <property><name>hbase.security.authorization</name><value>true</value></property>
      • 可选协处理器(令牌提供):<property><name>hbase.coprocessor.region.classes</name><value>org.apache.hadoop.hbase.security.token.TokenProvider</value></property>
    • 服务端主体与 Keytab(示例,按你的 REALM 调整):
      • 创建主体:kadmin.local -q "addprinc -randkey hbase/_HOST@REALM"
      • 导出 Keytab:kadmin.local -q "xst -k /etc/security/keytabs/hbase.service.keytab hbase/_HOST@REALM"
      • Master/RegionServer 配置 Keytab(示例):
        • <property><name>hbase.master.keytab.file</name><value>/etc/security/keytabs/hbase.service.keytab</value></property>
        • <property><name>hbase.master.kerberos.principal</name><value>hbase/_HOST@REALM</value></property>
        • RegionServer 同理设置 hbase.regionserver.keytab.filehbase.regionserver.kerberos.principal
    • 客户端访问
      • 传统方式:先 kinit 获取票据再访问集群。
      • 2.2.0 起可在客户端配置自动登录与凭据续订:
        • <property><name>hbase.client.keytab.file</name><value>/path/client.keytab</value></property>
        • <property><name>hbase.client.keytab.principal</name><value>client@EXAMPLE.COM</value></property>
      • 重要:客户端与服务端的 hbase.security.authentication 必须一致,否则无法通信。
    • 传输加密(可选,按需)
      • 在客户端或连接级别设置:hbase.rpc.protection=privacy(可选值:authentication、integrity、privacy;privacy 提供加密,约带来 ~10% 性能开销)。

三 授权与最小权限

  • 启用 HBase ACL(基于表的访问控制)
    • 开启后在 hbase shell 中使用 grant/revoke 授予最小权限:
      • 示例:grant 'alice', 'RW', 'tbl1'(表级读写)
      • 示例:grant 'bob', 'R', 'tbl1', 'cf1'(列族级只读)
    • 网关与 API 主体纳入 ACL
      • 例如 Thrift 网关需要将其主体加入 ACL 才能被授权访问表:
        • grant 'thrift_server', 'RWCA'
      • 注意 Thrift 主体名与端口、DNS 接口/名称服务器配置需与实际部署一致(如 hbase.thrift.kerberos.principalhbase.thrift.dns.interfacehbase.thrift.dns.nameserver)。

四 加密与 Web 接口防护

  • 启用 Web UI 的 HTTPS
    • 配置(hbase-site.xml):
      • <property><name>hbase.ssl.enabled</name><value>true</value></property>
      • 如需变更端口:hbase.master.info.porthbase.regionserver.info.port
    • 访问要求:客户端必须使用 https:// 访问 UI;使用 http:// 将得到 200 响应但不返回实际内容,存在误导风险。

五 系统与运维安全

  • 主机与进程基础安全
    • 时钟同步:部署 NTP 保证集群时间一致性,避免因时间漂移导致异常行为或认证失败。
    • 文件句柄与进程数:提升运行用户(如 hbase)的 ulimit -n(建议 ≥32768)与 nproc(建议 ≥32000
      • Ubuntu 配置示例:
        • /etc/security/limits.conf 增加:
          • hbase soft nofile 32768hbase hard nofile 32768
          • hbase soft nproc 32000hbase hard nproc 32000
        • /etc/pam.d/common-session 增加:session required pam_limits.so
        • 重新登录或重启会话后生效。
    • 反向 DNS 与接口绑定
      • HBase 使用主机名解析 IP,建议保证正/反向 DNS 一致;多网卡环境可设置:
        • hbase.regionserver.dns.interfacehbase.regionserver.dns.nameserver
    • 变更与重启
      • 涉及安全配置(如 Kerberos、SSL、协处理器)通常需要“完全停止并重启”HBase 集群,确保各组件以一致的安全配置启动。

0