ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 오픈소스로 구성하는 인프라 시스템 - Ralph3 Active Directory 연동
    오픈소스 2017. 12. 12. 11:29

    회사에서 Active Directory나 LDAP을 운영하고 있다면, 이를 Ralph3에 연동을 할 수 있습니다.

    저희도 AD를 운영하고 있어서 계정 연동을 시도해 봤습니다. 


    다만, 관련 가이드 문서가 매우 부족하여 많이 헤매면서 작성한 문서라 혹시 안된다면 언제든 문의 부탁 드립니다. 


    일단 설치를 완료하면 아래 global settings 파일을 에디터로 오픈합니다.

    sudo vi /opt/ralph/ralph-core/lib/python3.4/site-packages/django/conf/global_settings.py


    vi 검색으로 아래 인증관련 설정에 ldap 인증을 추가합니다.

    AUTHENTICATION_BACKENDS = ( 'django_auth_ldap.backend.LDAPBackend', 'django.contrib.auth.backends.ModelBackend',)


    그리고 파일 하단에 인증 관련 설정을 추가합니다.

    #Active Directory

    import ldap

    from django_auth_ldap.config import LDAPSearch, GroupOfNamesType


    AUTH_LDAP_SERVER_URI = "ldap://my-ldap-server:389"

    AUTH_LDAP_BIND_DN = 'CN=ldapAdmin,OU=Users,DC=mydomain,DC=com'

    AUTH_LDAP_BIND_PASSWORD = "my-ldapAdmin-Passwd"


    AUTH_LDAP_PROTOCOL_VERSION = 3

    AUTH_LDAP_USER_USERNAME_ATTR = "sAMAccountName"

    AUTH_LDAP_USER_SEARCH_BASE = "OU=Users,DC=mydomain,DC=com"

    AUTH_LDAP_USER_SEARCH_FILTER = '(&(objectClass=*)({0}=%(user)s))'.format(AUTH_LDAP_USER_USERNAME_ATTR)

    AUTH_LDAP_USER_SEARCH = LDAPSearch(AUTH_LDAP_USER_SEARCH_BASE,ldap.SCOPE_SUBTREE, AUTH_LDAP_USER_SEARCH_FILTER)

    AUTH_LDAP_USER_ATTR_MAP = {

      "first_name": "givenName",

      "last_name": "sn",

      "email": "mail",

    }


    AUTH_LDAP_MIRROR_GROUPS = True


    AUTH_LDAP_GROUP_TYPE = GroupOfNamesType(name_attr="cn")

    AUTH_LDAP_GROUP_SEARCH = LDAPSearch("OU=groups,DC=mydomain,DC=com", ldap.SCOPE_SUBTREE, '(objectClass=group)')


    AUTH_LDAP_USER_FLAGS_BY_GROUP = {

       "is_superuser": ['CN=sysadmin,OU=groups,DC=mydomain,DC=com'],

       "is_staff": ['CN=sysadmin,OU=groups,DC=mydomain,DC=com','CN=users,OU=groups,DC=mydomain,DC=com']

    }



    AD나 LDAP을 연동해 보신 분들이라면, 기본적으로 해당 항목의 의미는 이해를 하고 계실꺼라 생각이 됩니다.

    참고로 AUTH_LDAP_USER_FLAGS_BY_GROUP를 설정하면 superuser나 staff의 권한을 기본으로 줄 수 있습니다.


    위의 설정이 완료되면 아래 명령어를 실행 합니다.

    ralph ldap_sync


    AD 계정으로 로그인 후 My profile을 클릭하면 AD에서 가져온 정보를 확인 가능 합니다.


    어드민 권한을 갖고 있는 사용자라면 Settings에 Users list와 Groups list에서 AD에 등록된 사용자와 그룹을 확인 가능 합니다.



Designed by Tistory.