您是软件工程的领导者,并且在工作中表现出色。您知道,软件开发的最佳途径在于弄清从头开始实现设计中的哪些组件,以及哪些已经由专家实现并且可以重复使用。
您还知道这些不是您只能一次决定的决定–您必须根据环境变化和新产品的需求进行重新评估。
身份验证是您一直处理的那些组件之一。身份验证是任何软件产品的必要组成部分,但是实现身份验证的方式不一定总是相同的。需要慎重考虑,因为您决定外包的决定不仅会影响开发速度,而且会影响长期产品维护–您不想因为没有必要重新实施整个身份验证系统而减慢产品上市时间,而是也不想使用会造成问题的身份验证系统。
这是最明显的考虑。根据您所需的功能,在内部实施身份验证可能需要数月的时间,而采用外包解决方案则可能需要不到一天的时间。
您可以说“但是如果我们只需要一个简单的实现呢?数据库中加入了一些盐渍的哈希,我们很乐意!”这是完全正确的一点,如果您不希望使用复杂的身份验证功能,那么最好的选择就是快速进行内部实施并继续前进。
但是,我一次又一次地看到产品开发人员低估了随着用户群的增长所需的功能的复杂性。大多数时候,开发组织便会陷入沉没的成本谬误中,并在扩大内部解决方案上加倍努力,即使放弃自制工作并用外包解决方案代替它可能更有效。这将导致巨大的可维护性问题,我将在下面进一步讨论。
为最坏的情况做计划可以防止您的公司或部门的整体财务损失。如果发生安全漏洞,并且内部身份验证系统泄漏了PII(个人身份信息),这不仅会导致公司声誉受损,而且还会受到重大的经济处罚(更不用说掩盖了潜在的入狱时间)违反)。
如果您将身份验证系统外包,则可以限制您的责任并保护您的声誉-如果身份验证提供者方面存在违规行为,则该违规行为可能会扩展到您的公司之外。许多公司使用的外包身份验证提供程序出现违规行为将是一个大新闻,与您自己实施较差的身份验证系统相比,客户更有可能原谅您在选择身份验证提供程序时犯了错误。
一个不重要的附录是,我认为您的内部系统比安全专家的外包提供商更有可能遭受破坏。我没有研究来支持这种说法,但是我从未见过主要的身份验证提供者受到损害,而且我肯定已经看到公司由于自己的内部身份验证实现而遭受破坏–本文讨论了收集到的2100万纯文本密码的汇编避免各种身份验证系统未对密码进行哈希处理和破解的破坏。
正确存储密码的门槛极低,但是管理自己的身份验证的公司始终都在错误地进行密码输入。
虽然中断比破坏少,但如果您的SLA保证了正常运行时间,则中断仍会导致声誉受损和责任问题。与违规类似,如果您将身份验证系统外包,则任何身份验证中断都可能会超出您的公司范围。
例如,当微软的Azure Active Directory(AAD)在去年下半年下午关闭时,跨Internet的应用程序登录就停止了。
当您的竞争对手的授权系统同时关闭时,没人会为此责怪您,但是当您是唯一一家出现问题的公司时,您的声誉就会受到损害。无论您使用的是什么身份验证系统(FusionAuth,Cognito,AAD等),都可以肯定的是,一旦出现故障,您将不会孤单。
您的工程师可以设计出准确的系统来满足您的需求,并且如果需求随时间变化,您将可以不受限制地添加非常具体的功能。
如果由负责构建系统的工程师来维护系统,那么他们将拥有所需的上下文来预测添加功能时的问题。
复杂的新功能可能需要花费大量时间才能构建。外包的身份验证系统可能已经构建了这些功能(诸如多因素身份验证,用户管理界面,分析和审核日志以及暴力破解检测等功能)。
使用内部解决方案,您将不得不花费时间来监视新的安全威胁,并在快速发展的威胁环境中为系统打补丁。
您将无法获得不断改进身份验证系统的专业团队的好处。这实际上比看起来要大得多,因为如果您将auth外包,那么其他公司也将代表您提交问题报告和功能请求,因此您也将获得这些额外的关注。
对于合并或收购,内部解决方案在合并不同的用户数据库并管理重复或不完整数据之类的事情时可能会很糟糕。这样的企业身份统一工作可以在内部身份验证系统上创建。另一方面,FusionAuth支持使用租户对不同的用户群进行建模。
在建立内部身份验证系统时,表面上所有的成本(工程师薪水)都是沉没的。但是,如果内部构建系统延迟了上市时间或阻止了其他功能的创建,则该构建可能会花费您大量的实际收入。内部解决方案还将带来持续的维护成本。
上市时间变慢导致收入损失加上实施内部解决方案的工程成本加上内部解决方案的持续维护成本PLUS数据泄露风险增加PLUS停机风险增加PLUS合并或收购期间风险增加
在评估不同的身份验证提供程序时,您还需要考虑外包提供程序是否根据用户数量按固定比例收费或费用是否固定。例如,随着您的应用程序获得更多用户,AWS Cognito将继续收取更多费用。相比之下,FusionAuth的选项可以为无限的用户收取单一费用。如果您的应用很小,并且您不希望它增长太多,那么滑动比例可能会更好。如果您不希望在获得更多用户时产生巨额的意外费用,那么考虑到固定费用的提供商可能会更具吸引力。
作为最后的考虑,您可能希望评估您的工程师是否有能力实施安全的内部身份验证系统,而无需进行大量的教育投资。这是许多领导人不屑一顾的,因为他们对人民的才智和技能深信不疑。
但是,知识和情报并不相同,仅仅是因为您的工程师有能力成为认证专家,并不意味着您希望他们花时间去做。
作为工程负责人,您有责任确保您的工程师将时间花在为公司的长期成功做出最佳贡献的工作上。身份验证是必不可少的组件,但它真的可以与您的应用程序区分开吗?
只有您才能为您的公司做出最佳决策,但是我希望本文能帮助您考虑外包auth所涉及的一些注意事项。