对于大多数Azure服务,我可以在本地计算机上运行模拟器,例如存储模拟器。这允许我将凭据存储到我的真实azure存储帐户作为我的Azure网站上的应用程序设置。在本地,我在web.config中有模拟器的凭据。
但是如何使用Azure DocumentDB实现同样的安全性?我不希望将凭据存储在我的本地web.config中,但同时我需要能够在开发时在本地运行该应用程序。据我所知,DocumentDB没有模拟器?对于我创建的所有DocumentDB,端点和auth密钥是相同的吗?
因此,总结一下我的问题,在开发和使用Azure DocumentDB时处理身份验证密钥/结束点的最佳做法是什么?
答案 0 :(得分:2)
您通过在Azure网站环境中存储连接字符串来做正确的事情,因此它们不在您的web.config中,因此不在您的源代码管理系统中。并且您的本地开发过程仅适用于您,因为您使用的是不需要任何凭据的模拟器。但是,正如您使用Document DB指出的那样并且可能与您可能用于存储数据的其他资源一样,情况并非总是如此。
存储和部署应用程序设置和连接字符串的指南是将它们保存在本地的单独配置文件中,这些配置文件永远不会检入源控制系统。然后,在您的web.config文件中,引用这些文件。这样可以保护您的web.config中的机密信息。
例如,对于连接字符串,它将是这样的:
<connectionStrings configSource="ConnectionStrings.config">
</connectionStrings>
对于应用设置,它将是这样的:
<appSettings file="..\..\AppSettingsSecrets.config">
<add key="webpages:Version" value="3.0.0.0" />
<add key="webpages:Enabled" value="false" />
...
</appSettings>
有关此技术的更多信息,请here。
答案 1 :(得分:1)
另一种方法是将密钥存储为环境变量,并让代码读取它。
另一方面,您的开发环境应该有一个单独的docdb,一个不是您的生产环境。由于docdb不提供模拟器而且没有免费套餐,因此会导致开发成本增加。