- Authors
- Name
Overview
HBaseをセキュアに管理したい場合、Kerberos認証を適用する必要があります。HBaseにKerberosを適用するにはHadoopとZooKeeperコンポーネントに依存するため、HadoopとZooKeeperもセキュアに管理されている必要があります。HadoopにKerberosを適用する方法はSecured (Kerberized) Hadoopの構築を参考にし、ZooKeeperにKerberosを適用する方法はSecured (Kerberized) ZooKeeperの構築を参考にしてください。
または、HBase公式ドキュメントのSecurityセクションhbase reference book (security)を参照してください。
keytabの作成
hbase/{FQDN}@{realm}形式のprincipalがKerberosに登録されている必要があります。そして、適切な場所(例:/etc/hbase.keytab)にkeytabを配置します。もちろん、HMasterやRegionServerはhbaseアカウントで実行する必要があります。
Configurationsの変更
以下を参考にconfigurationファイルを修正します。
hbase-site.xml
<configuration>
<property>
<name>hbase.cluster.distributed</name>
<value>true</value>
</property>
<property>
<name>hbase.tmp.dir</name>
<value>./tmp</value>
</property>
<property>
<name>hbase.rootdir</name>
<value>hdfs://mycluster/hbase</value>
</property>
<property>
<name>hbase.unsafe.stream.capability.enforce</name>
<value>false</value>
</property>
<property>
<name>hbase.zookeeper.quorum</name>
<value>hadoop1.mysite.com,hadoop2.mysite.com,hadoop3.mysite.com</value>
</property>
<property>
<name>hbase.security.authentication</name>
<value>kerberos</value>
</property>
<property>
<name>hbase.security.authorization</name>
<value>true</value>
</property>
<property>
<name>hbase.superuser</name>
<value>hbase</value>
</property>
<property>
<name>hbase.coprocessor.region.classes</name>
<value>org.apache.hadoop.hbase.security.access.AccessController</value>
</property>
<property>
<name>hbase.coprocessor.master.classes</name>
<value>org.apache.hadoop.hbase.security.access.AccessController</value>
</property>
<property>
<name>hbase.rpc.engine</name>
<value>org.apache.hadoop.hbase.ipc.SecureRpcEngine</value>
</property>
<property>
<name>hbase.rpc.protection</name>
<value>authentication</value>
</property>
<property>
<name>hbase.zookeeper.client.keytab.file</name>
<value>/etc/hbase.keytab</value>
</property>
<property>
<name>hbase.master.kerberos.principal</name>
<value>hbase/_HOST@CHAOS.ORDER.COM</value>
</property>
<property>
<name>hbase.master.keytab.file</name>
<value>/etc/hbase.keytab</value>
</property>
<property>
<name>hbase.regionserver.kerberos.principal</name>
<value>hbase/_HOST@CHAOS.ORDER.COM</value>
</property>
<property>
<name>hbase.regionserver.keytab.file</name>
<value>/etc/hbase.keytab</value>
</property>
<property>
<name>hbase.client.kerberos.principal</name>
<value>hbase/_HOST@CHAOS.ORDER.COM</value>
</property>
<property>
<name>hbase.client.keytab.file</name>
<value>/etc/hbase.keytab</value>
</property>
</configuration>
そして、以下のようにconfフォルダの下にjaas.confファイルを作成します。このとき、principal部分には現在のホストに合わせて入力します。
Client {
com.sun.security.auth.module.Krb5LoginModule required
useKeyTab=true
useTicketCache=false
keyTab="/etc/hbase.keytab"
principal="hbase/hadoop1.mysite.com@CHAOS.ORDER.COM";
};
ZooKeeperとHBaseの再起動
ZooKeeperとHBaseを再起動すると、HBaseをセキュアに使用できるようになります。Kerberosを適用すると、TableやNamespace、最新のHBaseではrowやcell単位でACL(Access Control List)を管理でき、アクセス制御が可能になります。