Secure Hadoop 계정 관리

Prev Next

VPC 환경에서 이용 가능합니다.

Secure Hadoop은 Kerberos와 LDAP 기반의 계정 시스템을 사용합니다. 이 두 인증 시스템은 마스터 노드 2대에 이중화되어 있으며, 엣지 노드를 통해 접근이 가능합니다.
사용자 계정의 추가/변경/삭제 작업은 Kerberos와 LDAP 각각에 대해 별도로 명령어를 실행해야 합니다. 또한, 두 시스템에서 사용자 ID는 반드시 일치해야 하며, keytab 파일은 사용자 인증을 위해 필수입니다.

주의
  • Kerberos와 LDAP의 사용자 정보는 Secure Hadoop를 구성하는 중요한 요소입니다.
  • 클러스터에 의해 만들어지고 사용되어지는 principal, keytab, ldap 정보의 수정/삭제 시 클러스터가 오동작할 수 있습니다.
  • 단, 사용자가 직접 생성한 principal, ldap 정보는 제외입니다.

Kerberos

Kerberos는 마스터 노드에서 접속이 가능합니다.
관리자 쉘에서 principal을 제어하는 방법은 다음과 같습니다.

  1. 관리자 쉘에 접속해 주십시오.

    kadmin.local
    
  2. principal을 신규 생성해 주십시오.

    # 랜덤 키로 principal 생성
    addprinc -randkey user1@USER.GUIDE
    # 직접 패스워드를 입력하여 principal 생성
    addprinc user1@USER.GUIDE
    
  3. principal 패스워드를 변경해 주십시오.

    change_password user1@USER.GUIDE
    
  4. principal keytab 파일을 다운로드해 주십시오.

    ktadd -k /tmp/user1.keytab user1@USER.GUIDE
    
  5. keytab 파일을 사용해 principal로 로그인해 주십시오.

    kinit -kt /tmp/user1.keytab user1@USER.GUIDE
    
  6. principal 로그인 상태를 확인해 주십시오.

    # 현재 vm에 로그인한 사용자의 principal 정보
    klist 
    # 내려받은 keytab의 principal 정보 
    klist -kt /tmp/user1.keytab
    
  7. principal 삭제해 주십시오.

    delprinc user1@USER.GUIDE
    

LDAP

LDAP은 사용자 정보를 저장하고 관리하는 디렉터리 서비스로, Secure Hadoop에서는 Kerberos와 연동하여 인증 및 권한 관리를 수행합니다.

  1. 사용자를 등록해 주십시오.

    # uidNumber`는 중복되지 않는 고유 숫자를 사용하세요.
    ldif=/tmp/add-account.ldif
    HASH_USER_PW=$(slappasswd -h "{SSHA}" -s "신규_패스워드")
    
    cat <<EOF | tee $ldif
    dn: uid=계정명,ou=users,dc=USER,dc=GUIDE
    objectClass: inetOrgPerson
    objectClass: posixAccount
    objectClass: top
    cn: 사용자명
    sn: 사용자명
    uid: 사용자명
    uidNumber: 30001
    gidNumber: 30001
    homeDirectory: /home/사용자명
    loginShell: /bin/bash
    userPassword: ${HASH_USER_PW}
    EOF
    
    ldapadd \
      -H ldap://localhost:389 \
      -D "cn=root,dc=USER,dc=GUIDE" \
      -w "커버로스_패스워드" \
      -f "$ldif"
    
  2. 사용자를 그룹에 추가해 주십시오.

    ldif=/tmp/modify-group.ldif
    
    cat <<EOF | tee $ldif
    dn: cn=그룹명,ou=groups,dc=USER,dc=GUIDE
    changetype: modify
    add: memberUid
    memberUid: 사용자명
    EOF
    
    ldapmodify \
      -H ldap://localhost:389 \
      -D "cn=root,dc=USER,dc=GUIDE" \
      -w "커버로스_패스워드" \
      -f "$ldif"
    
  3. 사용자를 확인해 주십시오.

    ldapsearch \
      -H ldap://localhost:389 \
      -D "cn=root,dc=USER,dc=GUIDE" \
      -w "커버로스_패스워드" \
      -b "dc=USER,dc=GUIDE" \
      "(uid=사용자명)"
    
  4. 사용자의 패스워드를 변경해 주십시오.

    ldif=/tmp/modify-account.ldif
    HASH_USER_PW=$(slappasswd -h "{SSHA}" -s "신규_패스워드")
    
    cat <<EOF | tee $ldif
    dn: uid=계정명,ou=users,dc=USER,dc=GUIDE
    changetype: modify
    replace: userPassword
    userPassword: ${HASH_USER_PW}
    EOF
    
    ldapmodify \
      -H ldap://localhost:389 \
      -D "cn=root,dc=USER,dc=GUIDE" \
      -w "커버로스_패스워드" \
      -f "$ldif"
    
  5. 사용자를 삭제해 주십시오.

    ldapdelete \
      -H ldap://localhost:389 \
      -D "cn=root,dc=USER,dc=GUIDE" \
      -w "커버로스_패스워드" \
      "uid=계정명,ou=users,dc=USER,dc=GUIDE"