我们正在使用 CNG 加密我们的一些敏感数据。作为标准,我们实现了 SQL 集成安全性,而不是使用具有 DB 权限的 SQL 用户。为了实现这一点,我们将应用程序池标识定义为相同的 Active Directory 标识,该标识被授予适当的 DB 权限。
现在,问题是当我的 AppPool 在本地系统下运行时,我可以从 CNG 密钥存储中创建和检索密钥,但是,当我将该身份更改为活动目录用户时,我开始收到“密钥在指定状态下无效”我正在尝试从 CNG 商店检索密钥。以下是我们的一些观察:
要在用户级别实现 CNG,我们需要能够创建用户级别的 CNG 密钥而不是机器密钥。我们已经这样做了,并且用户级别的密钥已成功创建,我们可以在 UserProfile - C:\Users\ADusername\AppData\Roaming\Microsoft\Crypto\Keys 中看到它
- 我们在池设置中设置了“LoadUserProfile=True”。
- 我们还授予 AD 用户对 %windows%\Microsoft.Net\Framework\Asp.Net 临时文件的读取/修改权限
我们仍然继续收到此错误。任何帮助将不胜感激。