본문 바로가기

Big DATA/Hue&Oozie

Hue with LDAP Integration

Hue의 기본 인증 방식은 최초 로그인하는 시점에 Username/Password를 임의로 지정 선택가능하며, 이 때 사용된 사용자 계정에게는 자동적으로 관리자(superuser권한이 부여됩니다.일반적으로 admin 계저을 많이 사용하며 admin 계정을 사용하여 다른 사용자 계정을 생성하거나 생성된 계정에 관리자 권한을 부여할 수 있습니다

Hue User Linux username과 동일한 사용자여야 합니다

기본 Hue의 인증 시스템으로 Hue DB를 사용하지만, PAM, SPNEGO, OpenID, OAuth, SAML  LDAP과 같은 외부 인증 시스템과 연계가 가능하며본 문서에서는 기업용 인증 시스템으로 가장 많이 활용되는 LDAP 디렉토리 서비스(Microsoft AD OpenLDAP) 활용하여 LDAP 디렉터리에 사전에 구성된 사용자나 그룹 정보를 참조(Import)하거나 LDAP을 활용한 외부 인증 시스템 통합 구성에 대한 내용에 대해 설명할 예정입니다.

Hue의 기본 인증 메커니즘은 다음 그림과 같이 Hue DB를 활용하여 사용자 자격증명의 유효성을 로그인하는 시점에 검증합니다:

하지만일반적인 기업 환경에서는 RBAC 기반의 사용자 통합 관리의 용도나 디렉터리 서비스에 정의된 그룹 기반으로 권한을 부여하는 용도로 활용하기 위해 Hue LDAP을 연계하려는 요구사항이 점차 많아지고 있으며실제 LDAP을 활용하여 운영환경을 구축한 많은 사례를 보유하고 있습니다:

위의 그림과 같이 Hue의 인증 방식(Authentication backend) LDAP으로 구성된 경우, Hue는 로그인하는 시점에 Hue DB가 아닌 LDAP에서 사용자 자격증명에 대한 유효성을 확인합니다:

[desktop]

[[auth]]

backend=desktop.auth.backend.LdapBackend

 

Note: Hue에서 제공되는 Authentication Backend 옵션

Hue에서는 9가지의 Authentication Backend 옵션을 지원합니다본 문서에서는 가장 많이 활용되는 세 가지 옵션에 대해서만 설명합니다.

desktop.auth.backend.AllowAllBackend

인증 시점에 패스워드를 요청하지 않고로그온 한 모든 사용자를 인증하는 "인증 백-앤드구성 정보.

desktop.auth.backend.AllowFirstUserDjangoBackend

Hue의 기본 "인증 백-엔드구성 정보최초 로그온한 사용자를superuser로 생성

desktop.auth.backend.LdapBackend

LDAP 서비스를 통해 사용자 인증

주의: 외부 인증 서버로 인증을 위임하도록 구성하더라도 인증의 메타 정보는 Hue DB에 명시적으로 통합됩니다인증 메타 정보가 Hue DB에 존재하더라도사용자 인증은 외부 시스템에서 수행됩니다.

참조https://www.cloudera.com/documentation/enterprise/5-8-x/topics/cdh_ig_hue_config.html#topic_15_6_2__section_zrq_kvv_ls

 

LDAP Authentication backend는 기본 설정 값으로 Hue에 존재하지 않는 사용자를 자동으로 생성하며, Hue 내부적으로 인증이 올바르게 수행되기 위해 LDAP에만 존재하는 사용자 인증 메타 정보를 Hue DB로 가져와야 합니다(사용자 메타 정보를 가져올 때 해당 사용자의 패스워드 정보는 Hue에 통합되지 않습니다.). 운영 환경 및 보안 요구사항에 따라 LDAP의 사용자 정보가 Hue에 자동으로 매핑되지 않고 수동으로 통합된 사용자에 대해서만 LDAP에서 인증을 수행할 필요가 있는 경우가 존재합니다이런 경우에는 Automatic Import 기능을 disable하여 요구사항을 충족할 수 있습니다:

[desktop]

[[ldap]]

create_users_on_login=false

 

Hue에 수동으로 생성된 사용자나 LDAP과 같이 외부 인증 시스템에 정의된 사용자 정보를 Hue로 통합한 경우 해당 사용자는 default 그룹으로 자동 할당됩니다:

[useradmin]

create_users_on_login=default (기본값)


Hue
에서 LDAP(MS AD openLDAP)을 다음과 같은 두 가지 용도로 활용할 수 있습니다:

·       Hue LDAP Import 기능을 사용하여 AD / LDAP에 정의된 사용자나 그룹 정보를 가져온 후가져온 사용자와 패스워드 정보 기반으로 Hue User Admin에서 사용자 인증을 수행합니다.

·       모든 인증이 외부 LDAP 서버에서 수행되도록 Authentication Backend LDAP 서버를 사용하도록 구성할 수 있습니다모든 사용자는 LDAP 디렉터리에 사전에 구성되어야 합니다.   

1. Integrating Hue with LDAP

Hue LDAP과 통합하면기존 LDAP의 사용자 및 그룹 정보를 활용할 수 있으며사용자 인증 정보를 복수의 시스템에서 관리할 필요가 없습니다(비록, LDAP의 사용자 인증 정보가 Hue DB로 통합되지만패스워드는 Hue Import 되지 않습니다.)

Hue LDAP이 통합된 환경에서는 1) Search Bind 2) Direct Bind의 2가지 방식의 인증 방식을 지원합니다:

