许可
按功能模块和受管主机数分四档。默认离线激活,一张 .lic 绑一台 IPA 服务器;未激活时管理台只读。
许可的通用流程(在线 / 离线、指纹、迁移)在平台通用:许可激活。这一页只写 IDMatrix 特有的部分。
档位
两条轴:功能模块和受管主机数。不按用户数收费。
| 标准版 | 专业版 | 企业版 | 试用 | |
|---|---|---|---|---|
| 定位 | 纯 Linux,小规模 | 纯 Linux,全功能 | Windows AD + Linux 统一身份 | POC |
| 受管主机上限 | 100 | 500 | 1000,可按需上调 | 20 |
| IPA 服务器数 | 1 | 2 | 不限 | 1 |
| 有效期 | 1 年 | 1 年 | 1 年 | 30 天 |
| 主机访问控制、密码策略、用户 SSH 公钥、证书签发 | ✓ | ✓ | ✓ | ✓ |
| 内置 DNS、自动挂载、证书身份映射、Kerberos 票据策略 | – | ✓ | ✓ | ✓ |
| AD 域信任 | – | – | ✓ | ✓ |
每档都有的:用户、主机、组、Sudo、RBAC、OTP、多 master 复制、备份恢复。这些不受许可影响。
「受管主机」指加入域的主机数(ipa host-add 建出来的对象),不含 AD 侧的机器。「IPA 服务器数」指装了 IDMatrix 管理台的 FreeIPA 服务器,每台各需一张 .lic;纯 FreeIPA replica 不装管理台的话不占名额。
未激活和越界时的行为
| 状态 | 管理台 | API / 命令行 | 已加入域的主机 |
|---|---|---|---|
| 未激活、过期、指纹不符、被吊销 | 红色横幅;所有页面可看不可改 | 写操作返回 403,错误码 4300 LicenseReadOnly | 登录、sudo、SSH 全部照常 |
| 已激活但操作的模块不在许可里 | 该模块的导航项隐藏 | 写操作返回 403,错误码 4301 LicenseModuleLocked | 照常 |
| 受管主机数达到上限 | ipa host-add 报错 | 服务端拒绝新增主机 | 照常 |
| 30 天内到期 | 黄色横幅提示剩余天数 | 照常 | 照常 |
许可只管「管理员能改什么」。已经下发到主机的策略、已发的 Kerberos 票、已签的证书不受任何影响,域本身不会因为许可过期停止服务。证书自动续期也不受影响(1.0.2 起;更早版本在缺「证书签发」模块时续期会失败)。
三层如何配合
| 层 | 在哪 | 做什么 |
|---|---|---|
| 校验 | idmatrix-license.timer 每日跑 phonehome.py | 本地验签 .lic(签名、到期、主机指纹),写 /var/lib/idmatrix-license/status.json |
| 闸门 | httpd 里 /ipa 的 WSGI 入口 | 每个 JSON-RPC 请求进来先看 status.json:只读态拒绝所有写,模块态拒绝未授权模块的写。FreeIPA 自身的服务主体(certmonger 续证、replica 通信)不经过闸门 |
| 硬顶 | FreeIPA 服务端插件 | host_add 时数受管主机,超过 max_managed_hosts 直接拒绝 |
三层都以 status.json 为准。手动刷新状态不用等每日 timer:sudo systemctl start idmatrix-license.service。
激活
默认离线,不需要 IPA 服务器联网。
管理台 → IPA Server → License Activation,复制主机指纹(64 位十六进制),发给 Reallysec。
收到 .lic 文件,回同一页上传。服务端先验签再落盘:坏文件、别的机器的文件、垃圾内容都不会覆盖现有许可。
验:cat /var/lib/idmatrix-license/status.json,valid 为 true,mods 是买的模块,expiry 是到期日。管理台横幅消失,之前隐藏的导航项出现,不用刷新。
命令行等价:
curl -sk -X POST https://<FQDN>/ipa/modern-ui/license/install --data-binary @<客户>.lic
# {"ok":true,"status":{...}}指纹由 /etc/machine-id 派生。重装系统、换机器、克隆虚拟机、把备份恢复到另一台机器,指纹都会变,许可失效,要用新指纹重新签发。备份恢复到同一台机器不受影响。
续期、扩容、升档
都是同一个动作:Reallysec 对同一个指纹重签一张 .lic,改到期日、主机上限或模块,回 License Activation 页上传覆盖。指纹不变,不用重装,不用重启。管理台的门控在上传后立刻重算。
在线模式(可选)
默认离线模式没有心跳、没有远程吊销、没有宽限期,到期即只读。需要远程吊销或心跳监控的客户可以切在线模式,前提是 IPA 服务器能访问 license.reallysec.com:443,且由 Reallysec 签一张在线 token 而不是 .lic。
编辑 /etc/systemd/system/idmatrix-license.service:
Environment=IDMATRIX_LICENSE_SERVER=https://license.reallysec.com
Environment=IDMATRIX_LICENSE_TOKEN=<在线 token>
Environment=IDMATRIX_LICENSE_GRACE_DAYS=3sudo systemctl daemon-reload && sudo systemctl start idmatrix-license.service
cat /var/lib/idmatrix-license/status.jsonIDMATRIX_LICENSE_GRACE_DAYS 是连不上许可服务器后继续有效的天数,默认 3,网络不稳的环境放到 7。只在在线模式生效。
排错
| 横幅 / 现象 | 原因 |
|---|---|
| 「未激活」 | 没上传 .lic,或 /var/lib/idmatrix-license/ 下没有它 |
| 「未授权在此服务器」 | 指纹不符,机器换过或 machine-id 变了。重新发证 |
| 「已到期」 | 续期 |
上传返回 许可证文件为空或过大 | curl --data-binary @ 的路径不对,读到了空文件 |
| 激活后某个页面仍不见 | 那个模块不在 mods 里。看 status.json,不是缓存问题 |
日志里查不到 LicenseModuleLocked | 闸门拒绝时不写 httpd 日志。判断是否被拦只看 status.json 的 valid 和 mods |
| 改了 service 的 env 不生效 | 少了 daemon-reload + systemctl start;timer 一天才跑一次 |