Forefront Identity Manager 2010高效身份管理 (05): Forefront Identity Manager 2010 架构介绍(二)

本系列文章由ghjconan创作,转载自ITECN。尊重原创,分享精彩。

 

首先请原谅我将这么重要的内容拆成两篇,考虑到大家平时读长文档读的太多了,因此将内容做一些细分,方便各位理解和吸收。

在上篇博文中,主要分析了FIM 2010的作用,高层次架构以及同步服务所连接的两端,外部系统及FIM 2010本身。这篇博文的焦点将关注同步服务本身,也就是身份数据是如何进入Metaverse,以及向其他外部系统提供身份数据。同时在这个过程中包含很多FIM 2010的专业术语,这些专业术语是不能混淆的,请各位在阅读时候多注意。

首先假设以下问题情境。Contoso公司最近希望通过FIM 2010实现活动目录用户账户的自动创建。用户数据来自人力资源部门使用的基于Microsoft SQL 2008的数据库。

毫无疑问,人力资源部门使用的数据库相对于FIM 2010来说是外部系统,这里为了简化描述使用ES1来代替。如果回溯下上次的课程内容,大家可能已经想到了需要利用管理代理(MA)建立起连接。这里具体建立过程会在之后的博文中进行详细描述。假设管理代理创建正确,下一步就要创建管理代理上的运行配置信息(Run Profile)。配置界面如下:

clip_image001

可以注意到,FIM 2010中的运行配置种类粗分为3种。导入(Import),同步(Synchronization),导出(Export)。细分的话为五种,即导入和同步分别增加增量模式。而截图中的剩余几种类型都是导入和同步的组合。需要根据实际环境来决定。

而将外部数据源中的的身份信息引入到连接器空间(Connector Space,CS)的过程称为导入(Import)。在连接器空间中,身份数据集结完毕之后,便经由入站同步(Inbound Synchronization)进入Metaverse。Metaverse中的对象创建都是由连接器空间中的对象触发的,这个过程被称为投射(Projection)。在入站同步过程中,投射只是其中会发生的一种情况,通过前文的叙述,各位应该意识到FIM 2010可以连接到多个外部系统,因此当Metaverse中已存在相关的身份对象时,FIM 2010允许管理员通过一个唯一属性(标识符,比如员工号)来将数据结合(Join)起来。因此大家可以注意到入站同步是以连接器空间为中心的。

综上所示,从一个外部系统中将用户身份信息引入到Metaverse中的过程如下图所示:

clip_image002

然而出站同步过程并不像入站同步那么简单,出站同步牵涉到的组件更多,接下来就来分析下出站同步。出站同步的起始点是Metaverse中的对象,当用户身份信息发生变更后,同步服务需要确认用户身份信息的变更需要同步到哪些连接器空间。这里需要引入一种机制将出站同步规则和Metaverse中的对象链接起来。在FIM架构中,这种机制通过一个被称为Expected Rule List(ERL)的属性来实现。存储在这个属性中信息能够让同步服务定位一个对象所需的所有出站同步规则。

由于FIM 2010可以链接多个外部系统,因此ERL属性必须是多值的。然而这个ERL属性中的值并不直接指向同步规则,而是指向一个被称为Excepted Rules Entry(ERE)的中间对象。ERE可以用来跟踪身份对象及同步规则之间的关系状态等信息。ERL属性由FIM Service管理。因此所有受管理的身份对象必须引入到FIM Service数据库中。在FIM Service数据库中保存了对象和特定出站同步规则间的连接关系。这个结构可以用下图描述。

clip_image003

总结起来,对和出站同步有关的操作而言,将受管理的对象与对应的出站同步规则绑定在一起是必须的。在FIM 2010中,这种连接关系是以Expected Rules Entry(ERE)对象的形式来实现的。这意味着,受管理的身份对象中包含由ERE组成的ERL属性,而每个ERE属性指向相关的出站同步规则。在FIM中,一个完整的出站同步对象拥有一个特定的名称:出站同步集合(outbound synchronization triple,其中triple特指该集合中包含三个对象)。该集合由FIM Service管理,由FIM Synchronization Service应用。

同步策略

创建出站同步集合的过程可以理解成“将一个对象引入到某个出站同步规则的管理范围之内”。反向的操作被称为“将一个对象从某个出站同步规则的管理范围内移除”。这两个操作都将涉及到三个额外的FIM对象。它们分别是对象集(SET),工作流(WORKFLOW),管理策略规则(Management Policy Rule)。而同步策略则是由对象集,工作流对象,同步策略规则以及出站同步规则组成。可以使用以下图示描述这个结构:

clip_image004

当你设计出站同步逻辑时,需要定义在何种条件下将一个对象引入某一条同步规则的管理范围。在FIM中,可以通过集的方式表达这种条件。例如,商业策略决定所有全职员工必须在公司域里面有一个帐号。通常建议创建一个名为All full-time employees的集来跟踪所有相关对象。当一个用户成为All full-time employee集中的成员后,就能可以利用集中成员的变更将相关对象的ERL中添加连接到AD的出站同步规则之中。在这个过程起到控制实体作用的是被称为基于集变化的MPR。MPR中定义了FIM环境中针对各条件所需要的各种应答。当前例子中的条件是一个对象被加入到All full-time employees集。基于集变化的MPR将触发工作流作为对条件的应答。在FIM的工作流中你可以将一个操作与一条同步规则绑定在一起。和一条同步规则绑定在一起,可以使得工作流能将一个对象引入或者移除一条出站同步规则的的管理范围之内。总结起来,一个受管理对象同一条出站同步规则之间的关系是由基于集变化的MPR所管理的。出站同步的简要示例图如下:

