Cloudera Manager가 클러스터 Kerberos를
6794 단어 hadoop,KerberosClouderaManager,
Cloudera Manager Advent Calendar째 날.
저는 케베로스를 안전하게 사용하고 싶어요. 이런 환경도 늘고 있어요. 그런데 스스로 검증용 환경을 구축하면 케베로스의 구성이 번거롭고 주변에 안전 집단을 구축하는 일은 별로 없어요.
또 센트리 등이 사용 적합 여부를 확인하고자 하는 경우 검증용 환경을 마련하는 게 번거롭다면 착실한 경우도 있다.
이번에는 액션 검증을 위해 안전한 클러스터를 구축하는 환경을 가정한 케버로스화에 대해 설명한다.
principal은 비밀번호가 같거나 안전한 집단이지만 안전하지 않은 구성이기 때문에 이번 내용은 동작을 검증하기 위해 설정된 것이지 정식 환경을 구상한 것이 아닙니다.
환경 및 사전 요구 사항 검증
Linux 측 작업
인증용 Kerberos 설정 스크립트krb-bootstrap를 사용하여 KDC 및 인증 서버를 구성한 후 각 노드에 클라이언트를 설치하는 프로세스입니다.
#!/bin/sh
BASE=http://localhost:7180/api/v8
USERNAME="admin"
USERPASS="admin"
nodes=$(curl -X GET -u "$USERNAME:$USERPASS" -i $BASE/hosts | grep hostname | awk -F'"' '{print $4}')
# install KDC/krb5.conf
yum -y install git; git clone https://github.com/daisukebe/krb-bootstrap.git; cd krb-bootstrap; ./configure_krb5.sh
# install client and deply krb5.conf
for i in $(echo $nodes | cut -d' ' -f2-);do ssh $i yum -y install krb5-workstation; scp /etc/krb5.conf $i:/etc ;done
상술한 것이 끝나면 준비할 수 있다.krb-bootstrap 스크립트 작업에 대해서는 링크의 Readme를 참조하십시오.
Cloudera Manager 측면의 작업
지금부터 설정 마법사의 추진 방법을 설명하겠습니다.
먼저 보안 메뉴 선택
대상 클러스터의 Enable Kerberos 버튼에서 마법사 시작
전제조건의 확인입니다.위의 Linux 측 작업이 완료되면 모두 검토한 후 계속 진행하십시오.
Kerberos 측의 설정 정보를 묻기 때문에 다음과 같이 설정하십시오
KDC 서버 호스트: Cloudera Manager Server의 노드를 설치하는hostname
Kerberos 보안 예비: HADOOPkrb-bootstrap에서 지정)
Linux 측 작업 내에서 수동krb5.conf를 보내는 중이라 검사하지 않아도 됩니다
Admin 사용자 정보는 다음과 같이 입력하십시오.
사용자 이름:cloudera scm/admin
비밀번호:cloudera
모두 krb-bootstrap 지정
각 서비스에 사용되는 Principal의 설정입니다.변경할 필요 없음
여기도 가격 변경 필요 없어요.
클러스터를 확인하고 다시 시작하십시오.
명령이 실행될 것이니 끝날 때까지 기다려 주십시오
여기서 끝나면 완성된 화면이 나오면 끝이에요.
켈베로스화되면 안전 측면에서 다음과 같은 상황을 확인할 수 있다.
구축 후
만약 Kerberos화가 된다면 다음과 같이 OS 사용자를 사용하지 않고 kinit 인증된 principal을 통해 명령을 수행할 수 있습니다.
이하의hdfs@HADOOP의 암호는hdfs입니다.
[root@n1 ~]# kinit hdfs
Password for hdfs@HADOOP:
[root@n1 ~]# hdfs dfs -ls /user/history
Found 2 items
drwxrwx--- - mapred hadoop 0 2015-12-25 11:17 /user/history/done
drwxrwxrwt - mapred hadoop 0 2015-12-25 11:17 /user/history/done_intermediate
반면 OS의hdfs 사용자라도 principal로 인증하지 않으면 다음과 같은 오류를 확인할 수 있다.[root@n1 ~]# sudo -u hdfs hdfs dfs -ls /user/history
15/12/25 15:57:29 WARN security.UserGroupInformation: PriviledgedActionException as:hdfs (auth:KERBEROS) cause:javax.security.sasl.SaslException: GSS initiate failed [Caused by GSSException: No valid credentials provided (Mechanism level: Failed to find any Kerberos tgt)]
15/12/25 15:57:29 WARN ipc.Client: Exception encountered while connecting to the server : javax.security.sasl.SaslException: GSS initiate failed [Caused by GSSException: No valid credentials provided (Mechanism level: Failed to find any Kerberos tgt)]
15/12/25 15:57:29 WARN security.UserGroupInformation: PriviledgedActionException as:hdfs (auth:KERBEROS) cause:java.io.IOException: javax.security.sasl.SaslException: GSS initiate failed [Caused by GSSException: No valid credentials provided (Mechanism level: Failed to find any Kerberos tgt)]
ls: Failed on local exception: java.io.IOException: javax.security.sasl.SaslException: GSS initiate failed [Caused by GSSException: No valid credentials provided (Mechanism level: Failed to find any Kerberos tgt)]; Host Details : local host is: "n1.lab.cloudera.com/10.17.81.194"; destination host is: "n1.lab.cloudera.com":8020;
Sentry 사용 시여기.를 참조할 수 있습니다.Hive, Impala를 사용할 때 꼭 시도해 보십시오.
(impala의 principal은 이번 절차에 따라 제작되지 않았기 때문에 검증 시
echo "addprinc -pw impala impala" | kadmin.local
처럼 제작하세요)끝말
어때?
나는 움직이는 것이 있는지 없는지가 상당히 문턱이 내려갔다고 생각한다.만약 검증 환경에서 집단을 구성할 수 있다면 반드시 시도해 보십시오.
다음은 참조용으로만 API에서 Cloudera Manager에서 작업을 시도한 예입니다.
wget https://gist.githubusercontent.com/azurecube/040aa92d8da605e68a28/raw/83218685ab0f8ab16407c53f0e856cb7dc771155/cm_kerberize.sh
bash cm_kerberize.sh
안전 집단의 첫걸음이나 검증의 문턱을 조금 낮추면 좋겠다.
Reference
이 문제에 관하여(Cloudera Manager가 클러스터 Kerberos를), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/azurecube/items/771de2814115338eed71텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)