本地SF集群Kerberos安全(gMSA)与ServerCertificate配置问题咨询
看你现在卡在域安全集群的gMSA配置上,先从你给出的这段配置片段入手,我整理几个常见的坑和修复方案:
1. 补全不完整的ClientIdentities配置
你贴的ClientIdentities部分没写完,这肯定不行——数组里的每个客户端身份都得是完整的格式,如果是gMSA身份,得和集群gMSA的格式保持一致:{{ env_domain }}\\{{ client_gmsa_identity }}$(别漏了最后的$!)。完整的结构示例:
"ClientIdentities": [ { "Identity": "CONTOSO\\ClientGMSA$" } ]
2. 别漏了gMSA账户的$后缀
你写的ClustergMSAIdentity是{{ env_domain }}\\{{ cluster_gmsa_identity }},这里少了关键的$!Windows的gMSA账户在AD里的标识是带$后缀的,必须写成{{ env_domain }}\\{{ cluster_gmsa_identity }}$,不然集群节点根本找不到对应的gMSA账户,身份验证直接失败。
3. 检查SPN的绑定是否正确
ClusterSPN得是符合规范的服务主体名称,比如Service Fabric集群的话,格式是fabric/你的集群FQDN,而且这个SPN必须绑定到你的gMSA账户上。你可以用这两个命令操作验证:
- 注册SPN:
setspn -S fabric/cluster.contoso.com CONTOSO\\ClusterGMSA$ - 验证绑定:
setspn -L CONTOSO\\ClusterGMSA$
如果找不到对应的SPN,赶紧补上,不然Kerberos认证会直接报错。
4. 完整的配置参考片段
给你一个修正后的完整配置模板,你可以对照调整:
"security": { "ClusterCredentialType": "Windows", "ServerCredentialType": "Windows", "WindowsIdentities": { "ClustergMSAIdentity": "CONTOSO\\ClusterGMSA$", "ClusterSPN": "fabric/cluster.contoso.com", "ClientIdentities": [ { "Identity": "CONTOSO\\ClientGMSA$" } ] }, "CertificateInformation": { "ServerCertificateThumbprint": "", "ClientCertificateThumbprint": "" } }
因为用了gMSA的Windows身份验证,证书部分可以留空(如果不需要双重验证的话)。
5. 节点侧的必做验证
最后别忘了在每个集群节点上做测试:
运行Test-ADServiceAccount ClusterGMSA$(替换成你的gMSA名称),如果返回True,说明节点有权限访问这个gMSA;如果是False,得去AD里给节点的计算机账户加读取gMSA密码的权限——在AD的gMSA账户属性里,把节点计算机账户加到“读取密码”的权限组里即可。
内容的提问来源于stack exchange,提问作者qmarc

