【问题标题】:Best practice regarding Azure DocumentDB auth key?关于 Azure DocumentDB 身份验证密钥的最佳实践?
【发布时间】:2015-03-07 12:41:15
【问题描述】:

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

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

那么,总结一下我的问题,在开发和使用 Azure DocumentDB 时处理身份验证密钥/端点的最佳做法是什么?

【问题讨论】:

    标签: security azure azure-cosmosdb


    【解决方案1】:

    将连接字符串存储在 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

    【讨论】:

    • 我也使用了配置转换。我将凭据存储在 web.config.debug 中,然后将 *.debug 添加到 .gitignore。我发现排除 *.debug 文件比排除某些 *.config 文件更容易。
    • 现在有一个本地 DocumentDb 模拟器可用;见stackoverflow.com/a/40635346/41403
    【解决方案2】:

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

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

    【讨论】:

    • 当然,这是 DocumentDB 的缺点之一。首先,我正在考虑使用 RavenHQ,但不幸的是它太贵了。感谢您的回答!
    • @Nordis,顺便说一句,这是社区中非常流行的功能请求。如果您认为它对产品很重要,您也可以查看并投票支持它。 feedback.azure.com/forums/263030-documentdb/suggestions/…
    猜你喜欢
    • 2014-01-23
    • 2013-01-17
    • 2014-06-23
    • 1970-01-01
    • 1970-01-01
    • 2018-04-18
    • 1970-01-01
    • 2012-08-26
    • 2011-08-17
    相关资源
    最近更新 更多