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

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

背景和问题

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

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

解决方案

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

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

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

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

问题和注意事项

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

何时使用这个模式

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

例子

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

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

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

云计算设计模式(十)——守门员模式相关推荐

  1. 设计模式(十)----策略模式

    目录 1.Strategy模式 1.1 作用 1.2 示例程序 1.2.1 示例程序类图 1.2.2 Hand类 1.2.3 Strategy接口 1.2.4 WinningStrategy类 1.2 ...

  2. java架构模式与设计模式(十)--失效模式与影响分析

    原文链接 失效模式与影响分析 失效模式与影响分析即"潜在失效模式及后果分析",或简称为FMEA.FMEA是在产品设计阶段和过程设计阶段,对构成产品的子系统.零件,对构成过程的各个工 ...

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

    云计算设计模式(二十四)--仆人键模式 使用一个令牌或密钥,向客户提供受限制的直接訪问特定的资源或服务,以便由应用程序代码卸载数据传输操作. 这个模式是在使用云托管的存储系统或队列的应用中特别实用,而 ...

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

    云计算设计模式(十五)--管道和过滤器模式 分解,执行复杂处理成一系列可重复使用分立元件的一个任务.这种模式可以允许执行的处理进行部署和独立缩放任务元素提高性能,可扩展性和可重用性. 背景和问题 一个 ...

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

    云计算设计模式(二十)--调度程序代理管理者模式 协调一系列在分布式服务集和其它远程资源的的行为,试图透明地处理故障,假设这些操作失败,或撤销,假设系统不能从故障中恢复执行工作的影响.这样的模式能够分 ...

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

    云计算设计模式(十二)--索引表模式 创建索引过的被查询条件经常被引用的数据存储等领域.这种模式可以通过允许应用程序更快速地定位数据来从数据存储中检索提高查询性能. 背景和问题 许多数据存储通过使用主 ...

  7. 云计算设计模式(二十三)——Throttling节流模式

    云计算设计模式(二十三)--Throttling节流模式 控制由应用程序使用,一个单独的租户或整个服务的一个实例的资源的消耗.这样的模式能够同意系统继续执行并满足服务水平协议.即使当添加需求的资源放置 ...

  8. 设计模式 ( 十八 ) 策略模式Strategy(对象行为型)

    设计模式 ( 十八 ) 策略模式Strategy(对象行为型) 1.概述 在软件开发中也经常遇到类似的情况,实现某一个功能有多种算法或者策略,我们能够依据环境或者条件的不同选择不同的算法或者策略来完毕 ...

  9. 设计模式 ( 十四 ) 迭代器模式Iterator(对象行为型)

    设计模式 ( 十四 ) 迭代器模式Iterator(对象行为型) 1.概述 类中的面向对象编程封装应用逻辑.类,就是实例化的对象,每个单独的对象都有一个特定的身份和状态.单独的对象是一种组织代码的有用 ...

最新文章

  1. Java中的比较总结
  2. Spring注解@Resource和@Autowired区别对比
  3. FIR和IIR的区别+差分方程的单位冲激响应(matlab图解)
  4. SAP Spartacus键盘按下tab键之后,出现的focus state border是如何实现的
  5. 每日站立会议个人博客(冲刺周)-Wednesday
  6. akka 消息发送接收_Akka型演员:探索接收器模式
  7. Qt工作笔记-QString中arg的使用(可用于SQL语句拼接)
  8. iPhone 12无线充电模块曝光:AirPower有戏了!
  9. centos7配置IP地址CentOS7 修改hostname,ip地址以及hosts(永久生效)
  10. 《人工智能:计算Agent基础》——1.5 复杂性维度
  11. c语言编译怎么查看错误,C语言编译器的错误信息
  12. 使用逐浪CMS做网站如何引用Markdown编辑器
  13. 建模simulink - xpc函数参数处理
  14. 夏天简单实用驱蚊小妙招
  15. php开启页面错误提示,php如何设置关闭网页错误提示
  16. 解决Sql server数据库不兼容问题
  17. 闭包的缺点与解决办法
  18. MySQL学习之数据库查询
  19. H264编码器12( H264基本原理 --图文表达很清晰)
  20. SORT4 SORT项目代码解析

热门文章

  1. Hibernate的使用梳理
  2. 虚方法的调用是怎么实现的(单继承VS多继承)
  3. sharepoint 备份还原
  4. python3 urllib 类
  5. JVM-01:类的加载机制
  6. 有关Gradle Network is unreachable: connect的报错
  7. Markdown转HTML之Node篇
  8. LSJ_NHibernate第三章 IDAL,DAL,BLL
  9. 读书笔记(2) OpenLayers中的图层
  10. 多个CALayer的联动