2020년 12월 28일 월요일

Cloudera Manager [2] - Kerberos 보안설정


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




댓글 없음:

댓글 쓰기