1. 前置準備:系統安全加固
在配置HBase安全前,需先強化CentOS系統基礎安全:
sudo yum update修補系統漏洞;firewall-cmd開放HBase必需端口(如Master的16000、RegionServer的16020、ZooKeeper的2181等),并設置為permanent后reload;/etc/login.defs文件,強制用戶設置復雜密碼(長度≥10位,包含大小寫字母、數字和特殊字符);chattr +i命令鎖定/etc/passwd、/etc/shadow等關鍵文件,防止未授權修改。2. 啟用HBase安全模式
編輯hbase-site.xml(位于/etc/hbase/conf/),添加以下核心配置以開啟安全功能:
<property>
<name>hbase.security.enabled</name>
<value>true</value>
</property>
<property>
<name>hbase.security.authentication</name>
<value>kerberos</value> <!-- 必須使用Kerberos認證 -->
</property>
<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> <!-- Master端授權處理器 -->
</property>
<property>
<name>hbase.coprocessor.region.classes</name>
<value>org.apache.hadoop.hbase.security.access.AccessController</value> <!-- Region端授權處理器 -->
</property>
修改后需重啟HBase服務(sudo systemctl restart hbase-master、sudo systemctl restart hbase-regionserver)使配置生效。
3. 配置Kerberos認證
Kerberos是HBase高安全場景的核心認證機制,需完成以下步驟:
sudo yum install krb5-workstation安裝必要工具;/etc/krb5.conf文件,添加Realm和KDC信息(替換為實際值):[libdefaults]
default_realm = YOUR_REALM.COM
[realms]
YOUR_REALM.COM = {
kdc = kdc.yourdomain.com:88
admin_server = kdc.yourdomain.com:749
}
[domain_realm]
.yourdomain.com = YOUR_REALM.COM
yourdomain.com = YOUR_REALM.COM
kadmin.local命令(需KDC管理員權限):kadmin.local -q "addprinc -randkey hbase/_HOST@YOUR_REALM.COM" # 創建HBase服務Principal
kadmin.local -q "xst -k /etc/security/keytabs/hbase.service.keytab hbase/_HOST@YOUR_REALM.COM" # 導出Keytab文件
kinit命令獲取票據,klist命令查看票據是否有效:kinit hbase/_HOST@YOUR_REALM.COM -kt /etc/security/keytabs/hbase.service.keytab
klist
需確保HBase集群所有節點(Master、RegionServer)均完成上述配置,且Keytab文件權限設置為600(僅root可讀)。
4. 配置訪問控制列表(ACL)
HBase ACL用于細粒度控制用戶/組對資源的訪問權限(表、命名空間、列族等),步驟如下:
hbase-site.xml中添加hbase.acl.defaultAction=DENY(默認拒絕所有未明確授權的操作);grant命令(語法:grant <用戶/組>, 權限類型, 資源>):# 給用戶user1授予表tbl1的讀權限(R)
grant 'user1', 'R', 'tbl1'
# 給用戶組@testgrp授予命名空間ns1的CREATE權限(C)
grant '@testgrp', 'C', '@ns1'
# 給用戶admin授予表tbl2的所有權限(RWXCA)
grant 'admin', 'RWXCA', 'tbl2'
revoke命令(語法:revoke <用戶/組>, 權限類型, 資源>);user_permission '表名'或user_permission 'NAMESPACE:表名'命令查看指定資源的權限分配。5. 集成安全插件(可選但推薦)
為提升安全管理的便捷性,可集成Apache Ranger或Apache Sentry等安全插件:
6. 啟用審計日志
審計日志用于記錄用戶操作(如表創建、數據修改、權限變更),便于后續追溯:
在hbase-site.xml中添加以下配置:
<property>
<name>hbase.security.audit.log.enabled</name>
<value>true</value>
</property>
<property>
<name>hbase.security.audit.log.file</name>
<value>/var/log/hbase/audit.log</value> <!-- 審計日志路徑 -->
</property>
確保/var/log/hbase/目錄存在且權限正確(hbase:hbase),重啟HBase服務后,審計日志將自動記錄所有權限相關操作。
7. 數據加密(可選但重要)
為保護數據在傳輸和存儲中的安全,可啟用以下加密功能:
hbase-site.xml中指定證書路徑;8. 定期維護與監控
user_permission命令檢查用戶權限,移除不再需要的權限;drop table操作);