1. 啟用Kerberos認證(強身份認證核心)
Kerberos是HBase安全的基礎,通過票據機制確??蛻舳伺c服務端的雙向身份驗證。配置步驟如下:
sudo yum install krb5-workstation
安裝客戶端工具。/etc/krb5.conf
文件,定義KDC(Key Distribution Center)和realm信息(如[libdefaults] default_realm = YOUR-REALM.COM
)。kadmin.local
命令創建HBase服務的principal(如addprinc -randkey hbase/_HOST@YOUR-REALM.COM
),并導出keytab文件(如ktadd -k /etc/security/keytabs/hbase.service.keytab hbase/_HOST@YOUR-REALM.COM
)。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>hbase.security.authorization</name>
<value>true</value>
</property>
systemctl restart hbase-master
、systemctl restart hbase-regionserver
),使用kinit
獲取票據(如kinit hbase/_HOST@YOUR-REALM.COM
),并通過hbase shell list
命令驗證認證是否生效。2. 配置訪問控制列表(ACL,細粒度權限管理)
HBase的ACL支持表、列族級別的權限控制(讀、寫、創建、管理等),通過AccessController
協處理器實現。配置步驟如下:
hbase-site.xml
中添加:<property>
<name>hbase.security.access.controller</name>
<value>org.apache.hadoop.hbase.security.access.AccessController</value>
</property>
# 授予user1對table1表的讀寫權限
grant 'user1', 'RW', 'table1'
# 授予admin_group對system表的完全管理權限(創建、刪除、管理)
grant 'admin_group', 'RWCA', 'system'
user_permission
命令查看用戶權限(如user_permission 'table1'
),確保權限分配符合最小必要原則。3. 數據加密(傳輸與存儲安全)
hbase-site.xml
中的hbase.rpc.protection
屬性為privacy
(啟用加密),并為HBase配置SSL證書(如hbase.ssl.keystore.file
、hbase.ssl.keystore.password
)。hbase-site.xml
中啟用TDE(如hbase.coprocessor.master.classes
添加org.apache.hadoop.hbase.security.encryption.TDEMasterObserver
)。4. 集成Apache Ranger(高級權限管理)
Ranger提供集中式權限管理、審計和策略定義,增強HBase的安全性。集成步驟如下:
hbase-site.xml
中添加Ranger相關屬性(如hbase.security.authorization.provider
設置為org.apache.ranger.authorization.hbase.RangerAuthorizationProvider
),并配置Ranger Admin的連接信息。5. 防火墻與網絡安全配置
firewall-cmd
開放HBase所需端口(如Master端口16000、RegionServer端口16020、ZooKeeper端口2181),并限制訪問來源IP(如僅允許可信網段訪問):sudo firewall-cmd --permanent --zone=public --add-port=16000/tcp
sudo firewall-cmd --permanent --zone=public --add-port=16020/tcp
sudo firewall-cmd --permanent --zone=public --add-port=2181/tcp
sudo firewall-cmd --reload
hbase.coprocessor.region.classes
配置IP白名單,限制只有指定IP的客戶端可以訪問HBase集群。6. 日志審計(操作追蹤)
啟用HBase的安全日志審計,記錄用戶的操作(如讀、寫、授權)和訪問記錄,便于后續追蹤和排查安全事件。配置hbase-site.xml
中的日志屬性:
<property>
<name>hbase.security.logger</name>
<value>INFO</value>
</property>
<property>
<name>hbase.security.audit.logger</name>
<value>INFO</value>
</property>
日志默認存儲在HBase的logs
目錄下,可通過日志分析工具(如ELK)進行集中管理和分析。
7. 安全加固(基礎環境安全)
hbase
用戶),避免未授權使用;刪除不必要的用戶賬號(如測試賬號)。chattr +i
命令鎖定口令文件(如/etc/shadow
),防止未授權修改。setenforce 1
命令開啟SELinux,并配置相應的策略(如hbase.te
策略文件),限制HBase進程的權限。