Не удается найти симметричный ключ в 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 работал на моем конце.

Другие вопросы по тегам