[desktop]

[[ldap]]

Search_bind_authentication(default: true) – true 설정되면 search bind 방식이며, false이면 direct bind 방식

 

1) Search Bind: Hue에서 LDAP을 연동한 경우 기본 인증 방식으로, Search Bind 인증 메커니즘은 bind_dn(Distinguished Name)과 bind_password 옵션에 정의된 자격증명을 사용하여 ldapsearch를 실행하는 것을 의미합니다. Hue base_dn 옵션에 지정된 기본 DN에서 시작하여 하위 트리 검색을 수행합니다로그인 시 제공된 short name user_name_attr 옵션에 지정된 속성과 동일한 엔터티가 존재하는지 여부에 대해 base DN에서부터 검색을 수행합니다관리자는 user_filter를 사용하여 검색 범위를 제한하도록 구성할 수 있습니다.

2) Direct Bind: Direct Bind 인증 메커니즘은 사용자가 로그인할 때 입력한 username password를 사용하여 LDAP 서버에 바인딩합니다. Direct Bind 구성을 위해서는 다음 세 가지 옵션을 설정에 따라 동작합니다:

l  Search_bind_authentication(default:true): false로 설정bind_dn bind_password에 설정된 값을 사용하지 않음.

l  nt_domain(default: mycompany.com): Active Directory 환경일 때만 사용되며접속할 NT 도메인 정보를 의미합니다.

ü  nt_domain 옵션을 지정한 경우: Hue UPN(User Principal Names)을 사용하여 직접 LDAP 서비스에 바인드합니다

ü  nt_domain 옵션을 지정하지 않은 경우: AD가 아닌 다른 LDAP 디렉터리 서비스의 경우 이 옵션을 지정하지 않으며ldap_username_pattern 옵션이 사용됩니다로그인시 제공된 username ldap_username_pattern(cn=<username>,dc=example,dc=com) <username> 값으로 치환되어 활용됩니다.

l  ldap_username_pattern(Default: "uid=<username>,ou=People,dc=mycompany,dc=com"):

 

2. Enabling Import of Users and Groups from an LDAP Directory

LDAP 프로토콜을 사용하여 AD에 정의된 사용자 및 그룹 정보를 가져올 수 있습니다이 기능을 사용하기 위해서는 Hue LDAP 관련 설정을 해야 합니다.

주의: LDAP에서 사용자를 가져온 경우패스워드 정보는 포함되지 않기 때문에 수동으로 패스워드를 설정해야 합니다.

Microsoft Active Directory 환경에서 LDAP Sync를 위한 필수 구성 옵션은 다음과 같습니다:

1)    ldap_url: LDAP 서버의 URL 정보(ldap_url=ldap://auth.mycompany.com)

2)    nt_domain접속할 NT Domain(MS AD를 사용하는 경우에만 구성 – nt_domain=mycompany.com)

3)    Search Bind 또는 Direct Bind 구성(search_bind_authentication 옵션이 값이 true 또는 false)

4)    LDAP Search Base(base_dn): user group을 찾기 위한 search base.(base_dn=”DC=mycompany,DC=com”)

5)    LDAP Bind User(bind_dn): 바인드할 사용자의 고유 이름(Disginguised name)으로 anonymous bind를 허용하지 않는 경우 사용하며대다수의 AD 환경에서는 anonymous bind를 허용하지 않음(bind_dn=”CN=ServiceAccount,DC=mycompany,DC=com”

6)    LDAP Bind Password(bind_password): Bind User의 패스워드(bind_password=P@ssw0rd”).

