在 V8.0 及更低版本的 ClearCase 发行版中,每个 VOB 元素都具有三个保护类别:所有者、组及其他。对于每个类别,管理员均可设置或清除读和执行位。例如,如果您具有可供所有者及元素组成员(而不是网络中的所有用户)读取的源文件,那么应该设置 owner=read、group=read 和 other=none。如果您具有某些编程工具的可执行文件,可将全部三个类别设置为读和执行。
实际上,该模型要求您为共享同一保护的每类元素使用单独的组。 如果不允许所有用户读取 VOB 中的元素,应该设置 other=none 且必须使用所有者和组类别控制访问权限。
元素所有者在元素保护中仅具有有限的作用,仅保留组作为有效控件。 缺省情况下,元素所有者设置为创建该元素的用户帐户。如果您有多个开发人员,那么元素所有者将有所不同,这对于访问控制极为不便。某些管理员会在创建元素后配置触发器以将所有权更改为 VOB 所有者帐户,但这对于访问控制也非常不便,因为大多数用户很少承担 VOB 所有者身份
这会将元素的组保留为相关机制,以控制对每个元素的访问。管理员必须为需要保护的每类元素定义单独的组。例如,元素类 1 针对组件 A 的开发人员。元素类 2 针对组件 B 的开发人员。元素类 3 针对所有开发人员(共享代码)。如果您有 25 个组件 (A-Y) 和 1 个共享组件 (Z),那么需 26 个组来控制访问。您应该保护组件 A 中的所有元素可供 A 组读取,但不可供所有人读取。对于组件 B-Y 也是如此。组件 A-Y 的每位开发人员都应该是该组成员,同样也是 Z 组成员。用于构建和集成所有代码的帐户都应该是所有 A-Z 组的成员。
ClearCase 使用的组由操作系统(Windows Domain、UNIX NIS 或 LDAP)定义,并在他/她登录到运行 ClearCase 的主机时添加到用户凭证中。不幸的是,由于操作系统和 ClearCase 中使用的网络协议存在限制,因此一位用户一次只能与 ClearCase 一起使用 16 个组(UNIX 和 Linux)或 32 个组 (Windows)。在上例中,构建/集成帐户需要使用 26 个组来完成构建过程——这是以下操作所必需的:用于定义针对 ClearCase 激活的组的构建步骤和凭证更改的复杂排序,或者降低元素安全性实施标准以及使用较少的元素类/组。任一选项都不是必需选项。
如果启用 ACL 以保护 ClearCase 8.0.1 中功能部件级别 8 VOB 中的元素,那么您可以更改访问控制策略以避免达到每位用户组成员资格限制的各种情况。为方便起见,可以认为 ACL 允许您将元素放入多个组中,而无需将用户放入多个组中。由于具有有效 ACL 的元素中所允许的组的数量并不受用户帐户中组数底限的限制,此安全性机制可支持某些新的保护用例并简化其他用例。
利用元素上的 ACL,您可以向多个个人用户、多个组以及一些“每个用户”类别授予访问权限。本主题依据元素上的有效 ACL 来讨论 ACL。在本主题及相关主题中,提供的示例描述了角色映射和策略如何进行结合以生成有效的 ACL。
在上例中,有 25 个组件 A-Y,每个均由不同的团队和构建帐户(“构建者”)访问,但其他任何人都没有访问权限。通过 ACL,您使用向 A 组和构建者授予“更改”权限的共享的有效 ACL 来保护给定组件中的每个元素。
每个其他组件 B-Y 都将具有类似的有效 ACL。组件 Z(共享组件)也具有类似的有效 ACL。在该配置中,每个团队成员的帐户都位于其组件的对应组以及 Z 组中(如以前)。但构建者帐户仅需要位于“构建者”组中。您不会受到构建者帐户的同时组成员资格限制。
系统构建过程中,您也不必使用复杂的策略或降低组件 A-Y 的安全性。您还可灵活地为元素添加其他组和只读访问权限。假定组件 Z 由其自身的团队维护,但仅应由团队 A-Y 引用,并且您将非 Z 开发人员放入“所有开发人员”组而非“Z 组”中。您可以配置组件 Z 的元素 ACL,以便“Z 组”具有“更改”权限,“所有开发人员”具有“读”权限,构建者具有“更改”权限。
团队 A 上的开发人员将能够读取组件 Z 中的元素,但无法修改它们。 (如果没有 ACL,将需要预操作检出和 mkbranch 触发器以检查修改元素的权限,并在未授权的情况下拒绝操作。)
您也可以将个人帐户放入元素 ACL 中。如果有人需要组件的特定访问权限,这样可以满足要求,在此情况下,不值得仅为此目的而创建新的操作系统组。因此,如果组件 B 可由其团队以及其他用户(“额外的用户”)修改,ACL 将向“B 组”、“额外的用户”和“构建”者授予“更改”权限。
如果您具有由多个团队维护的某些组件,甚至可以取消之前使用的某些组。假定组件 E 由组件 C 和 D 的所有团队成员维护。在 8.0 示例中,您需要使组 E 包含组 C 和 D 的所有成员。通过 ACL,您可以为组件 E 设置 ACL 以命名两个组,然后放弃使用 E 组(从团队 C 和 D 上的帐户的组列表中除去它)。
以上描述依据有效的 ACL 展开。在 VOB 中,通过将角色映射应用至策略来生成有效 ACL。VOB 数据库为每个角色映射计算和缓存有效 ACL。每个元素均与角色映射相关联。要实施以上示例,您需要针对每类元素(组件 A - Z)使用不同的角色映射。您可以将所有这些角色映射都链接至一个描述常规保护模型的策略。以下是示例策略以及可获取上述有效 ACL 的角色映射集合。(实际操作中,您可能要添加管理用户或组,以对所有元素具有完全控制权。)