在 Debian 上落地 HBase 的安全基线
一 前置条件与系统加固
二 启用强认证与授权
<property>
<name>hadoop.security.authentication</name>
<value>kerberos</value>
</property>
<property>
<name>hbase.security.authentication</name>
<value>kerberos</value>
</property>
<property>
<name>hbase.security.authorization</name>
<value>true</value>
</property>
kadmin.local -q "addprinc -randkey hbase/_HOST@EXAMPLE.COM"
kadmin.local -q "xst -k /etc/security/keytabs/hbase.service.keytab hbase/_HOST@EXAMPLE.COM"
chown hbase:hbase /etc/security/keytabs/hbase.service.keytab
chmod 400 /etc/security/keytabs/hbase.service.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@EXAMPLE.COM</value>
</property>
<property>
<name>hbase.regionserver.keytab.file</name>
<value>/etc/security/keytabs/hbase.service.keytab</value>
</property>
<property>
<name>hbase.regionserver.kerberos.principal</name>
<versioned>hbase/_HOST@EXAMPLE.COM</versioned>
</property>
<property>
<name>hbase.coprocessor.region.classes</name>
<value>org.apache.hadoop.hbase.security.token.TokenProvider</value>
</property>
三 加密通信与 Web UI 防护
<property>
<name>hbase.rpc.protection</name>
<value>privacy</value>
</property>
<property>
<name>hbase.ssl.enabled</name>
<value>true</value>
</property>
如需变更 Web UI 端口,可同时设置:<property>
<name>hbase.master.info.port</name>
<value>16010</value>
</property>
<property>
<name>hbase.regionserver.info.port</name>
<value>16030</value>
</property>
grant 'thrift_server', 'RWCA'
注意:Thrift 的 principal 名称在不同版本/网关模式下可能为 $USER/_HOST@REALM 或 HTTP/_HOST@REALM,需按实际网关类型与版本设置。四 客户端访问与 ACL 实践
<property>
<name>hbase.security.authentication</name>
<value>kerberos</value>
</property>
<property>
<name>hbase.client.keytab.file</name>
<value>/path/to/client.keytab</value>
</property>
<property>
<name>hbase.client.keytab.principal</name>
<value>client@EXAMPLE.COM</value>
</property>
老版本客户端可先执行 kinit 获取票据再访问。# 授予用户 user1 对表 table1 的读写
grant 'user1', 'RW', 'table1'
# 授予用户 user2 对表 table1 列族 cf1 的只读
grant 'user2', 'R', 'table1', 'cf1'
五 快速验证与运维要点
status 与简单读写,确认 SASL/GSSAPI 握手与 ACL 生效。openssl s_client 或浏览器证书查看工具核验证书链。