Authing 身份管理:自建 VS 购买

Web 或移动应用程序的开发团队都面临一个选择: 在内部构建整个应用程序,或者有选择地使用“开箱即用的服务”,让工作变得更简单快捷。如今许多成功的团队都选择了后者,比如使用 Stripe 和 Braintree 的支付功能,Twilio 的通信功能。另一种类似的服务是第三方客户身份和访问管理 (CIAM) 解决方案。由 API、 SDK 和开箱即用、可定制组件构成的数字身份层,可以作为软件开发的构建块,提高上市速度,降低开发成本,并使内部开发人员关注应用程序的核心业务。

面向客户的应用程序——无论它们针对的是消费者还是业务用户——都需要一组与身份验证、授权和用户管理相关的公共属性。应用程序需要支持常见的工作流程,如帐户创建、用户登录、密码重置、帐户恢复和多因素身份验证注册。此外,应用程序需要根据用户来制定不同的访问级别。

架构师和工程主管经常不能确定,外部供应商提供的全面身份和访问管理 (IAM) 解决方案是否适合他们的项目。本文讨论了在做出构建或购买决策时需要考虑的的关键因素,以及预构建解决方案的优势。

身份和访问管理的挑战

面向客户的应用程序的身份和访问管理包括身份验证、授权和用户管理等功能。身份验证允许用户通过密码、令牌或 API 密钥、外部目录 (如 Active directory 或 LDAP、企业 IDP 或社会登录) 访问系统。授权定义了他们可以访问的资源。用户管理包括用户个人身份信息 (PII) 的存储和安全,管理用户从注册到删除的生命周期,以及更高级的功能,如单点登录和向下游应用程序开通服务。最终用户认为这些核心功能是理所当然的,但是执行项目计划面临各种挑战:

复杂性

内部开发资源也许能够处理基本的身份验证,如帐户创建、登录和密码重置。然而,如今的客户要求更多功能和更高的安全性,这通常会增加项目所涉及的范围,如单点登录、客户数据分区、令牌身份验证、多因素身份验证、社会登录和 LDAP/Active Directory 集成等高级特性,而实现这些功能这些需要付出相当大的努力。

此外,如果开发团队没有进行良好的交流,他们在构建应用程序的过程中,可能会发现自己在重新造一个新的“轮子”。单个团队常常低估了构建一个完整的、经过未来验证的身份服务的难度,只能延期完工。而且,身份管理的要求也在不断变化。SAML 和 WS-Fed 变为更加现代的标准,如 OpenID Connect和 OAuth 2.0。此外,早先的标准不能满足企业额外的需求,比如通过撤销 token 来取消对 API 的访问。

公共身份和访问管理需求

终止 SSL:创建和维护 https 与任何客户端之间安全连接;管理网域的 web 证书;安装和维护/修补 SSL/TLS;保持密码的实时更新

操作系统:设置、维护和锁定:;定制操作系统和服务器软件,消除安全漏洞
密码储存及安保:使用最新算法对密码进行散列加密,并随着方法的发展而持续维护

报告:用于查看用户和应用程序总体运行状况的指标仪表板;提供用户访问报告,达到合规标准

部署令牌服务:服务可以进行扩展,可用于跟踪每个用户的会话,并进行数据库维护和补丁修复

使用可扩展的概要文件/用户/组/客户端部署目录:可伸缩的用户存储库;提供灵活的用户配置,包括目录应用服务器、数据库、应用数据库和加密系统

管理界面:管理用户界面——管理用户、应用程序和 API

客户界面:客户服务或帮助台界面,在一定范围内管理客户档案信息

注册,登录,帐户恢复,MFA 屏幕:构建用户界面和工作流,托管登录和注册页面

操作协议:学习 SAML, OIDC, OAuth 2.0 规格

构建授权服务器:为业务逻辑构建授权引擎,包括可定制的范围

社会身份验证和配置文件同步: 代理身份验证社会身份提供者,并同步配置文件

SSO 连接器: 为第三方应用程序定制、维护和测试 SSO 连接器。

MFA:高可用性,冗余 MFA 与多种因素支持 (短信,语音,电子邮件,谷歌认证,生物识别,移动城市)。

身份验证策略:根据用户、APP、组、地理位置、IP 范围、行为、设备等上下文控制登录的可配置策略和策略框架。

供应引擎: 用于管理下游服务用户的引擎。

配置连接器:定制构建、维护和测试基于 API 的连接器,以手动 CRUD 功能

目录/ IDP集成:创建与外部目录 (如 AD/LDAP)的集成,并通过 SAML、OIDC 和 WS-Fed 支持现有 IDP 的入站联合。

网关集成: 与 API 网关集成,如 Apigee 和 Mulesoft。

资源对齐

