- Published on
Secured(Kerberized) HBase 구축하기.
- Authors
- Name
Overview
HBase를 secure하게 관리하고 싶다면, kerberos 인증을 적용해야한다. HBase에 kerberos를 적용하기 Hadoop과 zookeeper 컴포넌트에 의존적이기 때문에 hadoop과 zookeeper도 secure하게 관리되어야한다. hadoop에 kerberos를 적용하는 방법은 Secured(Kerberized) Hadoop 구축하기 를 참고하고,zookeeper에 kerberos를 적용하는 법은 Secured(Kerberized) Zookeeper 구축하기를 참고한다.
또는 HBase 공식문서에서 Security 부분 hbase reference book (security)을 참고한다.
keytab 생성
hbase/{FQDN}@{realm}
형식의 principal이 kerberos에 등록되어야한다. 그리고 적절한 위치(ex /etc/hbase.keytab
)에 keytab을 위치시킨다. 물론 HMaster나 region-servver는 hbase계정으로 실행하여야한다.
Configurations 변경
configuratoin 파일을 아래를 참고하여 수정한다.
<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를 secure하게 사용할 수 있다. kerberos를 적용하게 되면, Table이나 Namespace 최신 HBase의 경우 row나 cell 단위로 ACL(Access Control List)을 관리하여 접근 제어가 가능하게 된다.