Не удается найти симметричный ключ в SQL Server 2008
У меня есть проблема с разрешениями в отношении использования симметричного ключа под конкретным именем пользователя при выполнении хранимой процедуры.
Несмотря на бег
GRANT CONTROL ON CERTIFICATE::myCert TO myUser
GRANT VIEW DEFINITION ON SYMMETRIC KEY::myKey TO myUser
Я все еще получаю ту же ошибку:
Не удается найти симметричный ключ "myKey", поскольку он не существует или у вас нет разрешения.
Мастер-ключ, сертификат и симметричный ключ были установлены в базе данных, к которой относится имя пользователя.
Если я запускаю SP под Windows Authentication, он работает нормально.
Вот хранимая процедура:
OPEN SYMMETRIC KEY myKey DECRYPTION
BY CERTIFICATE myCert
INSERT INTO sp_Password
(billEncryptPassword)
VALUES(ENCRYPTBYKEY(KEY_GUID('myKey'),@billEncryptPassword))
RETURN @@IDENTITY
CLOSE SYMMETRIC KEY myKey
Что я пропустил?
2 ответа
Ты пропускаешь CLOSE MASTER KEY
впоследствии, и это портит ваши последующие шифрования / дешифрования.
У меня такая же проблема, даже когда я запускаю это как SysAdmin.
Чтобы обойти это, я в настоящее время закрываю все открытые ключи, что прекрасно работает. Я бы предпочел закрыть только то, что я открыл.
ЗАКРЫТЬ ВСЕ СИММЕТРИЧЕСКИЕ КЛЮЧИ;
--- Приложение
Я только что попробовал это с AES_256 против шифрования DES, и AES_256 работал на моем конце.