centos7 기준입니다.
ranger 2.4.0, hive 3.1.3이 설치되어있음을 가정합니다. 제 환경에서는 mast02서버에 설치되어있습니다.
hive 설치
https://developer-woong.tistory.com/44
ranger 설치
https://developer-woong.tistory.com/96
ranger 빌드
https://developer-woong.tistory.com/95
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 정책을 유심히 설정해야 관리가 쉬워질 수 있습니다.
감사합니다.
'BigData > Ranger' 카테고리의 다른 글
ranger) ranger-yarn plugin 설치 (0) | 2024.04.01 |
---|---|
Caused by: java.lang.ClassNotFoundException: org.codehaus.jackson.jaxrs.JacksonJsonProvider (0) | 2024.03.20 |
ranger) ranger hdfs plugin 연동 (0) | 2024.03.20 |
ranger 설치, 플러그인 연동 링크 모음 (0) | 2024.03.15 |
ranger) ranger-usersync 연동 주기 (0) | 2024.03.15 |