Kerberos 基础使用

最近更新时间:2024-08-15 14:44:01

我的收藏
EMR 集群使用 mit 的 kerberos 来作为 kdc 服务,使用 kerberos,首先要创建域(realm),再添加相关角色的 principal(包括 server 和 client),新建的 EMR 集群已经完成相关创建工作,并将支持的组件和 hadoop 用户加入数据库中,默认为 hadoop 用户生成了 keytab 文件,路径为 /var/krb5kdc/emr.keytab。
说明:
EMR-V2.6.0 及 EMR-V3.2.1 以上新版本 Kerberos 已集成 LDAP ,并在控制台支持 用户管理 功能,建议使用新版本创建 EMR 安全集群。

开发准备

确认您已经开通了腾讯云,并且创建了一个 EMR 集群,详情参考创建集群
在创建 EMR 集群时选择 Hadoop 集群类型,选择集成 LDAP 组件的版本,并开启 Kerberos 认证。
说明:
登录 EMR 节点的方式可参考登录 Linux 实例。在集群详情页中选择 集群资源 > 资源管理,单击对应节点资源 ID 进入云服务器列表,单击右侧登录,即可使用 WebShell 登录实例。
登录 Linux 实例用户名默认为 root,密码为创建 EMR 时用户自己输入的密码。输入正确后,即可进入命令行界面。
EMR 暂不支持集群创建完成后开启和关闭 Kerberos 服务。

创建用户

使用 用户管理 功能新建一个用户,此处以 tencent 用户为例,用户创建后 EMR 集群将自动创建此用户 principal 并加入 Kerberos 数据库中。
登录到 Master 节点,在 root 用户下,使用以下命令查看当前 principal :
kadmin.local
返回以下信息,说明新建用户已经成功加入 Kerberos 数据库中。
Authenticating as principal root/admin@EMR-RIELJCFJ with password.
kadmin.local: list_principals
...
tencent@EMR-RIELJCFJ

删除用户

和创建用户相同,删除用户也可以在 用户管理 界面上完成,删除用户后,kerberos 数据库中该用户也会同步删除。

kinit 验证

登录到 Master 节点,使用以下命令进行 kinit 验证:
kinit ${username}
说明:
其中 ${username} 为您在用户管理创建的用户名,输入该命令后,会提示您输入密码,此时输入创建用户时的密码即可完成验证。
kinit 对应的是向 kdc 获取 TGT 的步骤。它会向 /etc/krb5.conf 中指定的 kdc server 发送请求,此时使用 klist 命令:
klist
返回以下信息说明 TGT 请求成功。
Ticket cache: FILE:/tmp/krb5cc_0
Default principal: tencent@EMR-RIELJCFJ

Valid starting Expires Service principal
2024-01-08T14:25:43 2024-01-09T02:25:43 krbtgt/EMR-RIELJCFJ@EMR-RIELJCFJ
renew 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 用户名。