如何使用 Azure 云服务隐藏我的存储和 SQL 连接字符串?

How do I hide my Storage and SQL connection strings using Azure Cloud Services?

我想将存储和 SQL 连接字符串从存储在我的解决方案的各个项目中的配置文件移动到只能在 Azure 门户中访问。

在源代码管理中保留连接字符串意味着如果有人查看了我们的代码库,他们将可以无限制地访问我们的 Azure 帐户。

在 Azure 网站中,连接字符串可以在门户中设置,并在下次部署时保留。是否可以对云服务做同样的事情?

不,这是不可能的。云服务是一个 VM,它不是可以使用连接字符串的应用程序。

如果您有一个持续集成服务器,您可以这样做:在将您的应用程序部署到云服务之前,运行一个脚本,将连接字符串的值更改为您喜欢的值,并部署它。这样,连接字符串仅在您的 CI 服务器中可见,而在您的代码中不可见。

但是请注意,如果您已经将连接字符串提交到您的代码库,则无法将它们从历史记录中删除。 (除非你做一个force push,不推荐)。

现在使用 Azure Key Vault 应该可以做到这一点。我还没有尝试过 - 但计划 - 但这里有一个关于 getting started with key vault and then using key vault from a web app 的很好的教程。我不确定这对云服务是否完全一样。

这真的很晚了,但如果您已将项目部署为 Web 服务,安全存储连接字符串的最简单方法是转到:

Your App Service -> Configuration -> Connection Strings -> New connection string

在这里,添加连接字符串的名称(比如 DBConnectionString)和连接字符串的值。此值应将 Web.config 文件中名称为 DBConnectionString 的任何虚拟连接字符串替换为您在上面添加的值。

您的 Web.config 文件应包含如下所示的内容。在这里你可以用任何东西替换 SOME DUMMY VALUE ;部署的服务将从 Azure 门户获取连接字符串。本地调试会要求你重新添加连接字符串。

<connectionStrings>
    <add name="DBConnectionString"
               connectionString="SOME DUMMY VALUE" />
</connectionStrings>