云计算设计模式(十)——守门员模式

云计算设计模式(十)——守门员模式

通过使用充当客户端和应用程序或服务之间的代理,验证和进行消毒的请求,并将它们之间的请求和数据的专用主机实例保护的应用程序和服务。这可以提供一个额外的安全层,并限制了系统的攻击面。

背景和问题

应用程序通过接受和处理请求揭露它们的功能提供给客户。在云托管方案,应用程序暴露终端客户机连接,一般包括代码来处理来自客户端的请求。此代码可以执行认证和验证,一些或所有请求的处理,并有可能访问存储等服务代表客户端的。

如果恶意用户能够危及系统和访问应用程序的托管环境,它使用安全机制,诸如凭证和存储密钥,并且该服务并访问数据,被暴露。因此,恶意用户可能能够获得无节制访问敏感信息和其他服务。

解决方案

为了尽量减少接触到敏感信息和服务客户的风险,去耦,揭露出从处理请求并访问存储在代码公共端点的主机或任务。这可以通过使用一个立面或专用任务,与客户端进行交互,然后手拿开的请求(可能通过一个去耦接口)连接到主机或任务将要处理的请求来实现。图1示出了这种方法的一个高层视图。

图1 - 这种模式的高级概述

守门员模式可以简单地用来保护存储,或者它可被用作一个更全面的立面,以保护所有的应用程序的功能。的重要因素是:
•控制验证。守门员验证所有请求,并拒绝那些不符合验证要求。
•有限的风险和曝光。守门员不具有访问所使用的可信主机访问存储和服务的凭证或密钥。如果关守被攻破,攻击者无法获得访问这些凭据或密钥。
•适当的安全性。守门员运行在一个有限的特权模式,而应用程序的其余部分在访问存储和服务所需要的完全信任模式下运行。如果关守被破坏,它不能直接访问应用程序的服务或数据。

此图案有效地作用就像一个防火墙在一个典型的网络拓扑。它允许关守来检查请求并做出关于是否将请求传递到可信主机决定(有时也被称为钥匙之王),执行所需的任务。这一决定通常需要守门员来验证并将其传递到受信任主机前消毒要求的内容。

问题和注意事项

在决定如何实现这个模式时,请考虑以下几点:
•确保受信任主机到网守请求通过仅暴露内部或保护端点,只有连接到守门员。受信任主机不应该暴露任何外部端点或接口。
•关守必须在有限的特权模式下运行。通常,这意味着运行守门员和独立的托管服务或虚拟机的可信主机。
•关守不应该执行相关的应用程序或服务,或访问任何数据的任何处理。它的功能是纯粹的验证和消毒要求。受信任的主机可能需要执行的请求额外的验证,但核心的验证应该由守门员进行。
•使用守门员和信任的主机或任务,如果这是可能的之间的安全通信通道(HTTPS,SSL或TLS)。然而,一些托管环境可能不支持HTTPS内部端点。
•添加额外的层,以实现守门员模式的应用有可能对应用程序的性能造成一定影响,由于它需要额外的处理和网络通信。
•关守实例可能是一个单点故障。为了最大限度地减少故障的影响,考虑部署其他实例,并使用自动缩放机制,以确保有足够的能力来保持可用性。

何时使用这个模式

这种模式非常适合于:
•应用程序,处理敏感信息,揭露必须具有高一定程度的保护免受恶意攻击,或执行不得破坏关键业务服务。
•分布式应用中,有必要从主要任务分别执行请求验证,或集中此验证,以简化维护和管理。

例子

在一个云托管的情况下,该模式可以通过使用一个内部端点,一个队列,或存储作为中间通信机制解耦从受信任的角色和服务应用程序中的关守角色或虚拟机来实现。图2示出了使用内部的端点时的基本原则。

图2 - 的模式使用云服务的网络和辅助角色的一个例子

本文翻译自MSDN:http://msdn.microsoft.com/en-us/library/dn589793.aspx

时间: 2024-10-31 17:05:03

云计算设计模式(十)——守门员模式的相关文章

云计算设计模式(十五)——管道和过滤器模式

云计算设计模式(十五)--管道和过滤器模式 分解,执行复杂处理成一系列可重复使用分立元件的一个任务.这种模式可以允许执行的处理进行部署和独立缩放任务元素提高性能,可扩展性和可重用性. 背景和问题 一个应用程序可能需要执行各种关于它处理的信息不同复杂的任务.一个简单,但不灵活的方式来实施这个应用程序可以执行此处理为单一模块.然而,这种方法有可能减少用于重构代码,对其进行优化,或者重新使用它,如果是在应用程序中其他地方所需要的相同的处理的部件的机会. 图1通过使用单片式的方式示出了与处理数据的问题.

云计算设计模式(十六)——优先级队列模式

云计算设计模式(十六)--优先级队列模式 优先发送到服务,以便具有较高优先级的请求被接收和高于一个较低优先级的更快速地处理请求.这种模式是在应用程序是有用的,它提供不同的服务级别保证或者针对独立客户. 背景和问题 应用程序可以委托给其他服务的具体任务;例如,为了执行后台处理或与其他应用程序或服务的整合.在云中,消息队列通常用于将任务委派给后台处理.在许多情况下,请求由服务接收的顺序是不重要的.然而,在某些情况下,可能需要优先考虑的具体要求.这些要求必须早于较低优先级的其他可能先前已发送由应用程序

