我希望开始使用Vault来轮换mssql数据库的凭据,并且需要能够在mssql连接字符串中使用gMSA。我的组织当前仅使用Windows服务器,并且将仅为服务帐户提供gMSA。
将gMSA指定为连接字符串中的用户ID将返回400错误error creating database object: error verifying connection: InitialBytes InitializeSecurityContext failed 8009030c
。
我还尝试将Vault服务转换为使用gMSA作为登录用户,但这使得节点无法成为领导节点,即使它们能够加入集群并转发请求。
我的设置:
我有一个跨几个Windows服务器运行的Vault群集。我使用nssm将它们作为Windows服务运行,因为没有本机Windows服务支持。
nssm配置为运行vault server -config="C:\vault\config.hcl"
,并使用本地系统帐户运行。
当我更改用户时,节点能够启动并作为跟随者加入raft群集,但无法获得领导者状态,这导致我的群集在本地系统用户节点关闭后变得无响应。
服务器运行在Windows Server 2022上,Vault版本为v1. 10. 3,使用集成的Raft存储。我的集群中有5个Vault节点。
我尝试运行以下命令来配置数据库密码引擎:
vault write database/config/testdb \
connection_url='server=myserver\testdb;user id=domain\gmsaUser;database=mydb;app name=vault;' \
allowed_roles="my-role"
这导致了我上面提到的错误消息。
然后,我尝试更改服务的登录用户。我按照以下步骤轮换用户:
1.更新了vault所涉及的所有地方的目录权限(配置,证书,存储),以包括我的gMSA用户。我给了它配置和证书文件的读取权限以及存储的读/写权限。
1.已停止服务
1.已使用vault operator raft remove-peer instanceName
将节点作为对等节点从群集中删除。
1.已删除旧存储文件
1.已通过运行sc.exe --% config "vault" obj="domain\gmsaUser" type= own
更改服务用户。
1.已启动服务备份并等待复制
当我完成最后一步时,我可以看到该节点在Vault UI中重新显示为投票者。我可以使用cli和ui直接命中该节点并获得响应。这不是企业群集,因此它应该只是将请求转发给领导者,确认群集部分正在工作。
在到达最后一个节点之前,我尝试运行vault operator step-down
,但始终无法让领导者旋转。关闭最后一个节点使群集无响应。
我没有想到更改登录用户会导致节点的操作能力出现任何问题。我查看了日志,但没有任何异常,即使将日志级别设置为跟踪也是如此。它们确实显示了成功解封、待机模式和加入raft群集。
我找到的mssql secret engine的大部分文档都包括在sql server上创建一个用户/通行证供Vault使用,但我不选择这样做。有什么方法可以在mssql配置中使用gMSA吗?
1条答案
按热度按时间xxls0lw81#
当您将
user id
放入SQL连接字符串时,它将尝试执行SQL身份验证,而不再尝试Windows身份验证(而gMSA是基于Windows身份验证的)。设置gMSA帐户时,您是否指定了允许谁检索密码的正确参数(正确:
PrincipalsAllowedToRetrieveManagedPassword
,不正确,但使用制表符完成时的第一个建议PrincipalsAllowedToDelegateToAccount
)也许您需要在运行Vault的计算机上执行
Install-ADServiceAccount ...