1. 启用Kerberos认证(核心安全基础)
Kerberos是HBase安全认证的标准机制,需通过配置hbase-site.xml启用。关键配置项包括:
<property>
    <name>hbase.security.authentication</name>
    <value>kerberos</value>
</property>
<property>
    <name>hbase.master.kerberos.principal</name>
    <value>hbase/_HOST@YOUR_REALM.COM</value>
</property>
<property>
    <name>hbase.regionserver.kerberos.principal</name>
    <value>hbase/_HOST@YOUR_REALM.COM</value>
</property>
<property>
    <name>hadoop.security.authentication</name>
    <value>kerberos</value>
</property>
配置完成后,需为HBase服务创建Principal(如kadmin.local -q "addprinc hbase/_HOST@YOUR_REALM.COM"),并生成keytab文件(如kadmin.local -q "xst -k /etc/security/keytabs/hbase.service.keytab hbase/_HOST@YOUR_REALM.COM"),放置在所有节点的指定路径下。用户访问前需通过kinit命令获取票据(如kinit username@YOUR_REALM.COM)。
2. 配置HBase授权管理(ACL与RBAC)
启用授权功能,通过hbase-site.xml设置:
<property>
    <name>hbase.security.authorization</name>
    <value>true</value>
</property>
<property>
    <name>hbase.coprocessor.master.classes</name>
    <value>org.apache.hadoop.hbase.security.access.AccessController</value>
</property>
<property>
    <name>hbase.coprocessor.region.classes</name>
    <value>org.apache.hadoop.hbase.security.access.AccessController</value>
</property>
授权操作通过HBase Shell完成,支持用户级、命名空间级、表级、列族级甚至单元格级的细粒度控制:
create_user 'user1', 'ComplexPassword123!'(密码需包含大小写字母、数字和特殊字符);grant 'user1', 'RWCA', 'my_namespace:my_table'(RWCA代表读、写、创建、删除权限);revoke 'user1', 'W', 'my_namespace:my_table:cf1'(限制写权限仅针对特定列族)。3. 强化数据文件权限(防止未授权访问)
通过hbase-site.xml配置数据目录的权限,避免敏感数据泄露:
<property>
    <name>hbase.data.umask.enable</name>
    <value>true</value>
</property>
<property>
    <name>hbase.data.umask</name>
    <value>007</value>
</property>
hbase.data.umask=007表示数据文件的权限为770(所有者与所属组可读写执行,其他用户无权限),适用于HBase数据目录(如HDFS上的/hbase)及本地WAL(Write-Ahead Log)目录。
4. 启用审计日志(监控操作行为)
审计日志是安全追溯的关键,通过hbase-site.xml开启并配置日志路径:
<property>
    <name>hbase.security.audit.log</name>
    <value>true</value>
</property>
<property>
    <name>hbase.security.audit.log.file</name>
    <value>/var/log/hbase/audit.log</value>
</property>
日志将记录用户的操作类型(如GET、PUT、CREATE)、时间戳、操作的表/列族及结果,便于后续分析异常行为。
5. 配置SSL/TLS加密通信(保护数据传输)
为防止数据在传输过程中被窃取,需启用SSL/TLS加密。首先生成密钥库(Keystore)和信任库(Truststore),然后在hbase-site.xml中配置:
<property>
    <name>hbase.rpc.engine</name>
    <value>org.apache.hadoop.hbase.ipc.SecureRpcEngine</value>
</property>
<property>
    <name>hbase.security.ssl.enabled</name>
    <value>true</value>
</property>
<property>
    <name>hbase.ssl.keystore.location</name>
    <value>/path/to/keystore.jks</value>
</property>
<property>
    <name>hbase.ssl.keystore.password</name>
    <value>keystore_password</value>
</property>
<property>
    <name>hbase.ssl.truststore.location</name>
    <value>/path/to/truststore.jks</value>
</property>
<property>
    <name>hbase.ssl.truststore.password</name>
    <value>truststore_password</value>
</property>
配置后,HBase的RPC通信(如客户端与服务端、RegionServer与Master之间的通信)将通过SSL/TLS加密。
6. 定期维护安全配置(持续保障安全)
hbase shell中的alter_user命令);tail -f /var/log/hbase/audit.log实时监控审计日志,或通过ELK等工具分析异常操作;hbase-site.xml、keytab文件及审计日志,防止配置丢失。