在CentOS上設置HBase的安全策略通常涉及以下幾個步驟:
確保你已經正確安裝了HBase。如果還沒有安裝,可以參考HBase官方文檔進行安裝。
安裝Kerberos客戶端和服務器:
sudo yum install krb5-server krb5-utils
配置Kerberos服務器:
編輯 /etc/krb5.conf
文件,添加你的KDC(Key Distribution Center)信息:
[libdefaults]
default_realm = YOUR-REALM.COM
[realms]
YOUR-REALM.COM = {
kdc = kdc.your-realm.com
admin_server = admin.your-realm.com
}
[domain_realm]
.your-realm.com = YOUR-REALM.COM
your-realm.com = YOUR-REALM.COM
創建Kerberos principal和keytab:
sudo kadmin: addprinc hbase/_HOST@YOUR-REALM.COM
sudo kadmin: ktadd -k /etc/security/keytabs/hbase.service.keytab hbase/_HOST@YOUR-REALM.COM
配置HBase使用Kerberos:
編輯HBase的配置文件 /etc/hbase/conf/hbase-site.xml
,添加以下內容:
<property>
name = hbase.security.authentication
value = kerberos
</property>
<property>
name = hbase.master.kerberos.principal
value = hbase/_HOST@YOUR-REALM
</property>
<property>
name = hbase.regionserver.kerberos.principal
value = hbase/_HOST@YOUR-REALM
</property>
<property>
name = hbase.security.authorization
value = true
</property>
重啟HBase服務:
sudo systemctl restart hbase-masters
sudo systemctl restart hbase-regionserver
使用HBase shell設置ACL:
hbase grant 'hbase', 'RW', 'table1'
hbase grant 'user1', 'RW', 'table2'
使用Java API設置ACL:
Configuration conf = HBaseConfiguration.create();
Connection connection = ConnectionFactory.createConnection(conf);
Admin admin = connection.getAdmin();
AccessControlList acl = new AccessControlList("table1");
acl.addPermission(new Permission(TableName.valueOf("table1"), "user1", "RW"));
admin.setAccessControlList(acl, "default");
admin.close();
connection.close();
配置防火墻:
sudo firewall-cmd --permanent --zone=public --add-port=9090/tcp
sudo firewall-cmd --permanent --zone=public --add-port=8020/tcp
sudo firewall-cmd --reload
配置安全組(如果使用云服務提供商):
添加相應的入站規則以允許端口9090和8020的流量。
驗證Kerberos認證:
hbase shell
list
驗證ACL:
hbase shell
scan 'users'