clip_image005

FIM Service Management Agent简介

在FIM中,管理代理是用来在同步服务与外部系统之间交换数据的组件。这也包含同步服务(FIM Synchronization Service)与FIM服务(FIM Service)之间的数据交换。然而,尽管交换数据的接口是一致的。FIM 2010管理代理在FIM架构中有一个特殊的角色。在之前的介绍中,各位知道了如何将所有受管理资源引入到FIM Service数据库中。这意味着对FIM connector space来说只有一个特定的商业规则,作为Metaverse的镜像而存在。因此,不需要为Metaverse和FIM connector space之间的数据交换配置入站或者出站同步规则。在FIM中,Metaverse和FIM connector space之间的数据交换是由一组非显示申明的规则(nondeclarative rule)所管理的。当打开MA设计器时,各位可以为非显示申明规则配置相应的属性流。这包括对象类型列表,属性列表,连接过滤器,对象类型映射,属性流以及Deprovisioning。除了对选定对象类型及对象类型之间的匹配外,所有场景通常要求配置额外的入站和出站属性流映射。

正如之前所描述的,这里你需要确保Expected Rules List属性被正确配置。因为在Metaverse和FIM connector space的数据交换之间没有显示存在的入站和出现同步规则,因此需要另一种机制激活Metaverse到FIM connector space之间的置备。在FIM中,这项任务通过入站同步规则的Create Resource In FIM设置来实现。由于FIM 连接器空间可以被认为是Metaverse的镜像,所有由入站同步规则进入Metaverse的对象将会在FIM连接器空间中自动创建,假设连接器空间中没有相关对象的话。

属性优先级

接下来要介绍一个非常重要的概念,属性优先级。大家已经知道FIM 2010可以连接到多个外部系统,这意味着Metaverse中的单一对象的某一个属性值会有多个来源。因此FIM 2010的开发团队制定了一些列规则来保证属性被正确写入,具体规则如下:

  • 只要Metaverse中对象的属性未被填充,所有具有相关属性入站属性流映射的MA都可以填充一个值。
  • 一旦Metaverse中对象的属性值存在之后,该值只能被与最后一个写入该值的MA具有相同或更高优先级的MA所更新。
  • 如果和最后一次写入该值的MA相比,正在尝试更新该值的MA具有较低的优先级,那么这次更改将会被拒绝。

当然FIM 2010也允许管理员使用平等属性优先级,当设置开启后,同步服务将使用最后一个写入者胜出的判断逻辑。

同步规则优先级

除了属性优先级之外,同步规则也有可能需要优先级。和属性优先级的一个本质区别是,只有当FIM在同步规则中检测到重叠设置时,同步规则优先级才会生效。同步规则优先级对入站同步和出站同步同时生效。

设计数据同步模型

最后来看下如何设计数据同步模型。针对每一个连接的外部系统及每一个需要同步的对象类型,你需要考虑当下列事件发生时FIM 2010将要采取的措施:

  • 创建 - 当一个新对象被导入时
  • 更新 - 当对象的更新信息被导入时
  • 删除 - 当对象被从外部系统中删除时

这其中删除是需要额外注意的,从Metaverse角度来说,删除是无法被检测到的。当处理一个已经准备好的删除操作是,对Metaverse来说唯一能做的就是删除连接器空间和Metaverse对象之间的连接关系。然后,在入站同步阶段,连接的删除操作也有可能是有连接器筛选器造成的,因此需要小心。除了这三种最基本的操作之外,你还需要考虑以下两种情况:

  • 建立连接 - 当连接器空间中的对象和Metaverse中的对象建立连接时
  • 移除连接 - 当连接器空间中的对象和Metaverse中的对象间的连接被移除时

你可以使用当条件发生时,执行该步骤这样简单的逻辑来进行记录。除此之外还有一些需要值得注意的地方。比如在出站同步阶段移除连接,在FIM术语中,该项行为被称为deprovisioning。移除连接这项操作通常是deprovisiong的触发器,需要根据实际情况配置对应的相应措施,这些措施决定了如何处理断开的连接器对象。一共有以下几种措施:

Make them disconnectors
Make them explicit disconnectors
Stage a delete on the object for the next export run
Determine with a rules extension

举例来说,需要在当Metaverse中的对象和连接器空间之间的对象连接断开时,需要删除外部系统中的对象。需要配置deprovisioning选项为“Stage a deletion on next export run”。然而实际上这个选项的具体执行分为两步,首先向外部系统发出删除信号,然后你必须再执行一次Import来删除连接器空间中的对象。

总结

说实话,光讲理论知识,各位绝对看的云里雾里。因此从下次开始,将使用具体的例子来让大家理解FIM 2010的精髓,同步服务,敬请期待。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值