在与SQL Azure数据库对话的.NET Core 2.1的应用程序设置中保护连接字符串的安全

时间:2018-07-20 14:28:57

标签: c# azure security connection-string asp.net-core-2.1

好吧,所以我有一个Web API,可用于与SQL Azure数据库进行对话并在此处遵循本教程:https://docs.microsoft.com/en-us/azure/sql-database/sql-database-security-tutorial

我进入了我已经知道如何复制Azure连接字符串的部分,并且有类似这样的内容(ADO.NET):

Server=tcp:{myDatabase}.database.windows.net,1433;Initial Catalog=Expenses;Persist Security Info=False;User ID={your_username};Password={your_password};MultipleActiveResultSets=False;Encrypt=True;TrustServerCertificate=False;Connection Timeout=30;

我知道我必须提供我的凭据,并且可以将其放入并获得API的正常运行。我的问题是,如果将其保存到GitHub或在源代码管理下,如何保护该字符串?过去,使用.NET时,我使用受保护的配置执行了一种方法,如下所示: https://docs.microsoft.com/en-us/dotnet/framework/data/adonet/connection-strings-and-configuration-files

基本上是这样的:

<connectionStrings configProtectionProvider="DataProtectionConfigurationProvider">
    <EncryptedData>
      <CipherData>
        <CipherValue>{long ciphered value}</CipherValue>
      </CipherData>
    </EncryptedData>
  </connectionStrings>

我正在尝试从以下类似文章中扩展服务:Encrypted Configuration in ASP.NET Core

但是我正在使用Azure,但我知道将Azure混合到混合中也可以使您完成其他工作。使用Azure数据库的人员是否有关于如何保护其连接字符串或至少一个使我入门的链接的建议?

2 个答案:

答案 0 :(得分:2)

我猜您正在使用Azure Sql身份验证(需要用户名和密码)或带有密码的Azure集成安全性,这就是为什么您担心保护凭据的原因。

如果有一个选项,我建议您使用Azure集成安全性(等同于Windows集成安全性),这样可以避免在连接字符串中公开用户/服务主体凭据。它只需要在Azure活动目录中使用该帐户即可。

如果不能考虑这样做,我们可以寻找将连接字符串存储在Azure Key Vault中并动态检索以建立数据库连接的方法。

答案 1 :(得分:0)

如果使用的是Azure App Services,则可以使用另一种方法安全地存储连接字符串(和其他应用程序机密)。在Azure门户中,可以在“应用程序设置”下的应用程序服务的仪表板中添加这些设置。向下滚动时,最终会遇到“应用程序设置”和“连接字符串”标题。如仪表板上所述,这些设置在静态时被加密并通过加密的通道传输。

Screenshot secure settings for app services