환경에 따라 다음의 추가 옵션을 구성해야지 연동이 될 수도 있습니다:

1)    user_filter사용자를 검색하기 위한 기본 필터(user_filter="objectclass=*")

A.     user_name_attr: LDAP 스키마의 username 속성(user_name_attr=sAMAccountName)

2)    group_filter그룹을 검색하기 위한 기본 필터(group_filter="objectclass=*")

A.     group_name_attr: LDAP 스키마의 group 속성(roup_name_attr=cn)

추가적으로 LDAP 디렉터리 서비스와 TLS 연결이 필요한 경우ldap_cert 옵션을 지정해야 하며, TLS 구성을 위해서는 LDAP 서버에서 신뢰한 CA 파일이 필요합니다.

 

3. Enabling the LDAP Server for User Authentication

LDAP 프로토콜을 사용하여 AD에 정의된 사용자 및 그룹 정보를 가져올 수 있습니다이 기능을 사용하기 위해서는 Hue LDAP 관련 설정을 해야 합니다.

중요사용자 인증 구성을 LDAP Backend를 사용하도록 변경하는 경우, Hue User Admin의 사용자 인증 기능이 비활성화 됩니다다음과 같은 조치를 하지 않는 경우에는 Hue에서 사용할 superuser 계정이 없음을 의미합니다.

    AD에서 하나 이상의 superuser 계정으로 사용할 사용자를 Import superuser 권한을 할당.

    이미 LDAP authentication backend를 사용하도록 구성한 경우에는, LDAP backend를 사용하여 Hue에 로그온할 수 있습니다, Hue DB LDAP user가 생성됩니다이후, LDAP authentication backend를 비활성화하고, LDAP에서 가져온 사용자에게 superuser 권한을 부여합니다.

Superuser 권한을 할당한 후에 인증 구성을 "LDAP authentication backend"로 변경합니다.

전체적인 작업 순서는 다음과 같습니다.

    Hue LDAP과 연동 구성

    Superuser로 사용할 사용자 Import  superuser 권한 부여

    인증 구성을 LDAP으로 변경

1) Hue LDAP 연동 구성: “2. Enabling Import of Users and Groups from an LDAP Directory”에서 설명한 Hue LDAP과의 연동 구성 참조

2) superuser로 사용할 사용자 Import  superuser 권한 부여:

    Hue  UI에 “admin” 계정으로 로그온

    UserAdmin 환경으로 이동하기 위해로그인한 사용자 이름을 클릭하여 “Manage Users”를 선택

User-added image


    Add / Sync LDAP User를 클릭

    관리자로 설정할 사용자를 입력하고, “Create home directory” 옵션을 선택

User-added image

    Add/Sync User” 버튼을 클릭

    LDAP의 사용자가 동기화된 후가져온 사용자에게 superuser 권한을 부여하기 위해 User 화면에서 동기화된 사용자 링크를 클릭하여 사용자 편집 화면으로 이동 

User-added image

    권한을 편집하기 위해 “Step3: Advanced”로 이동 후, “Superuser status” 체크박스 선택

User-added image

3) 인증 구성을 LDAP으로 변경: Authentication backend 구성을 LDAP으로 변경

기본 -앤드 정보인 desktop.auth.backend.AllowFirstUserDjangoBackend LDAP으로 변경

[desktop]

[[auth]]

backend=desktop.auth.backend.LdapBackend

 

참고

Importing LDAP Users and Groups

Hue User Admin 인터페이스를 사용하여, LDAP의 사용자나 그룹을 Import 할 수 있습니다.

Groups can also be imported using the User Admin interface, and users can be added to this group. As in the image below, not only can groups be discovered using DN and rDN

 search, but users that are members of the group or members of its subordinate groups can be imported as well.


You have the following options available when importing a user/group:

·       Distinguished name: If checked, the username provided must be a full distinguished name (for example, uid=hue,ou=People,dc=gethue,dc=com). Otherwise, the Username provided should be a fragment of a Relative Distinguished Name (rDN) (for example, the username hue maps to the rDN uid=hue). Hue will perform an LDAP search using the same methods and configurations as described above. That is, Hue will take the provided username and create a search filter using the user_filter and user_name_attr configurations.

·       Create home directory: If checked, when the user is imported, their home directory in HDFS will automatically be created if it doesn’t already exist.