37.5. IdM ID 范围内安全和相对标识符的角色
Identity Management(IdM)ID 范围由多个参数定义:
- 范围名称
- 范围的第一个 POSIX ID
- 范围大小: 范围内的 ID 数量
- 对应的 RID range 的第一个 相对标识符 (RID)
- 二级 RID 范围的第一个 RID
您可以使用 ipa idrange-show
命令查看这些值:
$ ipa idrange-show IDM.EXAMPLE.COM_id_range
Range name: IDM.EXAMPLE.COM_id_range
First Posix ID of the range: 196600000
Number of IDs in the range: 200000
First RID of the corresponding RID range: 1000
First RID of the secondary RID range: 1000000
Range type: local domain range
安全识别符
IdM 服务器在内部使用本地域的 ID 范围中的数据,来将唯一的 安全标识符 (SIDs)分配给 IdM 用户和组。SID 存储在用户和组对象中。用户的 SID 由以下内容组成:
- 域 SID
- 用户的 相对标识符 (RID),它是附加到域 SID 的四位 32 位值
例如,如果域 SID 是 S-1-5-21-123-456-789,且来自此域的 RID 为 1008,则该用户的 SID 为 S-1-5-21-123-456-789-1008。
相对标识符
RID 本身以以下方式计算:
将用户的 POSIX UID 范围内的第一个 POSIX ID 减去,并将对应 RID 范围的第一个 RID 添加到结果中。例如,如果 idmuser 的 UID 为 196600008,则第一个 POSIX ID 是 196600000,第一个 RID 为 1000,则 idmuser 的 RID 为 1008。
该算法计算用户的 RID 会检查给定的 POSIX ID 是否位于计算对应的 RID 前分配的 ID 范围内。例如,如果第一个 ID 是 196600000,其范围大小为 200000,则 1600000 的 POSIX ID 不在 ID 范围之外,且算法不会为其计算 RID。
二级相对标识符
在 IdM 中,POSIX UID 可以与 POSIX GID 相同。这意味着,如果 idmuser 已被 UID 196600008 存在,您仍然可以创建一个新的 idmgroup 组,其 GID 为 196600008。
但是,SID 只能定义一个对象、用户或组群。已经为 idmuser 创建的 SID 是 S-1-5-21-123-456-789-1008,它无法与 idmgroup 共享。必须为 idmgroup 生成一个替代 SID。
IdM 使用 二级相对标识符,或辅助 RID 来避免冲突 SID。这个二级 RID 由以下内容组成:
- secondary RID 基本
- 范围大小;默认情况下,与基本范围大小相同
在上例中,二级 RID 基本被设置为 1000000。要计算新创建的 idmgroup 的 RID:从用户的 POSIX UID 中减去范围内的第一个 POSIX ID,并将 secondary RID 范围内的第一个 RID 添加到结果。因此,Mid group 被分配为 1000008 的 RID。因此,idmgroup 的 SID 是 S-1-5-21-123-456-789-1000008。
只有之前使用手动设置 POSIX ID 创建一个组对象时,IdM 才使用二级 RID 来计算 SID。否则,自动分配可防止分配相同的 ID 两次。