第二章 身份的生命周期

为了使后面章节中我们在描述或者讨论时没有理解上的偏差,在开始之前,我们需要定义什么是身份,在身份管理的生命周期当中,有哪些事件。本章节会对身份系统设计中使用的术语进行规范的定义。

术语

身份、标识符和帐户的概念密切相关,但又有细微的区别。

标识符 Identifier

术语“标识符”来指单个属性,其目的是在特定上下文中唯一地标识一个人或实体。电子邮件地址、身份证号码、护照号码,在一个公司里的员工号码都是用于人的标识符的示例。非人类实体,例如代理、机器程序或设备,可以通过为期分配一串唯一的字符串来进行标识。标识符允许我们指代特定的人或非人类实体,是对于身份管理是必不可少的最基础元素。

身份 Identity

术语“身份”被定义为在特定上下文中与特定个人或非人类实体相关联的一组属性集合。身份包括一个或多个标识符,并且可以包含与人或非人实体相关联的其他属性。如,人的身份可能包括姓名、年龄、地址、电话号码、籍贯和职务等等属性。非人类身份可能包括所有者、IP地址、实体类型、实体标识等属性。构成身份的属性可用于认证和授权以及向应用程序传递关于身份的信息。

一个人类的实体可能有多个身份,在不同的社会环境中扮演角色不同,身份也就不同。比如父母、孩子、工程师或教师。同样的,一个人在数字世界里,也会拥有多个不同的身份。比如,如果在一个企业里,一个人的身份会包含:标识属性(类似工号)、所在的部门、所在办公位置,岗位的级别(经理)等等。一个人除了工作的身份以外,也可能有各种各样的其他个人身份。比如,在一个协会里担任志愿者、理事等等身份。在真实世界的世界里,一个人的身份至少是和其当下所处的环境、或者上下文的语境相关。那么同样的,在数字世界里,一个实体的身份,由其所在的特定上下文(例如应用程序)中的用户实体或者非人类实体的至少一个标识符和一组属性组成。

账户 Account

术语“帐户”定义为给特定应用程序中用于在该上下文中执行操作的本地构造。身份标识与特定上下文中的帐户相关联。身份的属性可以包含在应用程序的账户对象中,也可以单独存储并从账户对象引用。除了与之相关联的标识之外,帐户还可以有自己的标识。将帐户标识符与该帐户相关联的标识分开有助于提供一定程度的分离。帐户标识符可以在其他应用程序记录中使用,以便于用户更改与其帐户关联的用户名或其他标识符。

接下来的章节,“身份”一词,特定是指一个人或一个实体的属性的集合。“账户”一词,指应用程序或服务中的一个构造,该应用程序或服务通过标识符来与身份相关联。

注意

一个账户可以有多个与其相关联的身份,一个人登录使用一个帐户,该帐户具有与之相关联的各种身份属性,比如一个账号登录后,既可以是学生、也有可能是教师,选择不同的身份,意味着他们能够在系统中既可以执行学生选课的操作,也可以执行教师教学的操作。

身份管理(IAM)系统是一组服务,支持创建、修改和删除身份和与其关联的帐户,以及访问资源所需的身份验证和授权。身份管理系统用于保护在线资源免受未经授权的访问,是应用安全模型的重要组成部分。

身份生命周期里的事件

有了基本的定义,我们就可以继续讨论身份生命周期中的主要事件,如图 2-1所示. 本章我们将概述下在身份的生命周期当中会发生的事件,然后在后续章节中更深入地探讨每一个事件。事实上,基于事件去管理身份也是现代化的身份管理系统的主要思想。

2-1 IdentityLifecycle.jpg

供给(Provision)

首先,身份周期的第一步是需要完成在身份的构造,即创建一个账户,我们将其称为供给(Provision)。这个词在中文里很难去翻译,可以称为注册、预配置或者供给。本文我们采用供给这一术语,为了和传统的我们所理解的注册区分开。

