云环境由于各种应用的发展以及来自不同设备和用户的访问,导致身份管理和访问安全成为一个关键问题。典型的安全问题是未授权访问、账户被盗、内部恶意等。因此需要一个可靠的安全访问机制,能够保护来自于各类应用、设备、用户的访问,这就是云的身份和访问管理系统。
本文则是分析了某云厂商的IAM设计架构,为避免引起纠纷,就不具体说出名字了,总之是国际top10云厂商。
一、需求分解
从需求上来说,云IAM的需求包括,高并发、身份云服务、混合云部署、多渠道多租户等,还有最重要的大规模可伸缩性、可用性和互操作性。
1、 大规模高并发
要实现大规模的高并发,就需要微服务架构。在无状态中间层实现多个微服务,请求则被分为实时和接近实时任务,实时任务交给微服务处理,近实时任务则卸载到消息队列中。路由层和中间层则通过令牌执行对微服务的访问。
微服务是可独立部署的服务的软件架构设计,把复杂的应用拆解为小型、独立进程,与语言无关,用API通信。这种小型、高度分离,可以让服务专注于执行一项小任务,每个应用都在自己的进程中运行。相对于多功能的整体服务,微服务很容易被替换,而且每个微服务都可在不影响其他服务的情况下更新。另外,微服务集合启动时间比单个应用启动时间小的多,比如一个微服务的启动时间为1秒,而此类但应用启动可能需要3分钟。
微服务架构因此可以构建灵活、可独立部署系统,将大型系统功能分布到小服务,可增强系统凝聚力,降低系统耦合,在系统增加功能时就很容易。通过持续的重构可以减少对大型预先设计的需求,可以提前、连续的实现系统迭代。
2、身份云
身份云有多个核心服务,每个都解决一个单独问题,比如用户的初始导入导出,组导入,创建删除禁用用户,从用户到组的分配取消,组的创建更新删除,重置密码,管理策略,激活发送等。通常还需要支持最终用户的个人资料编辑修改,验证电子邮件和短信,账户解锁等功能。总体来说,身份云服务应提供认证、授权、审计和联邦,管理公有云上运行的自定义应用/服务及内部部署系统的访问,因此需要用于跨多种服务/应用程序/系统提供单点登录(SSO)功能。
3、混合部署
需要具备统一的访问安全性,应能保护云和企业内部环境中的应用和数据安全,确保任何人从任何设备访问任何应用的安全性,如果两个环境的安全性不一致则会导致风险,例如销售人员跳槽到竞对那里之后仍然可以访问云账户,同样也需要把内部的安全控制扩展到云上,当员工离职后,在内部和云上的账户都应该被禁用。
4、多渠道多用户多租户
多渠道:用户可能通过浏览器、台式机、手机、pad等多种渠道访问,所以需要提供跨所有渠道的安全访问,例如用户在pc上开始的订单,可以在手机上继续处理。
多用户:进一步需要管理客户、合作伙伴、员工等各种用户访问,通常数据不仅可被员工访问,也可被顾客或第三方访问,内部员工和第三方的安全级别不同,因此可能存在风险。需要保证每种类型的用户而不仅是员工提供足够的安全措施。
多租户:多租户是指一个服务的物理实现,安全的支持多个客户。所谓服务是指一组软件功能,由不同客户端重复使用,并且能控制不同身份的策略。也就是说,服务是让用户能够访问多个能力的机制。需要以开放标准为基础,确保与各类应用更容易集成,提供标准的服务交付。
另外要提供用户生命周期管理,需要管理身份可以访问什么,谁可以授权,谁可以管理这种访问等,而身份管理不一定在云中运作,但云应提供这类服务。
5、大规模可伸缩性、可用性和互操作性
要考虑到云增长后对身份服务的需求,为了实现这个目标,需要尽可能的分解业务逻辑,实现最终一致性的无状态,而不受实时影响的操作逻辑,卸载到可伸缩的异步事件管理,转移到近实时系统交付处理。
应用集成:需要支持行业标准,例如OpenID Connect,OAuth2,SAML2,SCIM,REST等,以便与各种应用集成,且可以通过租户自助服务提供每租户按需定制。
互操作性:需要支持LDAP到云的自动化身份同步,反之亦然。在云和企业之间提供SCIM身份总线,并且允许混合云部署,例如身份联合和同步,SSO代理,配置连接器等不同选项。
需求整体框架如图,左侧身份云服务提供统一视图,包括统一安全凭证、统一的管理方式,通过API可以获得服务,服务则包括了SSO、SAML、OAuth、SCIM、AToM、REST、RBAC,还提供与服务有关的报告的dashboard。右侧提供跨越各种应用(企业云应用、合作伙伴应用、第三方应用和客户应用)的无缝体验。这些应用可通过不同信道访问,既包括手机,也包括电脑和浏览器等。常见浏览器支持至少有Firefox、Chrome、IE,最后别忘了Apple的Safari。
二、集成
集成是需要单独拿出来说的一个重点,一般来说大公司都有自己的IAM,整个业务都围绕内部IAM标准建设,就算是中小组织,业务流程也是围绕着用户访问设计的,例如AD。如果系统不支持集成,则用户上云则面临着巨大改造难题,因此集成不是可选,是必须。为了实现与客户的无缝集成,需要提供集成工具。
上图是与AD的集成框架,实现跨所有应用的无缝体验。云应用可以包括HR系统、CRM等。云服务包括了PaaS、Java、数据库、BI、文档等。云和企业内部则通过SCIM标识总线实现从从本地AD数据到云数据的身份同步,另外SAML总线用于将云的认证联合到本地AD。
身份总线是身份相关服务的服务总线,服务总线把消息从A系统传递到另B系统。标识总线是根据基于HTTP的标准机制(如web服务、web服务器代理等)构建的逻辑总线。身份总线中的通信可以根据相应的协议(如SCIM、SAML、OpenID Connect等)执行。例如,SAML总线是两个系统之间的基于HTTP的连接,用于为SAML服务传递消息。
上图右侧包括了一个ID Bridge,这是一个1M左右大小的二进制文件,提供客户下载安装,用途是:从OU中侦听用户和组,并且把他同步到云。例如用户密码和云不同步,则可以通过组映射到云应用来管理用户的访问,当用户的组成员在企业内部改变时,相应的云应用自动更改。为了实现完全自动化,可以通过AD联合服务在AD和云之间建立SSO。
这个图则是将云标识扩展到内部应用,SCIM身份总线把云和LDAP云高速缓存数据同步,关于云高速缓存我们后面会解释。这里解决的是LDAP的问题,LDAP在本地网络上,应用无法通过URL建立连接。因此通过LDAP的应和云高速缓存连接,在被请求的时候从云提取数据,解决了连接问题。云和云缓存之间用SCIM协议来实现。
由于应用开发人员通常不是身份安全专家,因此提供身份管理服务。上图中本地应用可以调用身份服务API,这个服务则包括自助注册、密码管理、用户认证、令牌管理以及与其他社交集成。
NGINX代理提供 SSO和REST API安全性。Gate确保应用提供有效访问令牌和身份验证,建立SSO会话。
所以功能上需要:
1、维护身份跟踪授权的用户账户、所有权、访问和权限
2、与工作流集成
3、为各类设备提供SaaS用户帐户
4、支持定期审计功能
5、账户生命周期管理
6、MFA及动态认证集成
值得一提的是MFA,在MFA部署中,OAuth和OpenID Connect等行业标准至关重要。还包括了动态认证,例如ip、位置、时间和行为的认证。通过OATH、FIDO集成和可扩展身份管理框架,可让用户采用新的MFA,从而实现端到端的安全IAM。
IAM的基本功能是支持整个用户生命周期管理,包括权限、持续访问等,因此审计是这里的重要部分。例如随着职责的变化,员工被授予某个访问特权,严格的来说这种变化应该被定期审计,所以需要定期审计功能。此外,随着公司业务的变化,跨部门、部门撤销、收购公司都需要批量重新分配,迁移到云可以超越现有的手动管理方法,并自动将这些变化提供分析。
身份分析和IAM集成对于风险识别是个必须任务,既包括云,也包括本地都需要统一的管理视图进行分析,甚至需要能够直接提供合规报告。
对于特权账号管理来说则需要PAM,主要针对特权用户滥用特权,PAM的主要内容是提供一个密码保险库,密码存储在保险库中并定期更改,强制周期性变化密码,自动跟踪报告所有活动。为了更进一步的安全考虑,用户无需知道应用密码即可连接。
三、微服务架构
1、微服务API注意事项
微服务的环境中,URL包括三个部分:主机、微服务和资源,例如host/oauth/v1,而/oauth/v1则由多个API,类似host/oauth/v1/token,host/oauth/v1/authorize等等。也就是说,URL实现了微服务,URL的资源部分实现一个API,因此在同一微服务下聚合多个API,每个请求都包含一个对标识管理服务的API的调用。而URL的主机部分识别租户,例如https://zhangsan.identity.cloud.com:/oauth/v1/token。
为了让应用可以发现所需API,需要提供目录树。
2、微服务架构
上图中各种应用都可以对API调用,请求经过云负载均衡,负载均衡中有一个功能是云配置引擎执行租户和服务配置。然后请求经由WEB路由。根据所请求的服务,将其转发到微服务平台,微服务平台处理内外部HTTP请求,分为平台服务和基础设施服务,平台服务是Java,且分布部署。基础设施服务则单独运行。
2.1平台服务:支持各类标准认证协议。
OpenID Connect实现标准的OpenID Connect登录/注销流程,基于浏览器验证用户身份,接收身份令牌。在内部身份验证模型是无状态的,用cookie的形式维护身份验证和会话状态。通过OpenID Connect启动的认证交互,则委派给一个可信的SSO服务。
OAuth2提供令牌授权服务,可以双因素也可以三因素。
SAML2提供身份联合服务,实现标准的SAML2浏览器POST登录和注销配置文件。
SCIM是用于自动化身份域和系统之间的用户身份信息交换的开放标准,提供身份管理服务,覆盖身份生命周期,密码管理,组管理等的无状态REST接口(即API),将这些API暴露为可通过网络访问的资源。
2.2基础设施服务
基础设施服务用来支持平台服务,包括事件处理服务(比如异步处理用户通知、应用订阅、数据库审计),作业调度服务,缓存管理服务; 存储管理服务;报告服务;SSO服务;用户界面服务;服务管理器服务。
进一步则需要为IAM自身提供存储,包括身份存储(存储用户和组),全局数据(配置数据),操作模式(租户分离和存储客户数据),审计模式(审计数据),高速缓存集群(缓存及加速)等。所有使用者通过标准协议,这样可以用DNS来路由,应用不需要了解内部实现。
2.3实时和近实时任务
请求分为同步实时和异步近实时任务,实时任务仅包括用户进行所需的操作,以最小延迟执行的任务。近实时任务是在后台执行而无需用户等待的任务。
实时任务执行主要业务功能,例如登陆请求,应用发一条消息验证用户凭证并返回会话cookie,用户登录。而在背后则执行了其他几个任务,例如验证用户是谁、审计、发送通知等。因此在这里,验证凭证是实时执行的任务,以便用户被给予cookie开始会话。但与通知、审计等相关的任务是近实时的任务可以异步执行,减少了延迟,这些近实时任务卸载到异步事件管理系统630的消息队列。
例如用户需要创建新用户,系统调用SCIM API来创建用户,身份在身份存储中被创建时,用户获得一个邮件,邮件中的链接可以重置密码。当身份平台接收到创建请求,微服务查看操作数据库中的配置数据,确定创建用户操作被标记,微服务返回到客户端,并指示用户的创建已成功完成,但通知邮件的实际发送被推迟并推送到后端。微服务使用消息传递API,在队列中排队。
消息队列服务在后台不断扫描队列,发现用户创建事件后,由审计、用户通知、应用预定、数据分析等的事件门户处理,消息队列执行通知逻辑发送邮件。至此,该事件出列。
2.4实时缓存
缓存本身也可以作为微服务提供,缓存是弹性的,写资源bypass缓存。关于缓存后面单独说明。
2.5 云监控模块
运行时组件向云监控模块发布健康和运营度量。
2.6 扩展
微服务是无状态的,状态是指应用为了执行功能使用的数据,身份平台把所有状态保存在数据层中特定的位置,处理请求的代码中间层并不存储,因此可实现水平、垂直方向的高度可扩展。
垂直扩展意味着向系统中单个节点添加资源,通常是加内存加CPU,把硬件扩充到极限。只需要关注CPU使用情况,事务存在在持久层,需要可以增加更多副本。水平扩展是指向系统添加更多节点,例如添加新服务器到分布式应用,使应用几乎无限扩展,只受网络带宽限制。
Web层,中间层和数据层可以分别独立和伸缩,三层扩展各有用途,Web层扩展支持更多HTTP请求,中间层扩展支持更多服务,数据层扩展则支持更多租户。
3、功能视图
功能堆栈包括平台服务,共享库和数据存储。共享库包括基础设施库,所需数据在数据存储库,包括全局配置、消息存储、全局租户、个性化设置、资源、用户瞬态数据、系统暂态数据、每租户视图、操作存储、高速缓存等。
大客户服务则包括了云SSO和治理、企业治理、AuthN代理、联合代理、私人账户管理。
基础设施服务和基础设施库提供了平台所需的配套能力,包括作业调度、UI、SSO、报告、缓存、存储、服务管理、事件处理器。基础设施库包括数据管理器API、事件API、存储API、认证API、授权API、cookie API、key API、凭证API。
提供各种UI,消费者界面、客户管理界面、DEVOPS界面、登陆界面。各种环境和IAM集成,通过身份桥(AD集成,WNA,SCIM连接器),apache代理、MSFT代理。
4、Cloud Gate
Cloud Gate是个web插件,可以理解为WebGate或WebAgent。Cloud Gate作为安全网关,确保对API的访问安全,基于OAuth,是策略实施点。
如图所示,当用户浏览器发起请求时,gate验证凭证,确定凭证是否足够(如二次密码挑战),Cloud Gate既可以充当策略决策段又充当策略实施点,因为它具有本地策略。
Cloud Gate作为OAuth2客户端向平台注册,使其能够请求OpenID Connect和OAuth2服务,然后匹配规则,维护资源配置信息。Cloud Gate可以对不同应用提供不同安全策略。
在浏览器用户访问期间,Cloud Gate充当发起认证流程的OpenID Connect和中继器,如果用户没有有效的本地用户会话,则Cloud Gate将用户重定向到SSO。流程结束时候提供JWT作为身份标识,Cloud Gate验证JWT(例如,查看签名,到期时间,目标等),并给用户发布本地会话cookie。
如果是通过REST API客户端访问,Cloud Gate充当OAuth2资源服务器,检查授权标头和访问令牌,原始访问令牌不经修改的传递。
5、网络
如图,应用根据所需保护等级,与其他区域(如SSL区域,无SSL区域等)的连接情况进行安全域划分。有些应用需要从云内部访问,有些从外部,有些则是开放访问,因此要针对不同区域实施对应保护。IAM不仅提供服务,自身的访问也在这里实现。
各种应用服务任都可对API进行HTTP调用,首先经过公共云负载平衡外部虚拟IP地址),再经过网络路由层和内部负载平衡设备,最后在平台web路由层接收。平台web路由层接受内外请求,把他们路由到平台服务层或基础设施服务层
除了通信的数据层和基于LDAP通信的ID存储层之外,OAuth协议用于保护内部组件(例如微服务)之间的通信,且来自外部的访问的相同令牌也用于内部的安全,也就是说,web路由层无论内外,均使用相同的令牌和协议来处理请求,因此提供了单一一致的安全模型。而系统中安全模型越少,系统越安全。
Web路由层需要知道被调用资源的URL,这就需要发现功能,通过OAuth服务的API实现可确定,从而不需要考虑静态路由的可用性。
6、云缓存
云缓存支持与LDAP的应用通信,云不通过LDAP通信,但例如电子邮件、日历服务器则只能用LDAP通信。为了支持LDAP,云缓存把LDAP转换掉。通过LDAP和HTTP之间转换,还可以通过内部防火墙限制。
而缓存集群基于分布式数据网格来实现,分布式数据网格是一个系统,其中一组服务器在一个或多个集群中协同工作。提供低响应时间,高吞吐量,可预测的可扩展性,持续可用性和信息可靠性。
来源:freebuf.com 2018-05-13 17:41:11 by: mcvoodoo
请登录后发表评论
注册