LDAP身份認證

EMR叢集還支援基於LDAP的身份認證,通過LDAP來管理帳號體系,Kerberos用戶端使用LDAP中的帳號資訊作為身份資訊進行身份認證。

LDAP帳號可以是和其它服務共用,比如Hue等,只需要在Kerberos服務端進行相關配置即可。使用者可以使用EMR叢集中已經配置好的LDAP服務(ApacheDS),也可以使用已經存在的LDAP服務,只需要在Kerberos服務端進行相關配置即可。

下面以叢集中已經預設啟動的LDAP服務(ApacheDS)為例:

  • Gateway管理對基礎環境進行配置(跟第二部分RAM中的一致,如果已經配置可以跳過)

    區別的地方只是/etc/has/has-client.conf中的auth_type需要改為LDAP

    也可以不修改/etc/has/has-client.conf,使用者test在自己的帳號下拷貝一份該檔案進行修改auth_type,然後通過環境變數指定路徑,如:

    export HAS_CONF_DIR=/home/test/has-conf

  • EMR控制台配置LDAP管理使用者名/密碼到Kerberos服務端(HAS)

    進入EMR控制台叢集的組態管理-HAS軟體下,將LDAP的管理使用者名和密碼配置到對應的bind_dnbind_password欄位,然後重啟HAS服務。

    此例中,LDAP服務即EMR叢集中的ApacheDS服務,相關欄位可以從ApacheDS中擷取。

  • EMR叢集管理員在LDAP中添加使用者資訊
    • 擷取ApacheDS的LDAP服務的管理使用者名和密碼在EMR控制台叢集的組態管理/ApacheDS的配置中可以查看manager_dnmanager_password
    • 在ApacheDS中添加test使用者名和密碼
      登入叢集emr-header-1節點root帳號
       建立test.ldif檔案,內容如下:
       dn: cn=test,ou=people,o=emr
       objectclass: inetOrgPerson
       objectclass: organizationalPerson
       objectclass: person
       objectclass: top
       cn: test
       sn: test
       mail: test@example.com
       userpassword: test1234
       #添加到LDAP,其中-w 對應修改成密碼manager_password
       ldapmodify -x -h localhost -p 10389 -D "uid=admin,ou=system" -w "Ns1aSe" -a -f test.ldif
       #刪除test.ldif
       rm test.ldif
      將添加的使用者名/密碼提供給test使用
  • 使用者test配置LDAP資訊
    登入Gateway的test帳號
     #執行指令碼
     sh add_ldap.sh test
    附: add_ldap.sh指令碼(修改一下LDAP帳號資訊)
    user=$1
     if [[ `cat /home/$user/.bashrc | grep 'export LDAP_'` == "" ]];then
     echo "
     #修改為test使用者的LDAP_USER/LDAP_PWD
     export LDAP_USER=YOUR_LDAP_USER
     export LDAP_PWD=YOUR_LDAP_USER
     " >>~/.bashrc
     else
        echo $user LDAP user info has been added to .bashrc
     fi
  • 使用者test訪問叢集服務

    執行hdfs命令

    [test@iZbp1cyio18s5ymggr7yhrZ ~]$ hadoop fs -ls /
      17/11/19 13:33:33 INFO client.HasClient: The plugin type is: LDAP
      Found 4 items
      drwxr-x---   - has    hadoop          0 2017-11-18 21:12 /apps
      drwxrwxrwt   - hadoop hadoop          0 2017-11-19 13:33 /spark-history
      drwxrwxrwt   - hadoop hadoop          0 2017-11-19 12:41 /tmp
      drwxrwxrwt   - hadoop hadoop          0 2017-11-19 12:41 /user
    跑Hadoop/Spark作業等