CDP 의 NiFi Registry 에서 Ranger 정책에 public 을 넣으면 bucket 이 보이는데, 특정 사용자(testuser)만 허용하면 그 사용자로 로그인해도 bucket 이 보이지 않고 Ranger 감사에는 deny 기록조차 없다. Registry UI 에서는 사용자가 testuser@REALM 으로 표시된다.
Ranger 는 LDAP 동기화로 testuser 를 알고 있는데, Registry 는 Kerberos 인증 결과인 testuser@REALM 을 그대로 Ranger 에 넘긴다. 이름이 달라 정책이 매칭되지 않고, 매칭 시도 자체가 없으니 감사도 남지 않는다. public 은 identity 를 비교하지 않으므로 통과한다.
NiFi 에는 realm 을 떼는 identity 매핑이 있었지만, NiFi Registry 의 안전 밸브에 NiFi 용 속성 이름(nifi.security.identity.mapping.*)으로 들어가 있어 Registry 가 무시하고 있었다.
NiFi Registry 는 nifi.registry. 접두사를 쓴다. CM → NiFi Registry → Configuration 의 nifi-registry.properties 안전 밸브(직접 설치면 $NIFI_REGISTRY_HOME/conf/nifi-registry.properties)에 아래를 넣고 Registry 만 재시작한다. NiFi 는 영향을 받지 않는다.
nifi.registry.security.identity.mapping.pattern.kerb=^([^@]+)@.*$
nifi.registry.security.identity.mapping.value.kerb=$1
nifi.registry.security.identity.mapping.transform.kerb=NONE
재시작 후 Ranger 정책에서 public 을 빼고 사용자만으로 테스트한다. 매핑 전에 authorizers.xml 이나 Ranger 에 user@REALM 형태로 등록한 사용자가 있으면 짧은 이름으로 맞춘다.
grep -i "identity" $NIFI_REGISTRY_HOME/logs/nifi-registry-app.log | tail -30