HBase in Pseudo-Distributed Mode with Kerberos Authentication
Prerequisites
- Ubuntu
Setup Kerberos (Basic)
/docs/auxiliary-software/kerberos
Hadoop Kerberos Configuration
sudo kadmin.local
kadmin.local: addprinc hdfs/localhost@JREACT.EXAMPLE.COM
kadmin.local: ktadd -k /etc/krb5kdc/kadm5.keytab hdfs/localhost@JREACT.EXAMPLE.COM
kadmin.local: addprinc host/localhost@JREACT.EXAMPLE.COM
kadmin.local: ktadd -k /etc/krb5kdc/kadm5.keytab host/localhost@JREACT.EXAMPLE.COM
Check:
kadmin.local: list_principals
Create HBase Principal and Keytab
sudo kadmin.local
kadmin.local: addprinc -randkey hbase/localhost@JREACT.EXAMPLE.COM
kadmin.local: ktadd -k /etc/krb5kdc/kadm5.keytab hbase/localhost@JREACT.EXAMPLE.COM
Use your values of /etc/krb5kdc/kadm5.keytab
and hbase/localhost@JREACT.EXAMPLE.COM
.
Configure HBase for Kerberos
Edit hbase-site.xml:
<property>
<name>hbase.security.authentication</name>
<value>kerberos</value>
</property>
<property>
<name>hbase.master.kerberos.principal</name>
<value>hbase/localhost@JREACT.EXAMPLE.COM</value>
</property>
<property>
<name>hbase.regionserver.kerberos.principal</name>
<value>hbase/localhost@JREACT.EXAMPLE.COM</value>
</property>
<property>
<name>hbase.master.keytab.file</name>
<value>/etc/krb5kdc/kadm5.keytab</value>
</property>
<property>
<name>hbase.regionserver.keytab.file</name>
<value>/etc/krb5kdc/kadm5.keytab</value>
</property>
Also, in hbase-env.sh:
...
...
export HBASE_OPTS="$HBASE_OPTS -Djava.security.krb5.conf=/etc/krb5.conf"
...
Make sure you've done:
kinit -k -t /etc/krb5kdc/kadm5.keytab hbase/localhost@JREACT.EXAMPLE.COM
Do this:
klist -kte /etc/krb5kdc/kadm5.keytab
Output:
Keytab name: FILE:/etc/krb5kdc/kadm5.keytab
KVNO Timestamp Principal
---- ------------------- ------------------------------------------------------
2 04/11/2025 11:35:11 hdfs/localhost@JREACT.EXAMPLE.COM (aes256-cts-hmac-sha1-96)
2 04/11/2025 11:35:11 hdfs/localhost@JREACT.EXAMPLE.COM (aes128-cts-hmac-sha1-96)
2 04/11/2025 11:36:02 host/localhost@JREACT.EXAMPLE.COM (aes256-cts-hmac-sha1-96)
2 04/11/2025 11:36:02 host/localhost@JREACT.EXAMPLE.COM (aes128-cts-hmac-sha1-96)
2 04/11/2025 11:36:42 hbase/localhost@JREACT.EXAMPLE.COM (aes256-cts-hmac-sha1-96)
2 04/11/2025 11:36:42 hbase/localhost@JREACT.EXAMPLE.COM (aes128-cts-hmac-sha1-96)
klist
Output:
Ticket cache: FILE:/tmp/krb5cc_0
Default principal: hbase/localhost@JREACT.EXAMPLE.COM
Valid starting Expires Service principal
04/11/2025 11:42:35 04/11/2025 21:42:35 krbtgt/JREACT.EXAMPLE.COM@JREACT.EXAMPLE.COM
renew until 04/12/2025 11:42:35