- Authors

- Name
- Youngju Kim
- @fjvbn20031
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ファイルを修正します。
<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)を管理でき、アクセス制御が可能になります。
クイズ
Q1: 「Secured (Kerberized) HBase クラスターの構築方法」の主なトピックは何ですか?
HBaseにKerberosセキュリティを適用する方法を解説します。
Q2: この記事の重要なポイントは何ですか?
HBaseにKerberosセキュリティを適用する方法を解説します。
Q3: この記事の概念を実践にどう適用できますか?
記事全体で議論されている実践的な例やパターンを参考にしてください。