HOME/wso2/

1、身份管理解决方案模式

Article Outline
TOC
Collection Outline

[TOC]

1、身份管理解决方案模式

在身份管理解决方案方面,每个人都梦想管理身份并集中访问其生态系统中的所有应用程序和服务。 只有在没有任何处理身份或身份管理的应用程序或服务的绿色领域开始时,这个梦想才能成为现实。

通常情况下,您面临着对异构应用程序或不以同样方式进行身份管理的服务实施身份管理的挑战。 因此,由集中式身份管理系统组成的简单解决方案可能不起作用,生态系统中的所有其他应用程序和服务将连接到这些系统并依赖于身份管理。 但是,有一些完善的身份管理解决方案模式可以帮助您解决这个问题。

虽然我们通常倾向于将身份管理和访问控制作为两个单独的问题进行讨论,但它们是相辅相成的,并且相互补充。 没有另一个,没有任何有用的存在。 在这篇文章中,我们的重点是身份管理,而不是访问控制。 但是,为了讨论应用程序或服务的身份管理,我们还需要考虑如何对该应用程序或服务进行访问控制。

您的生态系统中的不同应用程序和服务可能具有不同的身份管理和访问控制功能。 并非所有应用程序和服务都支持相同的功能集。 因此,为了为整个生态系统选择最佳解决方案,最好单独评估生态系统中的每个应用程序和服务,并选择最佳解决方案。

2、身份管理的要素

身份管理主要涉及以下要素的管理:

  1. 身份和群组 - 数字标识符,声明和身份组
  2. 关系 - 亲子,兄弟姐妹,所有者,上下级,协会等
  3. 证书
  4. 权益

将身份管理外部化到不同的应用程序或服务,将使其更简单,简化和一致。 但是,并非所有应用程序和服务都能提供外部管理我们上面看到的元素的能力。 要外化的最常见元素是凭证。 也就是说,大多数应用程序和服务都提供将凭据管理或身份验证作为一个整体委托给外部应用程序或服务的功能。 这可能是由于标准协议,如LDAP , SAML2 Web SSO , OpenID Connect等。

在外部化凭据管理或身份验证时,如果要处理多个应用程序的多组凭据,则需要设计策略以选择一组凭据与之前的身份相关联并丢弃其余的凭据。

要外部化的第二个最常见的元素是身份和群体。 LDAP,SAML2 Web SSO和OpenID Connect等协议也可以帮助您完成此任务。 外化身份和组可在所有应用程序和服务中提供一致的身份配置文件。

要外部化的第三个最常见的要素是权利。 基于角色的访问控制 (RBAC), 基于属性的访问控制(ABAC) , 基于策略的访问控制 (PBAC)以及诸如XACML的授权框架允许权限被标准化和委派。 外部化权利提供集中的治理,审计和用户访问报告。 但是,可以完全外部化权利的流行云服务提供商还不是很多见。

要外部化的最不常见的元素是关系,主要是因为没有任何广泛接受的标准来表示应用程序和服务之间的关系。

以下是我们通常用于管理上述元素的身份管理解决方案模式。 您可能必须选择一个或多个混合来管理我们所看到的所有元素。

  1. 分享

  2. 同步

  3. 委托身份管理

  4. 联合身份管理

3、常见身份管理模式

2.1、分享

这是关于在应用程序和服务之间共享我们之前看到的身份元素。

虽然以下术语未完全标准化,但它们是一般说法。 管理身份和组的地方称为身份存储 ; 管理属性的地方称为属性存储 ; 管理凭据的地方称为凭证存储 ; 管理权利的地方称为权利存储 。 然而,在实践中,通常将两个或更多个上述存储的实现组合在一起。

根据应用程序和服务的功能,可以共享身份存储,属性存储,凭据存储和授权存储。 这是身份管理最简单的解决方案之一。

在服务提供商之间共享身份,凭证,属性和授权存储 图1:在服务提供商之间共享身份,凭证,属性和授权存储

采用此方法时要考虑的要点是:如果从多个应用程序写入共享存储,则根据缓存策略,更改可能需要一段时间才能复制到其他应用程序。但是,在所有情况下都可能无法共享,例如:

如果应用程序不支持相同类型或模式的数据存储 如果应用程序/服务位于云中,并且数据存储位于您的网络中 如果应用程序/服务位于您的网络之外,但数据存储位于您的网络中 如果外部用户正在访问您的内部应用程序,并且他们的数据存储位于其网络中