组织常常缺乏专门的资源,来为其应用程序构建安全且可伸缩的标识功能。它需要团队成员具有各种技术知识,包括密码学、数据库安全、性能工程、系统工程和安全审计,以及高级数据架构来管理授权。专业开发资源稀缺,这意味着许多公司很难获得完成内部工作需要的资源。

可获得性

应用程序客户端需要极高的可用性,确保无论有多大的负载,用户都能够登录。一旦用户管理后端出现问题,应用程序就会崩溃,客户体验也会被破坏。这会影响用户体验和收入的提高:一次糟糕的在线体验会损害客户的信任,从而选择竞争对手的服务。

DDOS 保护:跨所有端点的自动速率限制,以阻止 DDOS 攻击;经常需要 IaaS 功能之外的工作

DevOps:系统和随叫随到的操作团队,实时部署和管理服务;自动机器配置、使用老化和保真度测试进行数据库备份,以及特权访问管理。
基础设施的可用性:实现机器资源的自动化监视和管理 (删除下架节点、配置替代品)。

可扩展性

企业很难预测其应用程序的用户数量,从而有可能为自己的成功而付出代价。如果有太多用户同时尝试登录(例如发生了重大新闻事件),那么您的身份服务系统必须能够应对这些负载。在高峰时期,诸如身份验证、密码加密和搜索等资源密集型操作,需要根据用户需求进行扩展。公司需要考虑不同生产、QA、开发、集成和灾难恢复环境的负载,以及用于超载的缓冲区。大容量应用程序可能需要几十台服务器来处理用户管理。可扩展性的风险很高,如果在线客户无法登陆应用程序,用户就会流失。

安全性

用户数据泄露是非常昂贵的。应用程序是个人识别信息 (PII) 的金矿,通常包括社会保险号、信用卡号等敏感数据。安全环境不断变化,数据黑客技术随着云计算的发展也越来越强。最近的研究表明,平均每个应用程序有26.7个严重漏洞,其中大部分来自自定义代码。注册、登录和恢复工作流常常是最容易的攻击载体,导致应用程序产生安全风险,如身份验证失效、访问控制失效、敏感数据暴露以及日志记录和监控不足等。

公司必须不断地监视、维护和修补他们的代码和数据库,以确保用户数据的安全。开发团队通常不会实时更新安全算法。网络和应用程序的安保系统通常分布于组织的不同部分;随着开发人员竞相赶在最后期限前完成工作,应用程序积累了大量的技术债务。这些都可能导致应用程序存在潜在的安全漏洞。

工程内部的安全监控:自动记录和监控服务内的所有活动,包括管理操作,应用程序行为,文件完变更,变更控制,入侵检测;控制数据传输的请求;向待命的 DevOps 和安全团队发出可疑行为的警报。

安全监控工具:SIEM 用于安全监控 (Splunk, AppD, New Relic, Zabbix, Wavefront 等)。

安全工程实践:软件开发的组织控制和第三方审计:
安全性代码审查
代码库漏洞扫描
端点安全性和授权控制
第三方渗透测试
漏洞检查奖励计划

合规性:获得和维护认证的过程,认证和遵守相关法规

用户界面报告:安全合规,在限定范围内管理事件信息

现代 CIAM 解决方案的好处

工程主管已经越来越意识到构建、保护和维护用户基础设施的困难,并且已经开始主动寻找解决方案。面对开发过程中日益增长的复杂程度,他们没有牺牲应用的功能,而是将其应用程序的身份层更多地移交给第三方客户身份和访问管理提供商。与内部构建相比,这种方法有很多优点。具体来讲:

加快上市时间

开发团队往往面临着需要按时交付 Web 和移动应用程序的巨大压力,而且由于市场竞争日益激烈,开发时间比以往任何时候都更加紧迫。上市时间的任何延误都将威胁到团队的收入,并存在失去潜在客户的风险。将身份管理委托给一个值得信赖的第三方可以确保您的团队按时交付。

降低应用程序开发的 TCO (总体拥有成本)

身份管理是成本超支风险最高的领域之一,其系统复杂性经常被低估,并且还处于不断发展的状态。当内部团队在构建深度用户属性上偏离了方向,或者发现他们的需求由于环境的变化而发生了变化时,自行开发的方法会给程序带来更大的不确定性,并且成本会显著增加。将身份管理委托给一个值得信赖的第三方可以确保您的成本在总体预算之内。

将资源集中在应用程序的核心功能上

应用程序想要取得成功,就得依赖于其对用户有价值的核心部分。一个现代的身份管理层可以让你的团队专注开发可以创收和获客的功能;并允许你的开发人员更快地转移到客户所需要的第二、第三或第四款应用程序。

减少违规风险

