【共用】外部应用 Kerberos 接入与组件验证
# 创建外部应用访问身份
进入 Kerberos 管理 → 账号凭据审计 → 外部应用接入。选择要访问的组件、运行主机、Principal 和 Keytab 保存方式。
先在账号清单确认没有重复的 Principal,并核对当前 Realm、服务账号数量和待处理项。


页面需要填写应用名称、外部主机 FQDN、负责人、用途、到期时间和轮换窗口。保存后再下载或分发生成的客户端配置;公开文档和截图中不要出现真实 Keytab 内容。
外部应用使用机机账号,不应复用 KDC 管理账号、Ambari 管理员或某个 Hadoop 服务的 Keytab。创建后把 Keytab 放到应用主机的受控目录,并限制读取权限。
install -o appuser -g appgroup -m 0400 app-client.keytab \
/etc/security/keytabs/app-client.keytab
sudo -u appuser kinit -kt /etc/security/keytabs/app-client.keytab \
[email protected]
sudo -u appuser klist
1
2
3
4
5
6
2
3
4
5
6
# 按组件验证
凭据生成后回到 Keytab 清单,确认目标 Principal 的分发主机、文件路径和状态,再登录应用主机执行命令验证。

| 组件 | 最小验证 |
|---|---|
| HDFS | hdfs dfs -ls /,并按 Ranger 策略验证允许和拒绝路径。 |
| YARN | yarn application -list,确认可以连接 ResourceManager HA 入口。 |
| HiveServer2 | beeline -u 'jdbc:hive2://<zk-quorum>/;serviceDiscoveryMode=zooKeeper;zooKeeperNamespace=hiveserver2'。 |
| Kyuubi | 使用 Kyuubi JDBC 地址执行 select 1 和受控表查询。 |
| Kafka | 使用 SASL/GSSAPI 客户端配置执行 topic 列表或受控生产消费。 |
| HBase | 使用 Kerberos 客户端进入 shell,执行受控表的 list 或 scan。 |
Hive/Kyuubi 示例:
beeline \
-u 'jdbc:hive2://hadoop1.test.com:10009/default;principal=kyuubi/[email protected]' \
-e 'select current_user(), 1'
1
2
3
2
3
# 验收授权边界
认证成功不等于拥有全部数据权限。建议为测试账号准备一条允许策略和一条拒绝策略:
hdfs dfs -ls /user/app-client
hdfs dfs -ls /ranger-deny-check
1
2
2
第一条应成功,第二条应被 Ranger 拒绝。最后检查 Ranger 审计中是否能看到相同 Principal、资源和结果。
注意
不要把 Keytab 放进应用源码、RPM、容器镜像或公共对象存储。需要换主机、调整权限或怀疑泄露时,从账号详情执行轮换或重新签发。