在Debian上配置HBase安全設置,主要包括認證、授權、加密等方面,以下是關鍵步驟:
安裝Kerberos服務端
在Kerberos服務器上安裝并配置Kerberos,創建HBase服務主體及密鑰表(參考)。
# 示例:在Kerberos服務器上為HBase創建主體
kadmin.local -q "addprinc -pw hbase_password hbase/your-server@YOUR.REALM"
kadmin.local -q "ktadd -k /etc/security/keytabs/hbase.service.keytab hbase/your-server@YOUR.REALM"
配置HBase使用Kerberos
修改hbase-site.xml
,添加以下配置:
<property>
<name>hbase.security.authentication</name>
<value>kerberos</value>
</property>
<property>
<name>hbase.rpc.protection</name>
<value>authentication</value> <!-- 可選:encryption/privacy -->
</property>
<property>
<name>hbase.master.kerberos.principal</name>
<value>hbase/_HOST@YOUR.REALM</value>
</property>
<property>
<name>hbase.regionserver.kerberos.principal</name>
<value>hbase/_HOST@YOUR.REALM</value>
</property>
重啟HBase使配置生效。
啟用授權機制
在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。
使用HBase Shell管理權限
hbase shell
grant 'user1', 'RW', 'table_name'
revoke 'user1', 'W', 'table_name:cf:qualifier' # 撤銷列級權限
user_permission 'table_name'
生成證書和密鑰
使用keytool
生成自簽名證書(或使用商業證書):
keytool -genkeypair -alias hbase -keyalg RSA -keystore /etc/hbase/ssl/hbase.jks -storepass 123456 -validity 365
配置HBase啟用SSL
修改hbase-site.xml
:
<property>
<name>hbase.ssl.enabled</name>
<value>true</value>
</property>
<property>
<name>hbase.ssl.keystore.location</name>
<value>/etc/hbase/ssl/hbase.jks</value>
</property>
<property>
<name>hbase.ssl.keystore.password</name>
<value>123456</value>
</property>
重啟HBase。
客戶端配置SSL
客戶端需指定證書路徑和密碼,例如在Java代碼中:
Configuration conf = HBaseConfiguration.create();
conf.set("hbase.ssl.enabled", "true");
conf.set("hbase.ssl.keystore.location", "/path/to/client.jks");
conf.set("hbase.ssl.keystore.password", "client_password");
Connection connection = ConnectionFactory.createConnection(conf);
hbase.security.authentication
不為simple
(生產環境需禁用)。kadmin
更新Kerberos密碼,定期輪換SSL證書。krb5-user
、openssl
等依賴工具。以上步驟參考自,可根據實際需求選擇組合使用。