centos7 기준입니다.

ranger 2.4.0, hive 3.1.3이 설치되어있음을 가정합니다. 제 환경에서는 mast02서버에 설치되어있습니다.

 

hive 설치

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

 

Apache Hive 설치

centos7 기준입니다. PostgreSQL, hadoop이 설치됨을 가정합니다. 서버는 호스트네임기준 mast02서버에 설치할 예정이고, PostgreSQL 역시 mast02서버에 설치됨을 가정합니다. hive폴더는 hadoop 유저권한, hive met

developer-woong.tistory.com

 

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

 

ranger 빌드

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

 

ranger) Apache Ranger 2.4.0 빌드

centos7 기준입니다. 호스트명이 mast02인 서버에서 진행하였습니다. ranger 설치 전 환경에 맞게 우선 빌드해보도록 하겠습니다. jdk8, maven 3.8.8, python 3.6.8 이 설치되어있음을 가정합니다. maven 3.6.3버

developer-woong.tistory.com

 

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

action server: mast02

user: root

pwd: -

cmd:

# 기존 빌드된 파일을 가져와 압축해제합니다.
cp /opt/apps/ranger/target/ranger-2.4.0-hive-plugin.tar.gz /opt/apps

# hadoop 계정으로 설치할 것 입니다.
tar xvfz ranger-2.4.0-hive-plugin.tar.gz
chown -R hadoop:hadoop ranger-2.4.0-hive-plugin

su - hadoop
cd /opt/apps/ranger-2.4.0-hive-plugin

 

2. enable, disable 스크립트 수정

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

action server: mast02

user: hadoop

pwd: /opt/apps/ranger-2.4.0-hive-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-hive-plugin/etc/${PROJ_NAME}?c

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

 

 

 

3. install.properties 수정

action server: mast02

user: hadoop

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

cmd:

vi install.properties

POLICY_MGR_URL=http://mast02:6080
REPOSITORY_NAME=hive-policy
COMPONENT_INSTALL_DIR_NAME=/opt/apps/hive-3.1.3
XAAUDIT.SOLR.ENABLE=true
XAAUDIT.SOLR.URL=http://mast02:8993/solr/ranger_audits
XAAUDIT.SOLR.USER=hadoop
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-hive-plugin/spool
SSL_KEYSTORE_FILE_PATH=/opt/apps/ranger-2.4.0-hive-plugin/conf/ranger-plugin-keystore.jks
SSL_TRUSTSTORE_FILE_PATH=/opt/apps/ranger-2.4.0-hive-plugin/conf/ranger-plugin-truststore.jks
CUSTOM_USER=hadoop
CUSTOM_GROUP=hadoop

# 경로 생성
mkdir conf

 

4. 플러그인 활성화

 

action server: mast02

user: hadoop

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

cmd:

./enable-hive-plugin.sh

 

4. ranger 서비스 생성

action server: mast02:6080

user: hadoop

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

cmd:

 

Service Name *: hive-policy
Display Name  : hive-policy
Username : hadoop
Password : hadoop (linux 계정 비밀번호)
jdbc.driverClassName: org.apache.hive.jdbc.HiveDriver
jdbc.url: jdbc:hive2://mast02:10000/
Add New Configurations
- tag.download.auth.users : hadoop
- policy.download.auth.users : hadoop
- policy.grantrevoke.auth.users : hadoop
Audit Filter 체크 해제

 

 

5. hive 재시작

action server: mast02

user: hadoop

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

cmd:

# hiveserver, hivemetastore 프로세스 2개를 종료합니다.
kill -9 [RunJar_PID] 

# 재기동합니다.
nohup hive --service hiveserver2 >> /data/hive/log/hiveserver2.log 2>&1 &
nohup hive --service metastore >> /data/hive/log/hive-metastore.log 2>&1 &

 

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

 

6. policy 생성

action server: mast02:6080

user: hadoop

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

cmd:

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

 

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

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

3. 어떤 Hive 정보에 접근을 제한 및 허용할지 선택합니다. * 표시는 전체를 뜻합니다.

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

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

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

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

 

7. policy 다운로드 확인

action server: mast02:6080

user: hadoop

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

cmd:

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

 

8. 접근 제어 확인

action server: mast02

user: hadoop

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

cmd:

* 확인은 DBeaver를 통해 확인하겠습니다.

 

hadoop 유저로 접근하였습니다.

 

hadoop 유저는 모든 엑세스 권한을 가지고있기에 모든 데이터베이스들이 표출됩니다.

 

admin 유저로 접근하였습니다.

 

admin 유저는 엑세스 권한이 없기 때문에 데이터베이스가 표출되지않습니다.

 

 

ranger를 통해 hive 접근 제어 시, HDFS와도 밀접한 연관이 있습니다.

예를 들어, 이전 포스팅에서 ranger와 hdfs가 통합되어있고, hadoop 계정 이외에 모든 HDFS 엑세스를 거부했다면,

admin이라는 계정으로 hive 콘솔 진입 시, 나타나는 Access Deniend는 HDFS 플러그인에서 보안이 걸린 경우도 발생합니다. 이는 Hive 관련 임시 폴더나, 데이터 들은 HDFS 상에 저장되기 때문입니다.

이에, Ranger 내 HDFS, HIVE 정책을 유심히 설정해야 관리가 쉬워질 수 있습니다.

 

감사합니다.

 

반응형

+ Recent posts