EMR 集群使用 mit 的 kerberos 来作为 kdc 服务,使用 kerberos,首先要创建域(realm),再添加相关角色的 principal(包括 server 和 client),新建的 EMR 集群已经完成相关创建工作,并将支持的组件和 hadoop 用户加入数据库中,默认为 hadoop 用户生成了 keytab 文件,路径为 /var/krb5kdc/emr.keytab。
说明:
开发准备
确认您已经开通了腾讯云,并且创建了一个 EMR 集群,详情参考创建集群。
在创建 EMR 集群时选择 Hadoop 集群类型,选择集成 LDAP 组件的版本,并开启 Kerberos 认证。
说明:
登录 EMR 节点的方式可参考登录 Linux 实例。在集群详情页中选择 集群资源 > 资源管理,单击对应节点资源 ID 进入云服务器列表,单击右侧登录,即可使用 WebShell 登录实例。
登录 Linux 实例用户名默认为 root,密码为创建 EMR 时用户自己输入的密码。输入正确后,即可进入命令行界面。
EMR 暂不支持集群创建完成后开启和关闭 Kerberos 服务。
创建用户
登录到 Master 节点,在 root 用户下,使用以下命令查看当前 principal :
kadmin.local
返回以下信息,说明新建用户已经成功加入 Kerberos 数据库中。
Authenticating as principal root/admin@EMR-RIELJCFJ with password.kadmin.local: list_principals...tencent@EMR-RIELJCFJ
删除用户
kinit 验证
登录到 Master 节点,使用以下命令进行 kinit 验证:
kinit ${username}
说明:
其中 ${username} 为您在用户管理创建的用户名,输入该命令后,会提示您输入密码,此时输入创建用户时的密码即可完成验证。
kinit 对应的是向 kdc 获取 TGT 的步骤。它会向 /etc/krb5.conf 中指定的 kdc server 发送请求,此时使用 klist 命令:
klist
返回以下信息说明 TGT 请求成功。
Ticket cache: FILE:/tmp/krb5cc_0Default principal: tencent@EMR-RIELJCFJValid starting Expires Service principal2024-01-08T14:25:43 2024-01-09T02:25:43 krbtgt/EMR-RIELJCFJ@EMR-RIELJCFJrenew until 2024-01-15T14:25:43
除了使用用户密码的方式进行 kinit 验证,也可以直接使用本地 keytab 的方式进行 kinit 验证,在 用户管理 界面下载对应用户 keytab 文件,使用本地 keytab 文件进行登录验证:
kinit -kt ${keytab_file_path} ${kerberos_user_name}
说明:
其中 ${keytab_file_path} 为保存的 keytab 路径,${kerberos_user_name} 为您创建的 kerberos 用户名。