IAM是什么以及要怎么设计?
一、IAM的定义
1. IAM是什么?
IAM就是身份与访问管理,身份和访问管理(IAM)是一个框架,用于为企业Web应用程序,API,企业用户生命周期管理和企业应用程序对外部用户/供应商的访问权限实施额外的安全层。
IAM可以控制基于用户或角色的企业应用程序的访问,并启用单点登录以实现与集成IAM的企业应用程序无缝地进行用户身份验证。它验证用户访问请求,并且可以授予或拒绝对整个企业范围内受保护的Web和应用程序资源的权限。
简而言之就是管理企业内所有系统应用的登录认证和权限的集成应用,这个应用范围可大可小。
2. IAM的作用是什么
在介绍IAM是什么的时候,其实也是比较清楚了,主要是访问认证以及权限控制集成的一个应用。通过一个应用控制企业内所有的系统和应用,也通过这个系统统一管理和认证。不但降低了系统风险还减少了重复开发的问题,甚至还解决了用户太多账号总是忘记账号的问题。
3. 主要组成
IAM是个提供认证访问和权限控制的应用,它通过提供访问认证、安全校验、权限判断等功能为其他应用提供服务。
那么它就会包含一些基础通用的功能,类似用户管理、角色权限控制、安全和审计日志等功能,让专业的人来做专业的事,当IAM把这些账号管理、用户管理、权限管理、审计管理的功能做了以后,那么业务系统在减少重复建设、节约成本的同时更加专注于自己核心功能。
4. 范围
IAM的范围主要还是要看需要用到什么程度,其实在搭建之初就要确定要用到什么程度,常见的就是将IAM控制范围限制于系统管理人员用户,即公司员工一类的用户;还有一种就是覆盖比较全面,不单单覆盖了公司员工还覆盖了各个系统的其他用户,类似会覆盖C端的用户、B端SAAS用户等。
二、IAM怎么设计
1. 从结构
IAM结构至上而下从租户、用户池、应用、用户、组织、权限、属性层层配置,通过各个模块对用户在认证、权限等方面进行控制。租户在saas产品上用的比较频繁,通常企业也会管理saas的租户,通过IAM来限制saas租户的访问认证,功能更多的IAM甚至会用来监控流量、付费情况等。
用户池简而言之就是某一类用户的池子,通过配置池子达到统一控制的目的。
应用指的是我们所操作的系统,WEB或者APP等。
有了以上这些元素,我们就可以控制所有系统上用户的访问认证,我们就可以在一个应用监控所有应用的情况和用户的情况,我们就可以在一个应用精细化的为用户分配权限,我们甚至可以在一个应用上管理我们的所有系统的审计日志。
当然,我们可以按照自身的需要去控制结构,比如我们不需要做SAAS化的产品,我们就可以拿掉租户哪个层级,如果我们不需要管理非内部用户时,我们甚至可以只保留一个用户池。
2. 功能
IAM最核心的功能是认证、账号管理、权限授权、审计功能。
认证功能:IAM最基本的功能就是认证,自建一套认证体系,各个系统能够通过IAM交互进行认证,实现账户认证与业务系统剥离,极大的提高了系统安全,减少了业务系统账号被利用的漏洞。同时,各业务系统减少了相同功能的开发成本。
账号管理:账号管理也是IAM不可或缺的一部分,可以通过账号管理来对个系统登录账号进行管控。首先是管控的范围,可以根据实际业务情况控制,从小打到大,从少到多。其次,对于账号也可以更精细化的管理,包含对账号的监控、账号用户的画像、账号基础信息的互通等。
权限授权:将各业务系统权限授权功能放在IAM上,也是一种降低风险的操作,收拢了权限过大的账号的配置入口,在一个平台即使监控账号情况,减少遗监控漏导致的安全问题也减少了重复开发的成本问题。高权限管理人员的菜单、功能、按钮权限全在一个管理工作台进行分配。
审计功能:记录账号、权限、认证等日志,能够快速回溯以及在出现问题的时候快速定位问题。
3. 样式交互
在样式交互上,基于IAM是一个给管理人员使用的操作系统,降低用户学习成本,提高工作效率是首要考虑的事情。
第二,需要考虑安全问题,IAM的功能大多都是权限极高的功能,在做一些高权限操作时需要着重考虑安全性,在这里可以适当的牺牲一点用户体验,比如可以加上双因子校验等。
三、设计IAM时容易踩的坑
1. 混淆租户和用户池的概念
租户和用户池的概念及其容易混淆,用户池指的是一类用户,租户更多指的是某一个组织;在设计时怎么区分他们两呢?这种要看具体情况,比如某个业务系统有接口调用的功能或者采购了一整套云系统(包含IAM),那么这个时候的租户就是使用户池的一种;如果单看一整套IAM+业务系统,那么应该是租户包含了用户池。具体情况要看具体业务类型。
2. 数据权限和功能权限耦合严重
很多系统在做功能权限的时候和功能权限是一起做的,比如能看到该功能就有该数据权限。如果业务单一,组织单一,那么这种方式是没有问题的,但是一旦多组织多业务形态,那么数据权限和功能权限还是要剥离开,我们这个时候可以将数据权限设置为一种属性,将某组织的数据权限属性分配给某个用户,就实现了数据权限隔离。
3. 交互考虑过少,使用困难
前面已经提了一小点,在做IAM系统的时候会更注重安全可用,而忽视了交互,导致用户使用困难,毕竟IAM包含的内容很多,稍有不注意就会导致权限或功能配置错误,这种小小的错误会被无限放大,所以交互也是需要考虑的,不然在降低工作效率的同时还容易出问题,这时候就得不偿失了。
四、最后
根据系统和需求适宜的取舍功能,IAM是一个功能比较多的系统。当然,他也不是按部就班,一定要大而全,还是应该结合实际业务情况和系统情况来设计。可以从用户范围、账号范围、功能范围来设计适配。IAM更多是一个较为后台的系统,它不像APP那样面向所有C端用户使用,也不像钉钉那样面向所有员工使用,它就是一个在背后默默为安全、为管理而存在的系统。
本文作者 @L.Hwang
版权声明
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处。如若内容有涉嫌抄袭侵权/违法违规/事实不符,请点击 举报 进行投诉反馈!