云计算设计模式(十二)——索引表模式

云计算设计模式(十二)--索引表模式 创建索引过的被查询条件经常被引用的数据存储等领域.这种模式可以通过允许应用程序更快速地定位数据来从数据存储中检索提高查询性能. 背景和问题 许多数据存储通过使用主键组织为实体的集合的数据.应用程序可以使用此键来查找和检索数据.图1显示了一个数据存储区保持顾客的信息的例子.主键是客户ID. 图1  - 按主键组织的客户信息(客户ID) 而主键是该取基于该关键字的值的数据的查询宝贵的,应用程序可能不能够使用主键是否需要基于其它字段来检索数据.在顾客例如,应用程序

云计算设计模式(十九)——运行重构模式

云计算设计模式(十九)--运行重构模式 设计应用程序,使得它可以在不需要重新部署或者重新启动应用程序重新配置.这有助于保持可用性并减少停机时间. 背景和问题 一个主要目的为重要的应用,如商业和企业网站是尽量减少停机时间以及由此引发的中断给客户和用户.但是,有时有必要重新配置应用程序改变特定行为或设置,而在部署和使用.因此,它是用于该应用程序被设计成这样一种方式,以允许在运行时要应用这些配置的变化,并为应用程序,以检测所述变化并且尽快地应用它们的部件的优点. 该种要应用可能被调整记录,以协助与应用

云计算设计模式(二十四)——仆人键模式

云计算设计模式(二十四)--仆人键模式 使用一个令牌或密钥,向客户提供受限制的直接访问特定的资源或服务,以便由应用程序代码卸载数据传输操作.这个模式是在使用云托管的存储系统或队列的应用中特别有用,并且可以最大限度地降低成本,最大限度地提高可扩展性和性能. 背景和问题 客户端程序和网络浏览器经常需要读取和写入文件或数据流,并从一个应用程序的存储空间.通常,应用程序将处理的运动数据,或者通过从存储读取它,并将其传输到客户端,或通过从客户机读取该载流并将其存储在数据存储中.然而,这种方法吸收了宝贵的资

云计算设计模式(二十二)——静态内容托管模式

云计算设计模式(二十二)--静态内容托管模式 部署静态内容到一个基于云的存储服务,可以直接向客户提供这些.这个模式可以减少潜在的昂贵的计算实例的需求. 景和问题 Web应用程序通常包括静态内容的一些元素.此静态内容可以包括HTML页面和诸如图像和可用到客户端的文件的其他资源,无论是作为一个HTML页的一部分(如嵌入式图像,样式表和客户端JavaScript文件)或作为单独的下载(如PDF文档). 尽管Web服务器以及调整通过有效的动态执行页代码和输出缓存优化的要求,他们仍然必须处理请求下载静态内

云计算设计模式(十四)——实体化视图模式

云计算设计模式(十四)--实体化视图模式 产生过在一个或多个数据存储中的数据预填充的观点时,数据被格式化以不利于所需的查询操作的一种方式.这种模式可以帮助支持高效的查询和提取数据,并提高应用程序的性能. 背景和问题 何时存储数据时,优先级为开发者和数据管理员经常集中在如何将数据存储,而不是它是如何读出.所选择的存储格式通常是密切相关的数据,用于管理数据的大小和数据的完整性,并且在使用的那种存储的要求的格式.例如,使用的NoSQL文献商店时,该数据通常被表示为一系列的聚集体,其每一个包含了所有的信

云计算设计模式(二十)——调度程序代理管理者模式

云计算设计模式(二十)--调度程序代理管理者模式 协调一系列在分布式服务集和其他远程资源的的行为,试图透明地处理故障,如果这些操作失败,或撤销,如果系统不能从故障中恢复执行工作的影响.这种模式可以分布式系统中增加弹性和灵活性,使之恢复和重试失败是由于短暂的异常,持久的故障和处理故障等操作. 背景和问题 应用程序执行其包括多个步骤,其中的一些可以调用远程服务或访问远程资源的任务.各个步骤可以是相互独立的,但它们是由实现该任务的应用程序逻辑编排. 只要有可能,应用程序应该确保任务运行完成和解决远程访

云计算设计模式(十八)——重试模式

云计算设计模式(十八)--重试模式 启用应用程序来处理预期的,暂时的失败时,它会尝试连接到由透明的重试操作了以前失败的期望,失败的原因是瞬时的服务或网络资源.这种模式可以提高应用程序的稳定性. 背景和问题 该通信的应用程序与在云中运行的元素必须是可能发生在这样的环境中的瞬时故障敏感.这些故障包括网络连接的过程中出现时,一个服务是忙碌的瞬时损失的组件和服务中,服务的临时不可用,或超时. 这些故障一般是自校正的,如果经过一个合适的延迟被重复触发一个故障的动作很可能是成功的.例如,数据库服务,它正在处