我们谈到的注册,通常是指用户,通过一个表单形式的注册页面,填写身份的属性信息,来生成一个账户。身份的供给实际上包含了一个更广泛的创建账户的范畴,身份供给可以通过让用户注册、从已有的系统中导入标识信息或利用已有系统的外部标识服务来完成,管理人员通过手工录入的方式来创建。无论使用何种机制,身份供给的目标都是建立一个具有关联身份属性数据的帐户。这涉及到获取或为用户实体分配身份的唯一标识符(如果需要进一步的分离,可以选择性的创建帐户的唯一标识符,这一标识符不同于身份的唯一标识符)、根据账户标识符创建帐户以及将身份相关的属性与该帐户相关联。

例如,一个名为Alice的用户希望使用一些网上银行服务。爱丽丝可以通过填写账户登记表在银行建立一个个人网上银行账户。银行在为Alice创建账户时,会要求她提供身份相关的信息,包括姓名、密码、身份证号、家庭住址、(经过验证的)电话号码、电子邮件地址。

Alice在这个银行可以为不同的业务创建多个在线账户,如理财的账户、股票资金托管的账户等等。除此之外,Alice如果是个小企业主,Alice还可以使用自己公司的信息,如企业营业执照号码、税号、公司地址等信息,结合个人的身份信息,在银行创建自己企业的企业账户。

身份映射(Mapping)

身份映射(Mapping)涉及用户供给时进行用户属性的交换,当创建账户时,需要从外部已有的身份源去获取用户的属性时,需要建立外部身份的属性与本次创建的身份的属性的对应关系。例如,如果使用外部身份的手机号码作为应用程序的登录名,则需要建立外部身份的手机号码与登录名的映射,以便于程序清楚下一次使用外部数据的时候,从哪一个对应的属性去提取信息。身份映射将用户不同系统间的身份属性进行关联,使用户信息可以无障碍的在系统间流动。

认证(Authentication)

要访问不公开的在线内容,用户需要进行身份验证。用户提供一个标识符来表示他们希望使用的帐户,并输入该账户的标识符(登录名)和对应该帐户的凭证。这些信息将会以前在 帐户供给阶段设置的或注册的凭据进行比对验证。凭证可能是所知、所持或所有,即用户知道的东西、用户持有的东西和/或用户具有的特征。密码是用户知道的东西,客户注册过的设备(如手机)生成的数字代码是用户拥有的某些东西,像指纹这样的生物特征信息是用户具有的特征。使用一个或多个凭据进行身份验证,并根据以前注册的信息进行验证,这在某种程度上证明了用户有权使用帐户访问受保护的资源。

Alice在银行建立了在线身份和账户后,就可以访问银行的网银服务。要访问受保护的资源,例如她的存款帐户余额,她需要通过输入注册步骤中建立的用户名和密码进行身份验证。用户名表示她希望使用的帐户,知道密码表明她有权使用该帐户。

多因素认证(MFA)

多因素身份验证(MFA)涉及使用更强的身份验证形式对用户进行身份验证。多因素的认证是相对于用户名和口令的认证方式而言,用户名加口令的身份验证方式,被认为是相对较弱的,因为它们只涉及一个因素,即密码,而密码可以通过暴力破解、钓鱼等等方式被其他人获取和利用。更强的身份验证形式涉及其他的不容易被第三方恶意利用者获取,例如用户所持有的东西或用户实体的自有属性。同时需要多个因素的身份验证称为多因素身份验证。多因素身份验证通常涉及一个密码以验证对于用户设备(例如移动电话)的拥有,或者可能涉及生物特征因素(例如指纹或声纹)。

逐步身份验证是在考虑安全的前提下,同时兼顾用户的体验,在必要时才通过使用更强大的身份验证形式进行身份验证,将现有的身份验证会话提升到更高的保证级别的行为。例如,用户最初可能使用用户名和密码登录以建立身份验证会话。稍后,在访问具有更高身份验证要求的更敏感的功能或应用程序时,将提示用户进行增强的身份认证,认证的级别取决于用户访问的业务或数据的敏感程度。

Alice可能首先使用用户名和密码登录,并能够在银行网站上查看她的帐户余额。如果Alice试图从账户中转出资金,则要求输入更强大的身份验证因素,才能成功执行该操作,比如,通过输入在银行登记过的手机收到的一次性动态码,或者进行动态的人脸识别,以确保请求转账业务的用户是本次操作帐户的所有者。

