Ubuntu上HBase安全设置指南
HBase安全设置需围绕身份认证、授权管理、数据加密三大核心展开,以下是具体实施步骤:
sudo apt install krb5-kdc krb5-admin-server。Kerberos是HBase安全的基础,用于验证客户端与服务端的身份。
/etc/krb5.conf,指定领域(REALM)和KDC服务器信息(如default_realm = EXAMPLE.COM、kdc = kdc.example.com);kadmin.local命令创建HBase主体(addprinc -randkey hbase/_HOST@EXAMPLE.COM),并导出密钥表(ktadd -k /etc/hbase.keytab hbase/_HOST@EXAMPLE.COM);hbase-site.xml,添加以下关键配置:<property>
<name>hbase.security.authentication</name>
<value>kerberos</value>
</property>
<property>
<name>hbase.security.authorization</name>
<value>true</value>
</property>
<property>
<name>hbase.master.kerberos.principal</name>
<value>hbase/_HOST@EXAMPLE.COM</value>
</property>
<property>
<name>hbase.regionserver.kerberos.principal</name>
<value>hbase/_HOST@EXAMPLE.COM</value>
</property>
<property>
<name>hbase.master.keytab.file</name>
<value>/etc/hbase.keytab</value>
</property>
<property>
<name>hbase.regionserver.keytab.file</name>
<value>/etc/hbase.keytab</value>
</property>
start-hbase.sh,验证服务是否正常启动(无Kerberos认证错误)。授权用于控制用户对HBase资源的访问权限(表级、列族级)。
hbase-site.xml中设置hbase.security.authorization为true;create_user 'my_user', 'password')和角色(create_role 'admin_role');grant命令为用户或角色分配权限(如grant 'my_user', 'RW', 'my_table'表示用户my_user对my_table有读写权限;grant 'admin_role', 'RWXCA', '.*'表示角色admin_role对所有表有完全控制权限)。SSL/TLS用于加密HBase客户端与服务端之间的数据传输,防止窃听或篡改。
openssl生成自签名证书(openssl req -newkey rsa:2048 -nodes -keyout server.key -x509 -days 365 -out server.crt);keytool将证书导入密钥库(keytool -import -alias hbase -file server.crt -keystore hbase.keystore -storepass changeit),并导出信任库(keytool -export -alias hbase -file hbase.cer -keystore hbase.keystore;keytool -import -alias hbase -file hbase.cer -keystore hbase.truststore -storepass trustpass);hbase-site.xml中添加以下配置:<property>
<name>hbase.ssl.enabled</name>
<value>true</value>
</property>
<property>
<name>hbase.ssl.keystore.location</name>
<value>/path/to/hbase.keystore</value>
</property>
<property>
<name>hbase.ssl.keystore.password</name>
<value>changeit</value>
</property>
<property>
<name>hbase.ssl.truststore.location</name>
<value>/path/to/hbase.truststore</value>
</property>
<property>
<name>hbase.ssl.truststore.password</name>
<value>trustpass</value>
</property>
hbase ssl.enabled=true、hbase.ssl.keystore.location=/path/to/client.keystore)。ufw配置防火墙,仅允许信任的IP访问HBase端口(如Master的60000端口、RegionServer的60020端口、Zookeeper的2181端口):sudo ufw allow from trusted_ip to any port 60000
sudo ufw allow from trusted_ip to any port 60020
sudo ufw allow from trusted_ip to any port 2181
hbase-site.xml:<property>
<name>hbase.ssl.truststore.location</name>
<value>/path/to/client.truststore</value>
</property>
<property>
<name>hbase.ssl.truststore.password</name>
<value>trustpass</value>
</property>
kinit命令获取Kerberos票据(kinit -kt /path/to/client.keytab hbase/user@example.com),再通过HBase API连接。以上步骤覆盖了Ubuntu上HBase的核心安全需求,实施后需通过hbase shell测试权限(如scan 'my_table')、openssl s_client测试SSL连接等方式验证配置有效性。