centos7 기준입니다.

HDFS와 ranger가 설치되어있음을 가정합니다.

 

ranger 설치

https://developer-woong.tistory.com/96

 

ranger) ranger 2.4.0 admin 설치

centos7 기준입니다. ranger-admin 2.4.0 버전을 설치해보도록 하겠습니다. 사전에 postgreSQL, solr, jdk8이 설치되어있고, ranger 소스 빌드가 완료된 것을 가정합니다. 저의 환경에서는 mast02서버에 postgreSQL, m

developer-woong.tistory.com

 

HDFS 설치

https://developer-woong.tistory.com/36

 

hadoop 설치 (정리모음버전)

centos7 기준입니다. 6대의 서버가 준비되어있고, ntp설정, ip설정 및 호스트네임 등록, jdk 설정, zookeeper 설치가 완료됨을 가정합니다. https://developer-woong.tistory.com/37 centos linux ntp enable centos7 기준입니

developer-woong.tistory.com

 

ranger-hdfs plugin은 HDFS namenode들에 설치되며,

저의 환경에서는 mast01,mast02서버가 namenode이고, mast02서버가 ranger admin 서버입니다.

 

1. ranger-2.4.0-hdfs-plugin.tar.gz 압축 해제

action server: mast01,mast02

user: root

pwd: -

cmd:

# ranger 빌드 시 해당 파일이 생성됩니다.
cp /opt/apps/ranger/target/ranger-2.4.0-hdfs-plugin.tar.gz /opt/apps

# 압축 해제 및 권한 설정
cd /opt/apps/
tar xvfz ranger-2.4.0-hdfs-plugin.tar.gz
chown -R hadoop:hadoop /opt/apps/ranger-2.4.0-hdfs-plugin

# 계정 전환 및 경로 이동
su - hadoop
cd /opt/apps/ranger-2.4.0-hdfs-plugin

 

2. enable, disable 스크립트 수정

* root가 아닌 hadoop 계정으로 설치하고, policy cache, conf등의 경로를 직접 설정하는 과정입니다.

action server: mast01,mast02

user: hadoop

pwd: /opt/apps/ranger-2.4.0-hdfs-plugin

cmd:

# hdfs-plugin을 root 계정이 아닌 hadoop 계정으로 설치하기위해 아래와 같이 수정합니다.
vi enable-hdfs-plugin.sh

if [ ! -w /etc/passwd ]
then
    echo "ERROR: $0 script should be run as root."
    # exit 1 <-- 해당 부분 주석 처리
fi

# vi 화면에서 esc를 누른 후 해당 명령을 실행하고 y로 문자열을 변경해줍니다.
:%s?/etc/${PROJ_NAME}?/opt/apps/ranger-2.4.0-hdfs-plugin/etc/${PROJ_NAME}?c

# disable-hdfs-plugin.sh 역시 위와 같은 과정으로 수정합니다.

 

 

3. install.properties 수정

action server: mast01,mast02

user: hadoop

pwd: /opt/apps/ranger-2.4.0-hdfs-plugin

cmd:

vi install.properties

POLICY_MGR_URL=http://mast02:6080
REPOSITORY_NAME=hadoop-policy
COMPONENT_INSTALL_DIR_NAME=/opt/apps/hadoop-3.3.5

# AUDIT configuration with V3 properties
XAAUDIT.SOLR.ENABLE=true
XAAUDIT.SOLR.URL=http://mast01:8983/solr/ranger_audits
XAAUDIT.SOLR.USER=NONE
XAAUDIT.SOLR.PASSWORD=NONE
XAAUDIT.SOLR.ZOOKEEPER=mast01:2181,mast02:2181,mast03:2181/solr-cloud
XAAUDIT.SOLR.FILE_SPOOL_DIR=/opt/apps/ranger-2.4.0-hdfs-plugin/spool

# End of V2 properties   

SSL_KEYSTORE_FILE_PATH=/opt/apps/ranger-2.4.0-hdfs-plugin/conf/ranger-plugin-keystore.jks
SSL_TRUSTSTORE_FILE_PATH=/opt/apps/ranger-2.4.0-hdfs-plugin/conf/ranger-plugin-truststore.jks

CUSTOM_USER=hadoop
CUSTOM_GROUP=hadoop

# 경로 생성
mkdir conf

 

4. 플러그인 활성화

action server: mast01,mast02

user: hadoop

pwd: /opt/apps/ranger-2.4.0-hdfs-plugin

cmd:

./enable-hdfs-plugin.sh

 

5. ranger service 생성

action server: mast02:6080

user: hadoop

pwd: /opt/apps/ranger-2.4.0-hdfs-plugin

cmd:

 

Service Name *: hadoop-policy
Display Name  : hadoop-policy
Username : hadoop
Password : hadoop (linux 계정 비밀번호)
Namenode URL : hdfs://mast01:8020/,hdfs://mast02:8020/
Add New Configurations
- tag.download.auth.users : hadoop
- policy.download.auth.users : hadoop
- policy.grantrevoke.auth.users : hadoop

 

 

6. namenode 재시작

action server: mast01,mast02

user: hadoop

pwd: /opt/apps/ranger-2.4.0-hdfs-plugin

cmd:

/opt/apps/hadoop-3.3.5/bin/hdfs --daemon stop namenode
/opt/apps/hadoop-3.3.5/bin/hdfs --daemon start namenode

 

mast02:6080 (ranger UI) 내 Audit -> Plugin Status에 플러그인이 연동되었는지 확인합니다.

 

7. policy 생성

action server: mast02:6080

user: hadoop

pwd: /opt/apps/ranger-2.4.0-hdfs-plugin

cmd:

ranger UI 메인 화면 -> 생성한 hadoop-policy 클릭 -> 우측 상단 Add New Policy 클릭하여 생성 화면으로 진입합니다.

 

1. 정책 이름을 설정합니다.

2. 기존 정책들을 Override할 것인지 체크합니다.

3. 접근을 제어할 HDFS 경로입니다. * 표시는 전체 경로에 대해 접근을 제어하겠다는 의미입니다.

4. 접근 가능한 user입니다.

5. 해당 Role, Group, User가 어떤 엑세스에 접근할 수 있는 지 설정합니다.

6. 위 Allow Conditions, 즉, 허용된 Role, Group, User를 제외한 모든 엑세스를 거부한다는 뜻입니다.

7. 해당 사항을 저장합니다.

 

8. policy 다운로드 확인

action server: mast02:6080

user: hadoop

pwd: /opt/apps/ranger-2.4.0-hdfs-plugin

cmd:

mast02:6080 (ranger UI) 내 Audit -> Plugin Status에 플러그인이 변경 혹은 생성된 정책을 다운로드 받았는지 알 수 있습니다. 변경 직후, 느낌표가 뜨게 되며, 느낌표가 사라지면, 다운로드가 완료되었다는 뜻입니다.

 

9. 접근제어 적용확인

action server: mast01,mast02

user: hadoop

pwd: /opt/apps/ranger-2.4.0-hdfs-plugin

cmd:

# hadoop 유저이므로 통과됩니다.
hdfs dfs -ls /

# hadoop 유저 이외에 모든 엑세스를 거부하였으므로 통과되지않습니다.
su - admin
hdfs dfs -ls /

 

 

 

만약 admin이라는 유저도 HDFS에 접근 가능하게끔하려면, 7. policy 생성 내

USER에 admin을 추가합니다.

 

추가로 Hive, Yarn 등의 플러그인들도 포스팅해보도록 하겠습니다.

감사합니다.

반응형

+ Recent posts