Zookeeper에 Kerberos 보안설정 하는 방법.
가정
* zookeeper 경로 = /home/zookeeper
* 설정파일 경로 = /home/zookeeper/conf/zoo.cfg
* 호스트명은 server01 ~ server03
* realm은 REALM.COM
1. Zookeeper Server
principal, keytab 파일
// kadmin
[root@server01]# kadmin
// principal 추가
kadmin: addprinc -randkey zookeeper/server01@REALM.COM
// keytab 생성
kadmin: xst -k zookeeper.keytab zookeeper/server01@REALM.COM
kadmin: quit
keytab 설정
// zookeeper.keytab 파일 이동
[root@server01]# mv zookeeper.keytab /home/zookeeper/conf
// 읽기 전용 권한조정
[root@server01]# chmod 400 /home/zookeeper/conf/zookeeper.keytab
/home/zookeeper/conf/zoo.cfg 파일에 설정 추가
authProvider.1=org.apache.zookeeper.server.auth.SASLAuthenticationProvider
jaasLoginRenew=3600000
/home/zookeeper/conf/jaas.conf 설정 (파일이 없으면 만들자)
Server {
com.sun.security.auth.module.Krb5LoginModule required
useKeyTab=true
keyTab="/home/zookeeper/conf/zookeeper.keytab"
storeKey=true
useTicketCache=false
principal="zookeeper/server01@REALM.COM";
};
/home/zookeeper/conf/java.env 설정 (파일이 없으면 만들자)
export JVMFLAGS="-Djava.security.auth.login.config=/home/zookeeper/conf/jaas.conf"
server02, server03 도 동일하게 pricipal 추가하고 설정파일을 세팅.
2. Zookeeper Client
principal, keytab
// kadmin
[root@server01]# kadmin
// principal 추가
kadmin: addprinc -randkey zkcli@REALM.COM
// keytab 생성
// -norandkey 옵션이 없는 Kerberos일 경우 빼고 생성
kadmin: xst -norandkey -k zkcli.keytab zkcli@REALM.COM
kadmin: quit
keytab 설정
// zkcli.keytab 파일 이동
[root@server01]# mv zkcli.keytab /home/zookeeper/conf
// 읽기 전용 권한조정
[root@server01]# chmod 400 /home/zookeeper/conf/zkcli.keytab
/home/zookeeper/conf/jaas.conf 파일에 Client 설정 추가
Client {
com.sun.security.auth.module.Krb5LoginModule required
useKeyTab=true
keyTab="/home/zookeeper/conf/zkcli.keytab"
storeKey=true
useTicketCache=false
principal="zkcli@REALM.COM";
};
server02, server03에 keytab 파일 복사
[root@server01]# scp /home/zookeeper/conf/zkcli.keytab root@server02:/home/zookeeper/conf
[root@server01]# scp /home/zookeeper/conf/zkcli.keytab root@server03:/home/zookeeper/conf
server02, server03 서버들의 jaas.conf 파일에도 Client 설정 추가
3. 확인
// 전체 Zookeeper 재시작
[root@server01]# /home/zookeeper/bin/zkServer.sh restart
[root@server02]# /home/zookeeper/bin/zkServer.sh restart
[root@server03]# /home/zookeeper/bin/zkServer.sh restart
// 접속
[root@server01]# /home/zookeeper/bin/zkCli.sh -server server01:2181
// zookeeper.out 파일에 보면 아래와 같은 인증관련 로그 확인 가능
2015-04-20 15:25:07,908 [myid:1] - INFO [NIOServerCxn.Factory:0.0.0.0/0.0.0.0:2181:SaslServerCallbackHandler@118] - Successfully authenticated client: authenticationID=zkcli@REALM.COM; authorizationID=zkcli@REALM.COM.
2015-04-20 15:25:07,917 [myid:1] - INFO [NIOServerCxn.Factory:0.0.0.0/0.0.0.0:2181:SaslServerCallbackHandler@134] - Setting authorizedID: zkcli@REALM.COM
2015-04-20 15:25:07,917 [myid:1] - INFO [NIOServerCxn.Factory:0.0.0.0/0.0.0.0:2181:ZooKeeperServer@964] - adding SASL authorization for authorizationID: zkcli@REALM.COM
'Hadoop' 카테고리의 다른 글
[Hadoop] 보안설정 (security, kerberos, spnego, ssl) (0) | 2015.05.06 |
---|---|
[Hadoop] jsvc를 이용한 secure datanode 적용시 short circuit local read 사용불가 (0) | 2015.04.27 |
[Hadoop] Kerberos가 -norandkey 옵션을 지원하지 않는 버전일 경우 (0) | 2015.04.20 |
[Hadoop] Kerberos 인증시 Receive Timed out으로 Login Failure 에러가 날 경우 (0) | 2015.04.20 |
[Hadoop] HDFS Federation + NameNodeHA (2) | 2015.04.14 |