Поставщик типа FSharp с Azure SQL Server / Azure Active Directory - PullRequest
0 голосов
/ 15 февраля 2019

У нас есть проект FSharp, использующий поставщика типов SQL, что означает, что во время сборки нам нужен доступ к целевой БД SQL Server.Для отладочных сборок это наши собственные локальные машины, где мы можем использовать интегрированную защиту, но наши тестовые и производственные сборки указывают на базы данных SQL Azure.До недавнего времени мы придерживались «Определенно не лучшей практики» хранения в исходном коде пароля для учетной записи SQL Server, которую использует поставщик типов, чтобы упростить компиляцию.

Нам нужно отойти от этого, так какэто довольно очевидный и неприятный риск для безопасности.

Проблема в том, чем его заменить.Azure SQL не поддерживает «Интегрированную безопасность», поэтому мы не можем сделать что-то вроде этого:

<connectionStrings>
    <add name="OurDatabaseConnection" connectionString="Data Source=ourserver.database.windows.net,1433;Initial Catalog=OurDatabase;Integrated Security=True;MultipleActiveResultSets=True;Encrypt=True;" />
</connectionStrings>

Другой способ сделать это - Azure Active Directory.Но если вы используете подход «Active Directory с паролем», вы все равно сохраняете пароль в источнике (или, по крайней мере, в файле где-то).

<connectionStrings>
    <add name="OurDatabaseConnection" connectionString="Data Source=ourserver.database.windows.net; Authentication=Active Directory Password; Initial Catalog=OurDatabase; UID=bob@contoso.onmicrosoft.com; PWD=MyPassWord!" />
</connectionStrings>

Это может быть работоспособным, если всеВыполняет развертывание со своих компьютеров: вы можете попросить людей скопировать файл с паролем AD в виде открытого текста в соответствующий каталог.Это не здорово, но, может быть, хорошо?Но мы используем общую машину для развертываний, что делает это решение не слишком удачным.

Вы также можете использовать токен AD, но для этого необходимо, чтобы приложение было специально закодировано таким образом, чтобы знать о Azure AD,и, насколько я знаю, это не относится к провайдерам типа FSharp.Или, по крайней мере, Googling что-то нашел.

Что другие люди делают в этом сценарии?

...