| 구성 요소 | 역할 |
|---|---|
| Ranger Admin | 정책을 정의·보관하고 UI 와 REST API 를 제공한다 |
| Ranger Plugin | 각 서비스(HDFS · Hive · HBase · Kafka · Impala 등)에 붙어 접근 요청을 가로채고 정책으로 판정한다 |
| Ranger UserSync | LDAP · AD · UNIX 에서 사용자와 그룹을 가져와 Admin 에 동기화한다 |
| Ranger Audit | 접근 허용·거부 기록을 Solr · Elasticsearch · HDFS 등에 남긴다 |
| Ranger KMS | 투명 암호화용 키 관리. 선택 구성 요소 |
관리자가 Admin UI 에서 정책을 만들면, 각 서비스의 플러그인이 주기적으로 정책을 내려받아 로컬 캐시에 둔다. 사용자가 요청하면 플러그인이 캐시된 정책으로 즉시 판정하므로 Admin 이 잠시 멈춰도 기존 정책은 계속 적용된다. 판정 결과는 감사 로그로 남는다.
이 구조 때문에 정책을 바꿔도 즉시 반영되지 않는다. 플러그인의 폴링 주기만큼 지연이 있다. 급하면 해당 서비스를 재시작하거나 폴링 주기를 줄인다.
정책은 리소스 단위로 세밀하게 준다. 예를 들어 특정 그룹에게 한 Hive 데이터베이스의 특정 테이블에 대한 SELECT 만 허용하는 식이다. 컬럼 마스킹과 행 수준 필터도 정책으로 정의한다.
Ranger 자체에서 만드는 내부 사용자와, UserSync 가 외부 디렉터리에서 가져오는 사용자가 있다. 외부에서 동기화한 사용자와 그룹 관계는 Ranger UI 에서 임의로 바꾸지 않는다. 다음 동기화 때 되돌아간다. 그룹 구성을 바꾸려면 원본 디렉터리(AD/LDAP)에서 바꾸고 동기화를 기다린다.
UI 에서 처리하는 경로는 Settings 의 Users/Groups/Roles 화면이며, 내부 사용자와 역할(Role) 관리에 쓴다.
ranger-ugsync-site.xml 에서 관리한다. 주요 항목은 다음과 같다.
| 키 | 뜻 |
|---|---|
ranger.usersync.source.impl.class |
소스 구현체. LDAP 이면 org.apache.ranger.ldapusersync.process.LdapUserGroupBuilder |
ranger.usersync.ldap.url |
LDAP 서버 주소 |
ranger.usersync.ldap.binddn |
바인드 DN |
ranger.usersync.ldap.ldapbindpassword |
바인드 비밀번호 |
ranger.usersync.ldap.searchBase |
검색 기준 DN |
ranger.usersync.ldap.user.searchfilter |
사용자 필터 |
ranger.usersync.group.searchenabled |
그룹 검색 사용 여부 |
ranger.usersync.sleeptimeinmillisbetweensynccycle |
동기화 주기(ms) |
동기화 주기에는 소스별 하한이 있다. UNIX 소스는 1분, LDAP 소스는 1시간 아래로는 내려가지 않는다는 보고가 많으므로, 짧게 잡아도 기대만큼 자주 돌지 않을 수 있다.
Ranger 에는 "지금 전체 동기화"를 실행하는 공식 버튼이나 널리 알려진 REST 엔드포인트가 없다. 실무에서는 UserSync 서비스를 재시작해 시작 시점의 동기화를 유발한다.
sudo systemctl restart ranger-usersync
sudo tail -f /var/log/ranger/usersync/usersync.log
Cloudera Manager 환경이라면 Ranger UserSync 역할을 재시작한다. 로그에서 가져온 사용자·그룹 수를 확인해 실제로 반영됐는지 본다. 동기화가 전혀 되지 않으면 바인드 계정, 검색 DN, 필터, 인증서(LDAPS) 순서로 확인한다.
curl -u ${RANGER_ADMIN_USER}:${RANGER_ADMIN_PASSWORD} \
"http://ranger-admin:6080/service/xusers/users?name=myuser"
curl -u ${RANGER_ADMIN_USER}:${RANGER_ADMIN_PASSWORD} \
"http://ranger-admin:6080/service/xusers/groups"
정책이 적용되지 않는다고 느껴지면 플러그인이 정책을 받아 갔는지부터 본다. Admin UI 의 Audit → Plugin Status 화면에서 각 서비스의 마지막 정책 수신 시각을 확인한다.