具有Azure SQL Server / Azure Active Directory的FSharp类型提供程序

时间:2019-02-15 19:15:16

标签: f# azure-active-directory azure-sql-database type-providers

我们有一个使用SQL类型提供程序的FSharp项目,这意味着在构建过程中,我们需要访问目标SQL Server数据库。对于调试版本,这是我们自己的本地计算机,可以在其中使用集成安全性,但是我们的测试和生产版本指向Azure SQL数据库。直到最近,我们一直在遵循“绝对不是最佳实践”的做法,即在源代码中存储类型提供程序使用的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类型提供程序并非如此。至少,谷歌搜索没有发现任何东西。

在这种情况下其他人会做什么?

0 个答案:

没有答案