【问题标题】:Prevent azure staging environment from accessing queue messages防止 azure 登台环境访问队列消息
【发布时间】:2013-07-31 18:56:29
【问题描述】:

将最新的 azure 部署从暂存切换到生产后,我需要防止暂存辅助角色访问队列消息。我可以通过在代码中检测环境是暂存还是生产来做到这一点,但是谁能告诉我是否有任何其他方法可以防止暂存环境访问和处理队列消息??

感谢您的帮助! 马赫什

【问题讨论】:

  • 我已经在下面回答了,但出于好奇,您将如何检测给定角色是在代码中的暂存还是生产?

标签: azure azure-storage


【解决方案1】:

平台中没有任何东西可以做到这一点。这是一个应用程序/代码的事情。如果应用程序具有访问队列的凭据(例如,帐户名和密钥),那么它正在执行它被编码的操作。

【讨论】:

    【解决方案2】:

    让您的暂存环境使用主存储密钥,而您的生产环境使用辅助存储密钥。当您进行 VIP 交换时,您可以重新生成您现在的暂存环境正在使用的存储密钥,这将导致它不再具有访问队列的凭据。

    请注意,这确实会引入时间问题。如果您先进行交换然后更改存储密钥,那么您将面临工作角色在两个操作之间拾取消息的风险。如果您先更改密钥然后进行交换,那么您的生产服务将在一两秒钟内不再从队列中提取消息。这取决于您的服务是否可以接受此时间问题。

    【讨论】:

      【解决方案3】:

      您实际上可以检测当前实例在哪个部署槽中运行。我在此处详细说明了如何执行此操作:https://stackoverflow.com/a/18138700/1424115

      这确实不像应有的那么容易,但绝对有可能。

      【讨论】:

        【解决方案4】:

        如果这是一个保护您的 DEV/TEST 环境免受 PRODUCTION 环境影响的问题,您可能需要考虑单独的 Azure 订阅(每个环境一个)。来自 Patterns and Practices 的本指南讨论了这种方法的优点。

        http://msdn.microsoft.com/en-us/library/ff803371.aspx#sec29

        【讨论】:

          【解决方案5】:

          kwill 的重新生成密钥的答案很好,但我最终这样做了:

          1. 可选 - 通过更改适当的配置键来阻止生产工人角色监听队列,该配置键告诉它忽略消息,然后重新启动 VM(通过管理门户或终止 WaHostBootstrapper.exe)

          2. 发布到暂存环境(这将开始访问队列,这在我们的例子中很好)

          3. 通过 Azure 交换分阶段 生产

          4. 再次发布,这次是到新的分阶段环境(旧直播)

          您现在拥有运行最新版本并为队列提供服务的生产和暂存工作人员角色。这对我们来说是件好事,因为它为我们提供了两倍的容量,而且由于暂存正在运行,我们不妨使用它!

          重要的是,您只使用 staging 作为发布的一种方法(如预期的那样) - 为测试/QA 目的创建一个全新的环境,它有自己的存储帐户和消息队列。

          【讨论】:

            猜你喜欢
            • 2016-04-16
            • 1970-01-01
            • 1970-01-01
            • 2021-11-20
            • 1970-01-01
            • 2019-12-06
            • 2021-06-21
            • 1970-01-01
            • 2014-06-10
            相关资源
            最近更新 更多