Хранение строки с секретными данными (ключа, пароля) в базе данных 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", что должно усложнить ее просмотр. Если кто-то предложит что-то лучше, с удовольствием воспользуюсь.


Ответы (0 шт):