Debian上HBase安全设置方法
一 前置准备
二 启用认证与授权
<property>
<name>hbase.security.authentication</name>
<value>kerberos</value>
</property>
<property>
<name>hbase.security.authorization</name>
<value>true</value>
</property>
<property>
<name>hbase.master.keytab.file</name>
<value>/etc/security/keytabs/hbase.service.keytab</value>
</property>
<property>
<name>hbase.master.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.principal</name>
<value>hbase/_HOST@EXAMPLE.COM</value>
</property>
kadmin.local -q "addprinc -randkey hbase/node1.example.com@EXAMPLE.COM"
kadmin.local -q "xst -k /etc/security/keytabs/hbase.service.keytab hbase/node1.example.com@EXAMPLE.COM"
# 其他节点替换 node1 为对应主机名,完成后分发 keytab 并设权限 600/640
for h in node{1..3}; do
scp /etc/security/keytabs/hbase.service.keytab $h:/etc/security/keytabs/
ssh $h "chown hbase:hadoop /etc/security/keytabs/hbase.service.keytab && chmod 600 /etc/security/keytabs/hbase.service.keytab"
done
kinit -kt /etc/security/keytabs/hbase.service.keytab hbase/node1.example.com@EXAMPLE.COM
hbase shell
以上配置与步骤可满足 HBase 的 Kerberos 认证 与 ACL 授权 的基本要求。
三 加密与传输安全
<property>
<name>hbase.ssl.enabled</name>
<value>true</value>
</property>
<!-- 可选:自定义端口 -->
<property>
<name>hbase.master.info.port</name>
<value>16010</value>
</property>
<property>
<name>hbase.regionserver.info.port</name>
<value>16030</value>
</property>
启用后客户端需使用 https:// 访问 UI。
<property>
<name>hbase.rpc.engine</name>
<value>org.apache.hadoop.hbase.ipc.SecureRpcEngine</value>
</property>
<property>
<name>hbase.security.rpc.protection</name>
<value>authentication,integrity,privacy</value>
</property>
四 授权与审计
hbase shell
# 授予用户 user1 对表 ns1:tbl1 的读写权限
grant 'user1', 'RW', 'ns1:tbl1'
# 授予用户 user2 对表 ns1:tbl1 列族 cf1 的读权限
grant 'user2', 'R', 'ns1:tbl1', 'cf1'
# 查看权限
user_permission 'ns1:tbl1'
五 快速验证与常见问题
hbase shell 能正常列出/读写表。ranger-admin 或审计查看策略命中与访问记录(若启用 Ranger)。