你的团队上次更新密码散列算法是什么时候?用户数据和身份信息是最常见的攻击目标。一个有效加密算法的平均寿命为18个月,但用户数据的安全性经常被忽略,并且被那些推动增长或收入的需求所取代。安全标识服务要求您的团队拥有知识和时间来解决基础设施的每一层的漏洞,从操作系统、数据库和传输层到应用程序堆栈和代码漏洞。因为开发团队的员工很少有这种级别的安全专家,所以在敏感数据已经被破坏之前,他们并不知道他们的用户安全已经失败。而且他们通常不知道安全方面的进展,比如算法被破坏,或者攻击向量是否被发现。精心选择的身份管理服务可以保护用户数据不受攻击,因为构建该服务的团队由专门研究高级安全性的专家组成,以保护身份和访问攻击。安全措施包括强大的加密、API 安全、高级防火墙保护、有力的数据管理和系统访问程序。这些相同的安全措施和基础设施使您的团队能够遵守特定地区和垂直的法规。

改善用户体验

帐户创建、登录、密码实施和会话管理等功能决定了用户对您的应用程序和公司的第一印象。当这些数字交互体验不够完美,或无法实现无缝交互时,公司就会失去用户的信任。身份管理方案允许用户进行跨域登录,改善了用户体验。从开箱即用、可定制和托管的自注册/登录屏幕,到无密码体验,单点登录和社交登录——这些用户体验功能几乎不需要定制代码就可以实现。

激励开发人员

尽管身份对于面向客户的应用程序的成功很重要,但开发人员通常不喜欢构建身份和安全基础设施。尽管这是一个高风险的领域,但开发人员通常认为用户管理是平平无奇的项目,他们更愿意致力于与核心产品差异化和尖端系统相关的功能。另一方面,开发人员认为使用现代 REST-JSON API 服务是有趣和可访问的。

提高可扩展性和可靠性

用户管理失败就像商店关门。如果无法登陆导致用户无法使用您的应用程序,他们对您公司印象就会大打折扣。消费水平是不可预测的,营销部门也不知道知道在什么时候促销会吸引大量用户。如果您决定自己进行用户身份管理,那么您必须对提供弹性足够大的身份管理系统有着充足的信心,并且该系统需要随着用户基数的增长而扩展。

您必须准备在数据中心、或与基础服务提供者协作时提供两倍或三倍的冗余,从而保证系统的可扩展性。您将需要提供无缝的升级和维护,以确保不间断的服务。公司经常发现,承担这些责任的成本非常昂贵,而外部的用户管理服务方案可以完全消除操作上的麻烦。

总结

开发团队越来越多地使用预构建工具,来减轻开发应用程序的负担。身份和访问管理给开发人员带来了广泛的挑战,而安全可信的身份管理方案可以解决这些问题。对于那些想要快速上市、降低成本、让开发团队专注于核心功能,并实现许多其他好处的各类公司来说,这都不失为一个很好的选择。虽然开发人员一直不愿意放弃部分自建的堆栈,但当一个解决方案被证明是可行的,比如用于通信的 Twilio 和用于支付的 Stripe,他们就会很乐意这使用外部的方案了。

在很多方面,身份应该像纹身一样被对待。自建身份管理的解决方案有可能限制您的公司未来规模的扩展。由于身份对应用程序堆栈非常重要,因此需要从一开始就选择正确的解决方案。

关于 Authing

Authing 身份云的目的是为现代时代而建立的,Authing 身份云使企业能够为其员工、合作伙伴、供应商和客户提供安全、无摩擦的数字体验。它是一个现代的、安全的身份层,可以作为您的移动或 web 应用程序的身份构建块,以加速您的数字项目的市场。

北京蒸汽记忆科技有限公司坐落于北京五道口,公司背靠清华北大,研发团队均来自于阿 里、字节跳动、滴滴等头部公司。我们的 Authing 是国内唯一同时拥有内、外部身份管理 IDaaS 的公司(CIAM + EIAM)。作为企业级的身份管理服务,Authing 不仅是软件商,更是政企的业务咨询伙伴,专注于客户成功。使用 Authing,组织 IT 管理员可以管理任何应 用程序、人员或设备的访问。无论是顾客、员工或是合作伙伴,无论是在云上、本地或是在移动设备上,客户们相信 Authing 在帮助他们的 IT 变得更加安全,提高人员生产力并保持合规性。

我们由华创、Plug and Play、YC 中国等中外顶级资本投资,上线之初,就被中国信息通信研究院评选为「国内身份管理与访问控制领域创新企业」,并被录入《2019 年网络安全 产业白皮书》。我们已经为中国石油、亚马逊云服务、埃森哲、德高集团、东南大学等国内外优秀企业打造了卓越的开发方式、高效的办公方式和安全的 IT 管理。