2.2、同步

这是关于同步我们之前在应用程序和服务之间看到的身份元素。 同步可以在两个级别进行:

  1. 数据存储级别的同步
  2. 应用程序级别的同步

数据存储级别的同步可以遵循多主复制或主从复制技术。 然而,这种方法具有供应商锁定的缺点以及各种应用和服务的数据存储技术的不兼容性问题。

应用程序级别的同步可以进一步分类为:

  1. 供应商特定技术,例如Microsoft Azure Active Directory Connect,Google Apps Directory Sync和Salesforce Identity Connect。
  2. 基于标准的供应服务和客户,如SCIM或SPML,也支持批量操作
  3. 可能支持或不支持批量操作的非标准方法

与数据存储级别同步一样,使用特定于供应商的工具将导致供应商锁定和不兼容。

遵循基于标准的供应服务和客户端(如SCIM和SPML)是一种相对更好的方法,可以避免这种情况。

Identity Provisioning Bridge - 在服务提供商之间同步身份,凭证和属性 图2:身份供应桥 - 在服务提供商之间同步身份,凭证和属性

有时,我们可能会选择使用特定于供应商的工具或基于标准的某些应用程序或服务。 在这些情况下,我们可能还必须考虑非标准配置方法。 非标准方法可能需要更多自定义的实现工作来设置。

  1. 实现自定义配置服务和客户端
  2. 为身份存储,凭据存储,属性存储或授权存储实现自定义连接器
  3. 实现自定义用户同步过程

设置用户同步过程

​ 图3:设置用户同步过程

2.3、委托身份管理

在当今的大多数组织中, 身份管理被委托给身份代理 ,该代理负责代表应用程序和其他服务提供商管理身份。 这消除了创建身份孤岛的问题以及在每个应用程序或服务中管理它们的开销。

使用身份代理进行委派身份验证

即时配置是委派身份管理的关键部分,如果应用程序或服务无法完全外部化管理其中一个元素,则用于在应用程序或服务中即时提供身份的帐户,凭据或权利。

2.4、联合身份管理

联合身份管理是可以在两个或更多信任域之间进行的安排,以允许这些域的用户使用相同的数字身份访问跨域的应用和服务。

入站身份联合允许外部用户使用其各自域中的现有身份访问您的内部应用程序。

出站身份联合允许内部用户使用域中的现有身份访问外部应用程序和服务。

4、访问控制

与身份管理相关的访问控制主要涉及以下方面:

  1. 标识:在用户提供的数字标识符与该用户的数字标识之间建立链接的过程。 这并不意味着用户已经被验证是他声称使用数字标识符的人
  2. 身份验证:使用某种形式的秘密凭证验证通过身份验证建立的链接的过程
  3. 授权:验证用户是否有权执行所请求的操作的过程

使用共享和同步方法,访问控制仍将保留在应用程序或服务的范围内,因为身份管理仍然属于应用程序或服务的范围。 但是,对于身份代理和身份联合,可能会发生以前从应用程序内部执行身份验证和身份验证的方式发生的变化,以及它们可能如何更改。

如果应用程序中仍为每个用户配置了标识符,则标识仍可保留在应用程序中。 否则,识别将完全委托给身份经纪人。

身份验证可以通过以下方法之一进行:

  1. 启动从应用程序或服务到身份代理的身份验证流程(基于代理)
  2. 验证请求中的断言(基于代理)

可以使用反向通道Web服务调用或基于前端通道重定向的协议(如SAML2 Web SSO或OpenID Connect)启动身份验证请求,具体取决于应用程序或服务和身份代理的功能。

授权可以通过以下一种或多种方法进行:

  1. 作为身份代理中的委派身份验证流的一部分
  2. 在应用程序或服务中使用身份验证断言中返回的标识及其属性作为身份验证响应的一部分
  3. 在使用授权断言的应用程序或服务中,作为身份验证响应的一部分返回
  4. 在应用程序或服务中,通过回调通道Web服务,例如Rest Profile for XACML 3.0

5、摘要

在这篇文章中,我们看了一些流行的身份管理解决方案模式,可以帮助您规划您的身份管理策略。 为了全面评估您的身份管理策略,您还需要了解访问控制如何适用于您的每个应用程序和服务。

WSO2 Identity Server是一个开源的IAM产品,以Apache 2.0许可证分发,拥有强大的身份管理和身份联合框架。 它使其能够支持您的IT环境中的各种身份管理要求,如本文所述。