身份认证状态(State)

身份认证状态(State),通常来讲,一个身份系统,基础的应该涉及到集中基础的状态,包括用户不存在、用户名或密码错误、认证成功等三种状态。但是如果考虑更安全的因素,认证的状态则要复杂的多,最基础的是用户的么密码是否过期,密码是否符合复杂度的要求,如果使用了一个简单的或者临时密码,则要求用户设置一个新的符合复杂性要求的密码。如果使用了MFA的多因素认证,则会涉及到更多的状态,如MFA是否登记,MFA在当前的认证流程中是否必须,MFA的挑战是否通过。只有通过了所有的安全的因素状态,系统才能给予认证成功,创建该用户的登录成功的会话。

在用户忘记密码/重置密码流程中,需要考虑用户需要用到哪些因素去验证用户的身份,会涉及到验证因素是否通过的状态。在用户注册的过程中,如果要求用户的身份证明,比如需要登记用户的手机号,则会有手机短信验证码挑战的状态,只有通过了该状态的挑战,用户才能注册成功。

会话(Session)

一旦用户通过身份验证,他们将在应用程序中执行各种操作。一些应用程序,通常是传统的Web应用程序和敏感的业务,一般只会允许用户在有限的时间内保持活动状态,超过设定的活跃时间,用户将需要再次进行身份验证。这一约束将通过管理用户会话来实现。会话除了跟踪用户标识符外,还会跟踪诸如用户是否已经过身份验证、如果已经过身份验证,对于一些安全性要求比较高的系统,还会跟踪用户获得本次会话使用的身份验证机制、验证机制强度级别,身份验证发生的时间、验证发生的地点等等信息。这使应用程序能够知道何时应该提示用户重新进行身份验证。

从用户进入活动状态的时间到要求用户重新验证之间的长度称为会话超时时间。会话超时设置通常会因应用程序中数据的敏感度而异。会话限制有助于防止用户在未注销的情况下离开屏幕,以及在创建会话后身份信息可能已经发生变化。强制用户定期重新验证的会话限制提供了一个检查,以确保在屏幕前的使用者仍然是合法用户。它还可以触发更新用户的身份信息和帐户状态。

Alice的零售银行应用程序提供对其银行账户的访问,可能只允许相对较短的会话(以分钟为单位)。银行提供的另一种不太敏感的服务,如投资时事通讯,可能允许更长的会话时间,以小时或天为单位。每次Alice对任何一个应用程序发出请求时,应用程序都需要检查她最近是否对请求的事务进行了足够的身份验证。如果是这样,她可以继续而不需要再次验证。如果距离上次身份验证的时间超出了会话限制,她则将不得不再次进行身份验证。

单点登录(SSO)

只需要通过一次认证,就可以访问所有授权的应用系统。单点登录(Single sign-on,SSO)是现代IT必备的一项基础功能,让用户和IT管理人员更加轻松应对工作需求。

具体的流程是,在用户访问一个应用时,输入一次访问的凭据,然后访问具有相同身份验证要求的其他受保护资源或应用时,则无需再重新输入凭据。

在这种情况下,这一组应用程序将将身份认证都委托了给统一的认证服务,由统一的认证服务统一管理SSO单点登录的会话。

当Alice访问她的银行网站时,单点登录就可以让其方便地访问多个银行服务。比如,Alice在登录了网上银行的服务去查询账户余额之后,她在进行其他的一些被授权业务的访问,如理财资讯、积分管理等应用/服务时,她无需再次登录即可访问。

注销(logout)

注销机制,是当用户在应用中完成需要处理的工作以后,应用程序提供的让用户终止当前会话一个方式。注销操作应该终止用户的应用程序会话,如果它们返回应用程序,则必须在被授予访问权限之前再次进行身份验证。如果实施了单点登录,那么可能有多个会话要终止,当用户从一个应用程序注销时,应该终止哪些会话是一个取决于整个系统的设计。

注销的行为与会话超时略有不同。注销时,用户通过显式的请求终止其会话。当会话超时,为了保持用户的良好体验,应用程序可以选择将会话保持在挂起状态,在用户再次进行身份验证时重构会话。

