文/魏伟(北京新机场建设指挥部)
信息化发展到一定程度以后,同一个机构中经常多个应用系统并存,每个应用系统通常都有单独的用户身份管理功能,单独管理用户身份和账号信息、密码信息并对用户行为进行审计。很多应用系统常采用最简单的用户名+密码的方式,对于用户来说,需要记忆多个系统的用户名和密码并按照不同系统的要求周期性修改多个密码,所以,很多用户为了使用方便,常将各个应用系统的密码均设置为相同的密码,而这又造成了潜在安全隐患,一旦密码丢失后,所有相关系统都面临安全威胁。另一方面,对于企业或组织来说,分别管理每个应用系统的身份信息会花费很多的成本和管理人员的精力,当用户忘记或丢失密码之后进行重置或找回又进一步增加了管理和使用的复杂度。总之,这种各个应用系统独自维护用户身份数据的模式带来了安全隐患、用户体验不佳且不满足相关政策和法规的审计要求。
由于传统烟囱式的各应用系统独立管理用户身份和账号的显著缺点,有必要建设一套统一的、权威的用户身份管理系统,通常情况下,每个应用系统不再单独维护管理用户身份和账号信息,将用户身份管理功能交由统一的身份管理平台,通过实施统一规划、集中实施,实现以下业务场景:
1)实现自然人身份信息的统一和集中创建,维护自然人的基本信息;
2)基于自然人创建账号信息,实现自然人与账号的关联;
3)新建自然人的账号通过预定义的规则同步不同的应用系统;
4)实现统一的密码管理策略,实现自动化、集中化、周期化修改系统账号口令;
5)实现集中创建、变更、删除用户的账号;
6)实现集中的账号全生命周期管理,对账号从创建到回收各阶段状态进行统一管理,包括对账号创建、分配、变更(如:属性更改,口令重设等)、账号使用情况的审计等;
7)对于已经单独实现身份和账号管理的应用系统,实现对其系统中已有账号的收集和映射管理,将各应用系统的账号数据格式统一,存放统一。原有各应用系统中的账号可能存放在系统自身的关系数据库中,也可能存放在独立的第三方基于LDAP协议的数据库中,要求同时支持这两种存储方式,并且,通过简单的数据库映射配置即可实现。
通过构建统一的身份管理平台,使得多应用系统的安全性、用户使用便利性和系统管理效率得以提升。
3.1.1 账号管理原则
1)集中管理
用户管理采用集中的管理方式,用户账号分为主账号和从账号,从账号的管理范围是管理用户能否有权限访问该应用系统(粗粒度授权),用户在应用系统中的角色由应用系统自身进行管理。
账号管理包括对账号的增加、修改、删除、迁移,禁用/启用且包含应用系统的账号。
管理员可以根据用户的来源、用户角色、用户名等主要属性来进行分类浏览和查询用户账户。
HR系统通常作为统一身份管理平台的权威身份来源,用户通讯录信息应与HR同步,同时,这些属性会自动同步到应用系统中,管理员也可以手工修改这些信息。
管理员可以单独或批量修改用户密码,支持用户批量录入功能,支持组织机构查询功能,能直观、动态地浏览组织机构下所有人员信息。
2)多点授权
当统一身份管理平台通过数据同步的功能将用户从账号信息同步到应用系统后,由应用系统完成用户在应用系统中的权限管理(细粒度授权)。
管理员在授权用户访问或无法访问某一系统时,应向该系统管理员发送邮件通知和任务,让该系统管理员为该用户分配、更改或禁用系统内角色和权限。
由于采用集中的管控方式,当用户离职时,可实现“一点清权”,从而保证了系统的安全性。
在实现用户集中管理时,统一身份管理系统应具有丰富的协议适配库,与不同应用系统对接时可从库中直接选择合适的接口程序及数据标准。
3.1.2 账号生命周期管理
账号生命周期管理是指对账号从创建到回收各阶段的集中管理。包括属性修改、口令修改与初始化,账号行为及使用状况审计等。
集中的的用户账号生命周期管理流程大致如下:
1)自然人创建:创建自然人并输入自然人身份信息,包括姓名、性别、单位、年龄等系统中预先定义的属性字段内容。
2)主账号创建:创建与自然人一一对应的主账号。在单点登录场景下,主账号用于登录统一的门户;在非单点登录场景下,主账号仅是自然人身份的标识。
3)角色分配:根据自然人的属性,为自然人及其主账号分配不同的角色,如:OA用户、互联网用户、管理员等各种角色,1个人可以有不同的角色属性。
4)创建从账号:根据用户的岗位及属性特点,在统一身份管理系统中为其创建从账号,从账号与应用系统直接存在映射关系,如:某主账号下的具有A从账号,意味着用户可以访问A应用系统,从账号通过预先定义的规则自动下发或同步到相应的应用系统中。
5)配置权限:为用户主账号及其从账号分配访问相应应用系统的权限,该权限只是粗颗粒度的权限配置,仅解决能不能访问的问题,不做具体行为权限控制。
统一身份管理平台实施以后,用户身份账号口令的安全性更是非常重要。密码策略应该包括以下内容:最小和最大口令长度、数字字母组合设置、不能使用的口令(如特定的词、与账号相关的变种)、简单口令检查、口令更改时间间隔限制、同一口令的使用限制、导致账号被锁定的尝试失败登录次数、口令重设问题等,还应支持对于不同级别的用户设置不同的口令管理策略。
此外,统一身份管理平台还应支持与第三方强制认证系统集成实现对用户账号口令安全性的强化,如和CA认证中心系统、动态口令系统、短信验证系统等集成。
对于应用系统账号的集中管理,需要分情况来考虑。一种为主账号与资源账号不同步,即不需要通过统一身份管理平台与各应用系统之间的账号进行同步;另一种是主账号需要与资源账号进行同步,也就是要通过统一身份管理平台与各应用系统之间的账号进行同步。这样才能实现在一个统一身份管理平台就可实现对用户的集中管理,在这一个平台上加一个用户账号信息后,在其他系统中就会自动出现,并可应用。而不需要再到每一个系统中单独加账号等其他用户信息。
A.用户信息不需同步
有些应用系统需要将身份信息和粗颗粒度的权限管理交由统一身份管理系统实现,本身不再保留账号管理功能,由统一身份管理系统实现对用户及其账号的统一管理和访问控制与权限管理。当用户登录到应用时,通过应用系统与统一身份管理系统之间的数据交互结果和获取的用户信息和角色信息等决定用户在应用系统的操作权限。
B.用户信息同步
有些应用系统还保留有独立的身份和账号管理体系,则统一身份管理系统对其账号的集中管理主要表现为账号同步:即保持应用系统用户身份和账号数据库与统一身份管理系统之间数据的一致性和更新的同步性。
(1)账号和密码同步机制
如果应用系统需要保留自身的账号管理体系,则系统必须实现统一与统一身份管理系统相应账号信息的同步。通常安全设计比较完善的应用系统的账号数据中的密码信息为加密存储,或存储的是加密后的摘要信息,则统一身份管理系统通常无法从应用系统数据库中抽取密码信息。在这种方式下,只能实现单向的数据同步,统一账号管理系统根据密码策略,自动更改用户在应用系统中的密码,而不从应用系统的数据库中抽取密码(如果应用系统开放其密码加密方法,也可以抽取其密码信息),或提供相关的密码写入接口程序,供统一账号管理系统调用实现从上至下的密码管理。
(2)与关系型数据库同步账号及密码
账号同步模块和关系型数据库同步数据是通过JDBC/ODBC资源适配器完成的,并在资源方无需代理,通过配置“账号同步引擎”,完成数据同步。其实质是通过读写操作被同步对象的数据存储设备来实现的。因此,这种方式需要提供给账号同步模块各应用系统的数据存储设备的具有管理权限的账号和密码。如果不能提供数据库管理权限的账号和密码,也就是通过“账号同步引擎”不能实现用户账号同步,或是不能将数据库读写权限交给平台,则可通过编程接口与关系型数据库同步。
(3)与LDAP或AD进行同步
如果有其他的应用系统底层数据库也是采用的LDAP,同步引擎是通过JNDI资源适配器完成的,在资源方无需代理。直接通过配置就将用户数据与其他LDAP目录服务器进行同步。
基于上述数据同步机制,可以进行数据同步,实现在平台上加入1个用户就可以直接同步。这样,可以通过配置账号同步引擎,将LDAP中的用户账号和密码都同步到平台数据库中,而不用担心加密算法不知道的情况。也可以提供增加用户和修改用户密码等应用程序接口,通过调用接口实现平台上的用户信息与用户信息一致。
统一身份管理系统应具有可设置的管理功能分配给指定的机构或用户,让他们可以管理自己部门或单位内部或应用系统的特定用户,提供类似租户自服务的管理模式。
系统也需要提供用户自管理的功能,根据预先定义的策略,用户可以在无管理员协助的状况下自助完成部分工作,包括用户主账号和二级账号注册、密码初始化和个人信息管理等功能。
统一身份管理系统除了需要有集中的身份管理数据库外,还应具有基于LDAP标准协议的目录服务数据库,以为企业提供基于标准协议的统一的身份认证、管理和存储服务。
统一身份管理系统提供集中身份管理和统一认证的标准接口,提供给应用系统调用标准的接口程序实现系统集成,用户在统一身份管理系统上认证通过后,就可以被相应的应用系统认可(应用系统与统一身份管理系统之间需要有明确的认证令牌交互和校验机制,同时,应确保校验过程数据的完整性、可用性和保密性),用户访问应用系统时不需重复进行认证。
统一身份管理模式是管理和技术平衡的结果,理论上,没有集中的身份管理并不影响企业应用系统的使用,但随着管理精细度等的要求越来越高,各自为政的管理模式很难适应企业的发展和效率提升、安全可靠的要求,而且从本质上来说,统一身份管理的服务对象主要还是使用系统的人,人由于惰性使然,使得管理手段很难长时间高效执行,必须借用技术手段实现管理和安全、效率等的综合平衡提升。统一身份管理平台可以很好地实现管理、体验、安全等多个维度效果的平衡,业内很多专业的厂商除了实现统一身份管理外,还整合实现了统一认证、单点登录等的效果,毕竟这三者是个有机的整体。本文主要探讨的内容是统一身份管理,在实际业务环境中,统一身份管理、统一认证和单点登录之间的关系会更复杂,需要在不同的场景使用不同的实现方式和不同的技术手段。