SQL Server предоставляет возможность создания логина из сертификата. Например.
USE MASTER;
CREATE CERTIFICATE <certificateName>
WITH SUBJECT = '<loginName> certificate in master database',
EXPIRY_DATE = '12/05/2025';
GO
CREATE LOGIN <loginName> FROM CERTIFICATE <certificateName>;
GO
Однако в документации говорится (внимание мое):
Логины, созданные из сертификатов или асимметричных ключей, используются только для подписи кода. Они не могут использоваться для подключения к SQL Server. Вы можете создать логин из сертификата или асимметричного ключа только тогда, когда сертификат или асимметричный ключ уже существует в master.
В чем смысл создания логина, который нельзя использовать для подключения к серверу?
Фон
Нам нужно внести некоторые изменения безопасности в наше приложение среднего уровня. В частности, как он подключается к своей базе данных. Силы, которые будут установлены, гласят: "мы не можем использовать проверку подлинности Windows".
Я знаю, что это обычно предпочтительный метод, но любой, у кого есть доступ к серверам среднего уровня, будет иметь тот же доступ к базе данных, что и приложение.
Если мы используем аутентификацию SQL, нам необходимо:
- Шифровать пароль.
- Сохраните его в файле конфигурации/реестре.
- Затем расшифруйте пароль, когда приложение необходимо подключиться к базе данных.
Хотя это возможно, я несколько надеялся, что:
- Я могу использовать вход на основе сертификата.
- Свяжите сертификат с приложением во время процесса сборки.
- И используйте это для подключения к SQL Server.
Вышеупомянутый отрывок из документальности, похоже, противоречит этому.