在Alice登录网上银行网站查看银行余额和查看理财资讯的场景中,她将在网上银行、理财应用程序,以及网上银行的SSO服务中存在会话。如果她访问期间有其他事情,空闲几分钟没有操作,她在网上银行的会话可能会超时。当她打完电话后,她必须重新验证才能继续。当她查看完自己的账户余额后,她会点击“注销”按钮来终止所有打开的会话。

授权(Authorization)

我们使用术语“授权”来授予权限,以管理允许帐户执行的操作。即创建帐户后,以授权的形式指定特定的帐户或某一类账户可以执行的操作。

例如,当Alice创建银行账户时,银行授权她的账户访问应用程序以查看存款账户,而且仅限于查看自己的存款账户而不能查看其他人的账户存款。如果她在银行没有股票资金托管账户,她的账户将无权进行股票交易资金的操作。Alice的授权表明她的帐户已被授予权限。对帐户的授权通常在创建帐户后完成,并且可能会随着时间的推移而更新。

访问策略执行(Policy Enforcement)

一旦用户通过身份验证并与该帐户相关联,就必须严格的执行访问策略,以确保用户能够操作且仅限于之前被授予的权限。我们使用术语“访问策略执行”来匹配执行授权指定的访问策略。换句话说,授权指定允许用户或实体执行的操作,访问策略执行检查用户请求的操作是否符合授权使用的权限的约定。

当Alice登录到银行的网上银行应用程序并提出请求时,应用程序将检查她是否有权执行其提出请求。如果她试图访问非授权的业务,如没有开通理财账户,购买理财产品的请求将被拒绝,因为她无权访问这些服务。在这种情况下,应用程序可能会显示一条消息,指示不允许她查看该服务,其中可能包含有关如何申请开通该服务的信息。

账户管理和恢复(Account Management)

在身份的整个生命周期中,可能需要更改用户身份资料的各种属性。例如,用户可能需要更新其电子邮件地址或电话号码。在某些情况下,用户可能需要更新其姓名,或者定期更改其密码或认证过程中使用的移动设备。在公司中,可能会更新用户身份资料以反映新的职位、地址或权限(如角色)。帐户管理由允许用户和管理员查看和更新与身份关联的用户资料的属性的功能或流程组成。

用户还可能忘记密码或丢失身份验证过程中所需的设备。如果发生这种情况,用户需要建立新的凭据。这要求在允许用户设置新凭据之前,使用其他方法来确定用户对帐户的所有权。帐户恢复是一种通过某种辅助手段验证用户是帐户合法所有者,然后允许用户建立新凭据的机制。

如果Alice在旅行中忘记了她的密码,她需要一种重置密码的方法。可以使用以前登记过的备用身份验证机制来设置新的凭证,如发送帐户恢复链接到已登记电子邮件,使她能够重置凭据。同样,如果Alice更换手机号码,她需要到银行更新她在银行的个人资料,以反映她的新号码。在身份的整个生命周期中,可能会发生各种更改,需要更新身份资料的属性和/或重新建立新凭据。

销户(Deprovision)

可能有一天需要取消账户。在这种情况下,必须取消设置用户的帐户和关联的身份信息,以确保没有人再可以使用它。取消设置的形式可以是完全删除帐户和相关的身份信息,或者禁用帐户以保留信息用于审计目的。如果Alice在某个时候决定终止与银行的关系,她会要求关闭她的账户。银行将关闭她的储蓄账户,终止她的网上银行账户,这样她就不能再登录了。然而,为了确保该账户的所有行为和操作都是合规的,银行需要保留足够的历史信息,以满足后续的审计需求。

本章关键点回顾

本章介绍了身份、帐户和相关标识的概念,以及它们存在期间发生的最典型事件,从认证、授权、会话和账户管理四个维度,分别进行了分类和每个类别下涉及到哪些事件,进行了详细的介绍。在接下来的章节中,我们将从身份管理的历史开始,逐步深入了解每个事件的更多细节。

沪ICP备2023020061号 上海绿软科技有限公司版权所有