火山引擎 E-MapReduce(EMR)使用 OpenLDAP 服务来管理用户集群的服务系统账号和通过控制台创建、导入的普通账号,您可以通过在控制台的集群详情 > 服务列表 > OpenLDAP > 服务参数界面中,获取各个服务管理员账号和密码信息。
E-MapReduce 提供了如下两种方式对集群用户进行管理:
控制台操作(推荐):在控制台用户管理页面对集群中的用户进行管理操作,支持导入 IAM 用户、自定义创建用户、重置用户密码、删除用户,以及组管理。
命令行操作:登录集群 master 节点,通过 OpenLDAP 提供的一系列命令实现对集群中的用户进行管理操作。
我们推荐您通过 EMR 控制台对集群中的用户、用户组进行管理,通过命令行方式操作集群用户、用户组将不会同步回 EMR 控制台。
您可以在控制台用户管理页面对集群用户、用户组进行管理,这也是我们推荐的方式。
控制台展示的用户分为普通用户和系统用户:
普通用户:用户在控制台自定义导入、创建的用户。
系统用户(只读):集群初始化、或添加服务时自动创建的服务管理账号,这些账号不允许编辑。
通过控制台操作管理用户的详细说明可以详见用户管理。
基于命令行的方式操作 OpenLDAP 需要提供 admin 账号的密码数据,密码在创建集群后在Master节点上的/root/.emr/secret文件中获取
创建 ldif 文件,模板如下:
1.3.0 及其后续版本
dn: uid=${uid},ou=user,ou=emr,dc=compute,dc=com uid: ${uid} cn: ${uid} sn: ${uid} objectClass: top objectClass: person objectClass: inetOrgPerson objectClass: posixAccount userPassword: ${passwd} uidNumber: ${uidNumber} gidNumber: 500 homeDirectory: /home/${uid}
1.3.0 之前的版本
dn: uid=${uid},cn=emr,ou=ldap,dc=compute,dc=com uid: ${uid} cn: ${uid} sn: ${uid} objectClass: top objectClass: person objectClass: inetOrgPerson objectClass: posixAccount userPassword: ${passwd} uidNumber: ${uidNumber} gidNumber: 500 homeDirectory: /home/${uid}
假设您需要创建名为 zhangsan 的用户,请将上述模板中的 ${uid}
替换成 zhangsan,并生成 add_user.ldif 文件,然后执行 ldapadd 命令:
ldapadd -f add_user.ldif -D "cn=admin,dc=compute,dc=com" -w ${openldap_admin_password}
注意
uidNumber 需要保证唯一性,否则在操作组件时可能遇到权限问题,而通过 EMR 控制台用户管理操作能够自动维护 uidNumber 的唯一性。
1.3.0 及其后续版本
ldapsearch -b "uid=${uid},ou=user,ou=emr,dc=compute,dc=com" -D "cn=admin,dc=compute,dc=com" -w ${openldap_admin_password}
1.3.0 之前的版本
ldapsearch -b "uid=${uid},cn=emr,ou=ldap,dc=compute,dc=com" -D "cn=admin,dc=compute,dc=com" -w ${openldap_admin_password}
1.3.0 及其后续版本
ldapdelete -x "uid=${uid},ou=user,ou=emr,dc=compute,dc=com" -D "cn=admin,dc=compute,dc=com" -w ${openldap_admin_password}
1.3.0 之前的版本
ldapdelete -x "uid=${uid},cn=emr,ou=ldap,dc=compute,dc=com" -D "cn=admin,dc=compute,dc=com" -w ${openldap_admin_password}
1.3.0 及其后续版本
ldappasswd -x "uid=${uid},ou=user,ou=emr,dc=compute,dc=com" -s ${new_passwd} -D "cn=admin,dc=compute,dc=com" -w ${openldap_admin_password}
1.3.0 之前的版本
ldappasswd -x "uid=${uid},cn=emr,ou=ldap,dc=compute,dc=com" -s ${new_passwd} -D "cn=admin,dc=compute,dc=com" -w ${openldap_admin_password}
创建 ldif 文件,模板如下:
dn: cn=${group_name},ou=group,ou=emr,dc=compute,dc=com cn: ${group_name} ou: ${group_name} objectClass: groupOfUniqueNames uniqueMember: uid=${uid},ou=user,ou=emr,dc=compute,dc=com
假设您需要创建名为 rd 的用户组,请将上述模板中的 ${group_name}
替换成 rd,并生成 add_group.ldif 文件,然后执行 ldapadd 命令:
ldapadd -f add_group.ldif -D "cn=admin,dc=compute,dc=com" -w ${openldap_admin_password}
注意
创建用户组时必须指定至少一个 uniqueMember。
ldapsearch -b "cn=${group_name},ou=group,ou=emr,dc=compute,dc=com" -D "cn=admin,dc=compute,dc=com" -w ${openldap_admin_password}
ldapdelete -x "cn=${group_name},ou=group,ou=emr,dc=compute,dc=com" -D "cn=admin,dc=compute,dc=com" -w ${openldap_admin_password}
创建 ldif 文件,模板如下:
dn: cn=${group_name},ou=group,ou=emr,dc=compute,dc=com changetype: modify add: uniqueMember uniqueMember: uid=${uid},ou=user,ou=emr,dc=compute,dc=com
假设您需要将用户 zhangsan 关联到 rd 用户组中,请将模板中的 ${group_name}
替换成 rd,将模板中的 ${uid}
替换成 zhangsan,并生成 bind_user.ldif 文件,然后执行 ldapmodify 命令:
ldapmodify -f bind_user.ldif -D "cn=admin,dc=compute,dc=com" -w ${openldap_admin_password}
创建 ldif 文件,模板如下:
dn: cn=${group_name},ou=group,ou=emr,dc=compute,dc=com changetype: modify delete: uniqueMember uniqueMember: uid=${uid},ou=user,ou=emr,dc=compute,dc=com
假设您需要将用户 zhangsan 从用户组 rd 中解绑,请将模板中的 ${group_name}
替换成 rd,将模板中的 ${uid}
替换成 zhangsan,并生成 unbind_user.ldif 文件,然后执行 ldapmodify 命令:
ldapmodify -f unbind_user.ldif -D "cn=admin,dc=compute,dc=com" -w ${openldap_admin_password}