两个 Kerberos 集群之间的服务访问,需要配置 Kerberos 集群间的跨域互信(Cross Realm)。在火山引擎 LAS 集群中,如果已有两个 Kerberos 集群 A、B,希望从集群 A 跨域访问集群 B 中的服务。
获取 Realm、FQDN 信息。
登录到集群 A 和集群 B 的 Master 节点的命令行界面,从 /etc/krb5.conf
中分别获取集群 A 和集群 B 的 Realm 信息、FQDN 信息并做记录。其中 Realm 信息的格式为 xxx.EMR.COM。
添加跨域认证的 Principal。
登录到集群 A 的 Master 节点的命令行界面中,以 root
用户身份执行下面的命令:
# 使用 kadmin.local 命令。如下所示: kadmin.local -q "addprinc -pw <新建一个自定义密码> krbtgt/<集群 B 的 Realm>@<集群 A 的 Realm>"
说明
其中用尖括号(“<>”)括起来的内容(包含尖括号本身),需要根据实际场景替换为对应的实际取值。
登录到集群 B 的 Master 节点的命令行界面中,以 root 用户身份执行相同的命令(无需替换命令中的 Realm 顺序),如下所示:
# 使用 kadmin.local 命令。如下所示: kadmin.local -q "addprinc -pw <新建一个自定义密码> krbtgt/<集群 B 的 Realm>@<集群 A 的 Realm>"
配置集群 A 的 krb5.conf 并重启集群 A 的 KDC 服务。
登录到集群 A 的 Master 节点的命令行界面中,编辑 /etc/krb5.conf
配置文件,修改如下内容:
说明
其中用尖括号(“<>”)括起来的内容(包含尖括号本身),需要根据实际场景替换为对应的实际取值。
[realms]
新增一项:
<集群 B 的 Realm> = { kdc = <集群 B 的 Master 节点的 FQDN>:88 }
新增 [capaths]
:
[capaths] <集群 A 的 Realm> = { <集群 B 的 Realm> = . } <集群 B 的 Realm> = { <集群 A 的 Realm> = . }
新增 [domain_realm]
:
[domain_realm] <集群 A 的第一个 Master 节点的 FQDN> = <集群 A 的 Realm> <集群 A 的第二个 Master 节点的 FQDN> = <集群 A 的 Realm> ... <集群 A 的第一个 Core 节点的 FQDN> = <集群 A 的 Realm> <集群 A 的第二个 Core 节点的 FQDN> = <集群 A 的 Realm> ... <集群 B 的第一个 Master 节点的 FQDN> = <集群 B 的 Realm> <集群 B 的第二个 Master 节点的 FQDN> = <集群 B 的 Realm> ... <集群 B 的第一个 Core 节点的 FQDN> = <集群 B 的 Realm> <集群 B 的第二个 Core 节点的 FQDN> = <集群 B 的 Realm> ...
配置完成后,重启 KDC。
验证操作。
可以登录到集群 A 的节点中,访问集群 B 的服务。详细操作参考文档:基础使用。
注意
sasl.kerberos.principal.to.local.rules
RULE:[2:$1@$0](.*@<源集群(集群 A)的 Realm>)s/@.*//,DEFAULT
RULE:[1:$1@$0](.*@<源集群(集群 A)的 Realm>)s/@.*//,DEFAULT