Хранение строки с секретными данными (ключа, пароля) в базе данных MS SQL Server
Есть некоторая логика в базе данных MS SQL Server, реализованная с помощью пользовательских функций и хранимых процедур. В этой логике используется некоторый ключ, секретная строка, которую мне нельзя хранить явно в скрипте. Нужно как то скрыть эту строку, зашифровать ее. Как можно это сделать, чтобы просто, без заморочек и более менее надежно.
Правка:
Я посмотрел в интернете, что можно использовать и пришел к следующему:
CREATE OR ALTER FUNCTION [dbo].[fx_Test_GetPass] ()
RETURNS NVARCHAR(MAX)
WITH ENCRYPTION
AS BEGIN
-- DECLARE @SecretString NVARCHAR(100) = 'my secret' ;
-- DECLARE @Encrypted VARBINARY(MAX);
--
-- SET @Encrypted = ENCRYPTBYPASSPHRASE(N'pass phrase', @SecretString);
-- SELECT @Encrypted AS EncryptedData;
-- -- OUTPUT: 0x0200000023F25DC13C4BBF6C99C9354DB9BE25D96B5E5D53F322E390A447E12EA5235FB24F50F4399DF42A8509BD25405DCDB0B1
------------
DECLARE @Encrypted VARBINARY(MAX) = CONVERT(VARBINARY(MAX), '0x0200000023F25DC13C4BBF6C99C9354DB9BE25D96B5E5D53F322E390A447E12EA5235FB24F50F4399DF42A8509BD25405DCDB0B1', 1 )
DECLARE @Decrypted NVARCHAR(MAX)
SET @Decrypted = DECRYPTBYPASSPHRASE(N'pass phrase', @Encrypted);
RETURN @Decrypted;
END
Первая часть скрипта, что закомметрирована, будет удалена из скрипта. Саму функцию я снабдил "WITH ENCRYPTION", что должно усложнить ее просмотр. Если кто-то предложит что-то лучше, с удовольствием воспользуюсь.