38.5. IdM ID 范围中的安全性和相对标识符的角色
身份管理 (IdM) ID 范围由几个参数定义:
- 范围名称
- 范围的第一个 POSIX ID
- 范围大小: 范围内的 ID 数量
- 对应 RID 范围的第一个 相对标识符 ( 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 范围中的数据来为 IdM 用户和组分配唯一安全标识符 (SID)。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 是否属于分配的 ID 范围,然后再计算对应的 RID。例如,如果第一个 ID 是 196600000,并且范围大小为 200000,那么 POSIX ID 为 1600000,则算法不会为其计算 RID。
二级相对标识符
在 IdM 中,POSIX UID 可以与 POSIX GID 相同。这意味着,如果 idmuser 已存在 UID 196600008,您仍然可以创建一个新的 idmgroup 组,GID 为 196600008。
但是,一个 SID 只能定义一个对象,一个用户或一个组。为 idmuser 创建的 S-1-5-21-123-456-789-1008 的 SID 无法与 idmgroup 共享。必须为 idmgroup 生成替代的 SID。
IdM 使用 二级相对标识符二级 RID,以避免出现冲突的 SID。这个二级 RID 由以下内容组成:
- 二级 RID 基础
- 范围大小;默认情况下与基本范围大小相同
在上例中,二级 RID 基础被设置为 1000000。要计算新创建的 idmgroup 的 RID:减少用户 POSIX UID 范围内的第一个 POSIX ID,并将二级 RID 范围的第一个 RID 添加到结果中。因此,idmgroup 被分配 1000008 的 RID。因此,idmgroup 的 SID 是 S-1-5-21-123-456-789-1000008。
只有当之前使用手动设置 POSIX ID 创建用户或组对象时,IdM 使用二级 RID 来计算 SID。否则,自动分配会防止分配相同的 ID 两次。