CDH는 보안프로그램으로 커버로스를 제공한다. 유저가 많아지고 각 유저에 대한 권한이 세분화되어야 함에 따라 그 필요성이 중시된다. 서버환경은 EC2-CentOs7, CDH5.15으로 진행된다.
[ 커버로스 개념 ]
Protocol의 동작순서는 아래와 같다.
이미지 출처 :
https://www.letmecompile.com/kerberos-protocol
간단히 이해하자면 커버로스 프로세스는 영화를 예매하는 것에 비유할 수 있다. 인터넷(AS)으로 영화를 예매한다. 예매코드를 가지고 영화관에서 티켓(TGS)를 뽑는다. 입장시 해당 티켓를 점원(SS)에게 제출한다. 3단계 보안프로세스를 통해 유효한 티켓이있는 유저만 접속제한하여 편리하게 관리하는 것이 가능하다.
[ 1.사전 설치 ]
JDK 1.8.0_161이상 버전을 설치하도록 한다.
커버로드 프로토콜에서 AES-256암호화를 이전버전에선 사용하지 못하기에 따로 셋팅을 해줘야하는 번거로움이 있기 때문이다.
[ 2.커버로스 설치 ]
Cloudera manager server가 설치된 EC2
$ yum install openldap-clients
$ yum install krb5-server
모든서버
$ yum install krb5-workstation
$ yum install krb5-libs
* SSH를 통해 패키지 설치
pem키를 cloudera manager가 설치된 EC2로 옮긴 후,
$ sudo chmod 400 my-key-pair.pem
설정안할시 Load key "my.pem": bad permissions, Permission denied에러
이후 아래명령어로 접속하여 패키지 설치
$ ssh -i /path/my-key-pair.pem my-instance-user-name@my-instance-public-dns-name
서버가 수십대일시, 쉘스크립트를 짜서 실행
[ 3.커버로스 설정 ]
$ hostname -f //해당호스트네임 보기
EXAMPLE.COM = 현재 호스트네임,
cent1.example.com = MIT KDC서버 호스트, Cloudera Manager host가 설치된 호스트네임으로 바꿔서 기입
$ vi /etc/krb5.conf
[logging]
default = FILE:/var/log/krb5libs.log
kdc = FILE:/var/log/krb5kdc.log
admin_server = FILE:/var/log/kadmind.log
[libdefaults]
dns_lookup_realm = false
ticket_lifetime = 24h
renew_lifetime = 7d
forwardable = true
rdns = false
default_realm = EXAMPLE.COM
default_ccache_name = KEYRING:persistent:%{uid}
[realms]
EXAMPLE.COM = {
kdc = cent1.example.com
admin_server = cent1.example.com
}
[domain_realm]
.example.com = EXAMPLE.COM
example.com = EXAMPLE.COM
$ vi /var/kerberos/krb5kdc/kdc.conf
해당 설정파일에
max_life = 1d
max_renewable_life = 7d
설정값을 추가 한다.
[kdcdefaults]
kdc_ports = 88
kdc_tcp_ports = 88
[realms]
EXAMPLE.COM = {
#master_key_type = aes256-cts
acl_file = /var/kerberos/krb5kdc/kadm5.acl
dict_file = /usr/share/dict/words
admin_keytab = /var/kerberos/krb5kdc/kadm5.keytab
supported_enctypes = aes256-cts:normal aes128-cts:normal des3-hmac-sha1:normal arcfour-hmac:normal camellia256-cts:normal camellia128-cts:normal des-hmac-sha1:normal des-cbc-md5:normal des-cbc-crc:normal
max_life = 1d
max_renewable_life = 7d
}
admin 권한을 위해
/var/kerberos/krb5kdc/kadm5.acl 파일을 수정한다.
EXAMPLE.COM에 해당하는 부분 cloudera manager가 설치된 hostname으로 변경.
*/admin@EXAMPLE.COM *
[ 4.커버로스 데이터베이스 생성 ]
DB와 비밀번호를 생성한다.
$ kdb5_util create -s
Enter KDC database master key: 비밀번호
Re-enter KDC database master key to verify: 비밀번호
[ 5.서비스 등록 ]
KDC서버를 재시작하고 EC2종료 후에도 실행되도록 한다.
$ sudo service krb5kdc restart
$ sudo service kadmin restart
$ sudo systemctl enable krb5kdc
$ sudo systemctl enable kadmin
[ 6.서비스 실행 ]
예시에선 해당계정을 cloudera-scm로 생성했다.
$ sudo kadmin.local
Authenticating as principal root/admin@ip-172-11-11-199.ap-northeast-1.compute.internal with password.
kadmin.local: addprinc -pw 비밀번호 cloudera-scm/admin@ip-ip-172-11-11-199.ap-northeast-1.compute.internal
WARNING: no policy specified for cloudera-scm/admin@ip-ip-172-11-11-199.ap-northeast-1.compute.internal; defaulting to no policy
Principal "cloudera-scm/admin@ip-ip-172-11-11-199.ap-northeast-1.compute.internal" created.
kadmin.local: modprinc -maxrenewlife 1week cloudera-scm/admin@ip-ip-172-11-11-199.ap-northeast-1.compute.internal
$ kinit cloudera-scm/admin@ip-172-11-11-199.ap-northeast-1.compute.internal
Password for cloudera-scm/admin@ip-172-11-11-199.ap-northeast-1.compute.internal: 비밀번호
$ klist -e
Ticket cache: KEYRING:persistent:1000:1000
Default principal: cloudera-scm/admin@ip-172-11-11-199.ap-northeast-1.compute.internal
Valid starting Expires Service principal
12/23/2020 16:07:04 12/24/2020 16:07:04 krbtgt/ip-172-11-11-199.ap-northeast-1.compute.internal@ip-172-11-11-199.ap-northeast-1.compute.internal
Etype (skey, tkt): aes256-cts-hmac-sha1-96, aes256-cts-hmac-sha1-96
[ 7.CDH에서 커버로스 연동 ]
최상단메뉴의 관리->보안 클릭 후 'Kerberos 설정' 버튼 클릭
시작에서 모두 체크 후 다음,
KDC정보에서 Kerberos 암호화 유형을 아래 aes256-cts-hmac-sha1-96로 설정,
나머지 정보는 cloudera manager설치 호스트네임 입력
나머지 설정은 아래와 같이 Default
설정 완료 후 커버로스 설정이 됬음을 확인한다.
참조 : https://plenium.wordpress.com/2018/07/17/kerberos-setup-in-cloudera-hadoop
* CDH에서 커버로스 연동을 해제하고 싶다면
https://www.programmersought.com/article/81434721806