VPC環境で利用できます。
Secure Hadoopは Kerberosと LDAPベースのアカウントシステムを使用します。この2つの認証システムは2つのマスターノードに冗長化されており、エッジノードを介してアクセスできます。
ユーザーアカウントの追加/変更/削除タスクは、Kerberosと LDAPのそれぞれに対して個別にコマンドを実行する必要があります。また、両方のシステムでユーザー IDは必ず一致する必要があり、keytabファイルはユーザー認証のために必須です。
注意
- Kerberosと LDAPのユーザー情報は Secure Hadoopを構成する重要な要素です。
- クラスタによって作成・使用されている principal、keytab、ldap情報の変更/削除時にクラスタが誤動作する場合があります。
- ただし、ユーザーが直接作成した principal、ldap情報は例外です。
Kerberos
Kerberosはマスターノードからアクセスできます。
管理者シェルで principalを制御する方法は、次の通りです。
-
管理者シェルにアクセスします。
kadmin.local -
principalを新規作成します。
# ランダムキーで principalを作成 addprinc -randkey user1@USER.GUIDE # 直接パスワードを入力して principalを作成 addprinc user1@USER.GUIDE -
principalパスワードを変更します。
change_password user1@USER.GUIDE -
principal keytabファイルをダウンロードします。
ktadd -k /tmp/user1.keytab user1@USER.GUIDE -
keytabファイルを使用して principalでログインします。
kinit -kt /tmp/user1.keytab user1@USER.GUIDE -
principalのログインステータスを確認します。
# 現在 vmにログインしているユーザーの principal情報 klist # ダウンロードした keytabの principal情報 klist -kt /tmp/user1.keytab -
principalを削除します。
delprinc user1@USER.GUIDE
LDAP
LDAPはユーザー情報を保存・管理するディレクトリサービスで、Secure Hadoopでは Kerberosと連携して認証と権限管理を行います。
-
ユーザーを登録します。
# 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" -
ユーザーをグループに追加します。
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" -
ユーザーを確認します。
ldapsearch \ -H ldap://localhost:389 \ -D "cn=root,dc=USER,dc=GUIDE" \ -w "ケルベロス_パスワード" \ -b "dc=USER,dc=GUIDE" \ "(uid=ユーザー名)" -
ユーザーのパスワードを変更します。
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" -
ユーザーを削除します。
ldapdelete \ -H ldap://localhost:389 \ -D "cn=root,dc=USER,dc=GUIDE" \ -w "ケルベロス_パスワード" \ "uid=アカウント名,ou=users,dc=USER,dc=GUIDE"