关于 Azure DocumentDB 授权密钥的最佳实践?

Best practice regarding Azure DocumentDB auth key?

对于大多数 Azure 服务,我可以在本地计算机上 运行 一个模拟器,例如存储模拟器。这允许我将凭据存储到我真正的 azure 存储帐户作为我的 azure 网站上的应用程序设置。在本地,我的 web.config.

中有模拟器的凭据

但是如何使用 Azure DocumentDB 实现同样的安全性?我不希望将凭据存储在我的本地 web.config,但同时我需要能够在开发时在本地 运行 应用程序。据我了解,DocumentDB 没有模拟器?我创建的所有 DocumentDB 的端点和授权密钥都相同吗?

所以,总结一下我的问题,在开发和使用 Azure DocumentDB 时处理授权密钥/端点的最佳做法是什么?

您通过将连接字符串存储在 Azure 网站环境中来做正确的事情,因此它们不在您的 web.config 中,因此不在您的源代码控制系统中。而且您的本地开发过程对您来说效果很好,只是因为您使用的是不需要任何凭据的模拟器。情况并非总是如此,但正如您针对文档数据库以及可能用于存储数据的其他资源所指出的那样。

存储和部署应用程序设置和连接字符串的指南是将它们保存在本地单独的配置文件中,这些文件永远不会签入您的源代码控制系统。然后,在您的 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

另一种方法是将密钥存储为环境变量并让您的代码读取它。

另一方面,您的开发环境应该有一个单独的 docdb,它不是您的生产环境。由于 docdb 不提供模拟器,也没有免费层,这会导致更高的开发成本。