首页 文章

防止azure登台环境访问队列消息

提问于
浏览
4

在将最新的azure部署从分段交换到 生产环境 之后,我需要阻止分段工作者角色访问队列消息 . 我可以通过检测环境是否在代码中进行分段或 生产环境 来实现此目的,但是任何人都可以告诉我是否有任何其他方法来防止登台环境访问和处理队列消息?

谢谢您的帮助!马赫什

5 回答

  • 1

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

  • 1

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

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

  • 1

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

    它真的不是那么容易,但绝对可能 .

  • 0

    如果这是从PRODUCTION环境保护DEV / TEST环境的问题,您可能需要考虑单独的Azure订阅(每个环境一个) . 模式和实践的这本指南讨论了这种方法的优点 .

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

  • 0

    kwill关于重新生成密钥的答案很好,但我最终做到了这一点:

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

    • 发布到分阶段环境(这将开始访问队列,在我们的情况下这很好)

    • 通过Azure交换暂存< - > 生产环境

    • 再次发布,这次到新的舞台环境(旧的)

    您现在拥有运行最新版本并为队列提供服务的 生产环境 和临时工作者角色 . 这对我们来说是件好事,因为它给了我们两倍的容量,而且无论如何分段运行我们也可以使用它!

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

相关问题