Cloudera Manager 가 관리하는 CFM NiFi 는 authorizers.xml 을 직접 편집하지 않고, CM 의 구성 항목이 템플릿을 채워 자동 생성한다. 파일 첫 줄에 <!--Autogenerated by Cloudera Manager--> 가 있으면 직접 고쳐도 재배포 때 덮어써진다.
관련 항목은 nifi.ldap.enabled, xml.authorizers.userGroupProvider.*, xml.authorizers.accessPolicyProvider.* 처럼 CM 구성 이름으로 노출된다.
| 구성 요소 | 역할 |
|---|---|
file-user-group-provider |
로컬 users.xml 기반 사용자 · 그룹 |
ldap-user-group-provider |
LDAP · AD 에서 사용자 · 그룹을 주기적으로 동기화 |
composite-configurable-user-group-provider |
위 둘을 합친다. 노드 identity 는 file, 사용자는 LDAP |
file-access-policy-provider |
정책 저장소. Initial Admin Identity 와 Node Identity 를 받는다 |
Ranger 플러그인을 쓰는 환경에서는 access policy provider 대신 Ranger 가 인가를 담당한다.
<userGroupProvider>
<identifier>ldap-user-group-provider</identifier>
<class>org.apache.nifi.ldap.tenants.LdapUserGroupProvider</class>
<property name="Authentication Strategy">SIMPLE</property>
<property name="Manager DN">CN=svc_nifi,OU=Service,DC=example,DC=com</property>
<property name="Manager Password">${LDAP_BIND_PASSWORD}</property>
<property name="Url">ldaps://dc1.example.com:636</property>
<property name="User Search Base">OU=Users,DC=example,DC=com</property>
<property name="User Object Class">user</property>
<property name="User Search Scope">SUBTREE</property>
<property name="User Identity Attribute">sAMAccountName</property>
<property name="Group Search Base">OU=Groups,DC=example,DC=com</property>
<property name="Group Object Class">group</property>
<property name="Group Name Attribute">cn</property>
<property name="Group Member Attribute">member</property>
<property name="Sync Interval">30 mins</property>
</userGroupProvider>
# CM 이 만들어 낸 실제 파일
grep -i -A 5 -B 5 "LdapUserGroupProvider" /var/run/cloudera-scm-agent/process/*-nifi-NIFI_NODE/authorizers.xml
# 동기화 결과와 인증 로그
grep -i "identity\|ldap" /var/log/nifi/nifi-app.log | tail -50
grep -i "identity" /var/log/nifi/nifi-user.log | tail -30
user@REALM 이 들어오는데 LDAP 동기화는 sAMAccountName(user)으로 들어온다. nifi.security.identity.mapping.pattern.kerb 로 realm 을 떼어 맞춘다.transform 속성으로 LOWER 를 적용했다면 관리자 identity 도 소문자로 쓴다.CN=nifi01.example.com, OU=NIFI)과 일치해야 노드 간 통신이 인가된다. CM 의 nifi.autogen.node.identities 관련 항목이 이 DN 접두사 · 접미사를 만든다.authorizers.xml 이나 users.xml 을 비우면 초기 상태로 돌아가지만, 기존 정책이 모두 사라지므로 백업 후 진행한다.nifi.registry. 접두사를 쓴다.