Han*_*non 5 sql-server credentials sql-server-2019
假设我有一个带有特定秘密的 SQL Server凭据保存在数据库中。我只想在数据库中保存的秘密与实际秘密不同时修改凭据。
有时,一个例子很好,所以看看这个:
CREATE CREDENTIAL [MyCred]
WITH IDENTITY = N'DOMAIN\User'
, SECRET = N'some_password';
Run Code Online (Sandbox Code Playgroud)
因此,在的密码DOMAIN\User从 更改为 后,我需要更新密钥,但前提是存储的值不匹配。即我不想盲目地删除并重新创建凭据。some_passwordsome_new_password
通过服务器主体,我可以使用该LOGINPROPERTY([login_name], 'PasswordHash')函数来获取存储在主数据库中的加密密码的哈希版本,但这似乎不适用于凭据。
小智 6
加密凭证密码可以通过 DAC 查看:-
SELECT *
FROM [master].sys.sysobjvalues
WHERE valclass = 28;
Run Code Online (Sandbox Code Playgroud)
它们的存储方式与登录密码不同,而是使用服务主密钥 (SMK) 进行加密。
这篇文章更进一步,并链接到 PowerShell 脚本来解密它们:-
https://www.netspi.com/blog/technical/adversary-simulation/decrypting-mssql-credential-passwords/
您可以自动运行 PowerShell 脚本来导出明文密码以进行比较。
也许更简单的方法是只检查 sys.credentials 的 [modify_date],如果该日期早于已知的密码更改(假设您知道它已被更改),您就会知道需要更新凭证。
如果您正在处理 AD 密码,则可以使用 Get-ADUser 查找密码更改日期进行比较,但在更复杂的 AD 环境下,要获得可靠的结果会变得更加困难。
| 归档时间: |
|
| 查看次数: |
638 次 |
| 最近记录: |