Red Hat混合云控制台IPA注册代理
项目描述
混合云控制台的IPA插件
ipa-hcc插件提供了IPA对混合云控制台集成的模式扩展。必须在所有FreeIPA服务器上安装该插件,最好在安装服务器/副本之前。
如果稍后安装该插件,则本地模式缓存可能过时,ipa命令可能不知道新的属性。在这种情况下,可以通过强制执行模式检查ipa -eforce_schema_check=True ping或通过使用rm -rf ~/.cache/ipa来清除缓存来刷新本地模式缓存。
安装需要服务器升级ipa-server-upgrade和重启服务ipactl restart。RPM软件包的事务后钩子负责这两项。服务器升级可能需要一些时间,并且可能会干扰机器的正常操作。建议串行化操作,并一次在一个服务器上安装插件。
额外的主机属性
- HCCOrgId:字符串
- HCCSubscriptionId:字符串
- HCCInventoryId:字符串
- HCCCertSubject:字符串(自动生成)
服务器配置
- HCCOrgId:字符串
- HCCDomainId:字符串
主机组
在服务器升级时创建主机组hcc-enrollment。具有HCCSubscriptionId的主机将通过一个自动成员规则自动添加到主机组。
certmap规则
certmap规则rhsm-cert将RHSM证书的主题与主机的HCCCertSubject属性匹配。
服务主体
每个IPA服务器都有一个具有角色HCC Enrollment Administrators的hcc-enrollment/$FQDN服务。
索引
- 针对HCCSubscriptionId的索引,用于存在性和相等性
- 针对HCCInventoryId的索引,用于存在性和相等性
- 针对HCCCertSubject的索引,用于存在性和相等性
- HCCCertSubject属性的唯一性
命令行扩展
$ ipa host-mod --help
  ...
  --hccsubscriptionid=STR
  --hccinventoryid=STR
  ...
$ ipa host-show host.test.example
  ...
  organization id: 42
  subscription id: 1f84492f-a824-41b8-8ccd-a4e9e1ab2f3d
  inventory id: e98a6828-faf2-4917-8f0f-7af27fad3683
  RHSM certificate subject: O=42,CN=1f84492f-a824-41b8-8ccd-a4e9e1ab2f3d
  ...
$ ipa config-mod --help
  ...
  --hccorgid=STR  organization id
  --hccdomainid=STR  domain id
  ...
内部IPA API扩展
hccjwk插件添加内部API
- hccjwk_add
- hccjwk_find
- hccjwk_show
- hccjwk_revoke
- hccjwk_del
角色/权限/权限
- 权限- 系统:读取HCC配置属性
- 系统:读取HCC主机属性
- 系统:修改HCC主机属性
- 系统:读取HCC JWKs
- 系统:添加HCC JWK
- 系统:删除HCC JWK
- 系统:修改HCC JWK
 
- 具有权限授予的HCC Host Administrators角色- 系统:添加主机(IPA权限)
- 系统:修改HCC主机属性(IPA权限)
- 系统:读取HCC配置属性
- 系统:读取HCC主机属性
- 系统:修改HCC主机属性
 
- 具有权限授予的HCC JWK Administrators角色- 系统:读取HCC JWKs
- 系统:添加HCC JWK
- 系统:删除HCC JWK
- 系统:修改HCC JWK
 
- 具有权限的HCC Enrollment Administrators角色- HCC Host Administrators
- HCC JWK Administrators
 
架构/服务器更新器
为ipa-server-upgrade创建的更新文件85-hcc.update
- 主机组hcc-enrollment
- 主机组的自动成员规则
- certmap规则rhsm-cert
- 额外的角色和权限
- 新索引和唯一约束
- 运行update_hcc更新插件
update_hcc更新插件
- 修改KRB5 KDC配置文件以信任RHSM证书链,并在必要时重新启动服务。
- 检查IPA的全局配置中的HCCOrgId设置。如果未设置此选项,则根据服务器RHSM证书的主题组织名称(/etc/pki/consumer/cert.pem)设置值。
- 根据服务器RHSM证书的主题CN设置服务器主机条目的HCCSubscriptionId。
更新文件86-hcc-enrollment-service.update运行update_hcc_enrollment_service插件,该插件
- 创建服务帐户hcc-enrollment/$FQDN@$REALM
- 将服务添加到HCC Enrollment Administrators角色
- 为hcc-enrollment/$FQDN@$REALM服务帐户创建或验证keytab
服务器测试设置
- 准备主机
$ hostnamectl set-hostname ipaserver.ipahcc.test
$ vi /etc/hosts
# add public IPv4 address to /etc/hosts
$ dnf install ipa-server ipa-server-dns
- 安装带有DNS的IPA服务器
$ ipa-server-install -n ipahcc.test -r IPAHCC.TEST -p DMSecret123 -a Secret123 \
     --setup-dns --auto-forwarders --no-dnssec-validation -U
- 在/etc/named/*.conf中配置trusted_networkACL,并使用systemctl restart named.service重新启动named服务,例如:
# /etc/named/ipa-ext.conf
acl "trusted_network" {
   localnets;
   localhost;
   10.0.0.0/8;
};
# /etc/named/ipa-options-ext.conf
allow-recursion { trusted_network; };
allow-query-cache { trusted_network; };
listen-on-v6 { any; };
dnssec-validation no;
- 将客户端主机名添加到DNS
$ kinit admin
$ ipa dnsrecord-add ipahcc.test ipaclient1 --a-rec=...
- 创建并保存Red Hat API刷新令牌到/etc/ipa/hcc/refresh_token。
cat > /etc/ipa/hcc/refresh_token
...
EOF
chown ipahcc:root /etc/ipa/hcc/refresh_token
chmod 640 /etc/ipa/hcc/refresh_token
警告令牌具有与您的用户帐户相同的权限。
- 安装插件和其他服务
dnf install 'dnf-command(copr)'
dnf copr enable @podengo/ipa-hcc
dnf install --refresh ipa-hcc-server
注意可以安装预安装了ipa-hcc-server包的服务器/副本。两种变体都受支持,并产生相同的结果。必须在安装服务器之前设置令牌和/etc/ipa/hcc.conf。
客户端测试设置
- 安装包
RHEL 8.8+或RHEL 9.2+
dnf install 'dnf-command(copr)'
dnf copr enable @podengo/ipa-hcc
dnf install --refresh ipa-client ipa-hcc-client
- 
配置DNS和主机名。客户端必须能够通过DNS SRV发现来发现其IPA域和IPA服务器。 
- 
启用自动注册服务 
systemctl enable ipa-hcc-auto-enrollment.service
- 使用RHSM和Insights注册系统
RHEL >= 8
rhc connect
RHEL 7
subscription-manager register ...
insights-client --register
rhc connect
ipa-hcc-auto-enrollment.service在rhc启动rhcd服务后触发。注册服务运行脚本ipa-hcc-auto-enrollment.py,该脚本使用DNS SRV发现来定位IPA服务器,连接到/hcc WSGI应用来自动注册主机,最后运行ipa-client-install。
客户端测试设置(分步进行)
- 
从服务器复制 /var/lib/ipa-client/pki/kdc-ca-bundle.pem到客户端。
- 
使用RHSM和Insights注册系统 
rhc connect
较老的RHEL版本可能需要手动与Insights注册
insights-client --register
- 使用IdM自助注册主机
curl \
  --cacert /root/kdc-ca-bundle.pem \
  --cert /etc/pki/consumer/cert.pem \
  --key /etc/pki/consumer/key.pem \
  https://ipaserver.hmsidm.test/hcc
- 使用IdM注册主机
ipa-client-install \
  --pkinit-identity=FILE:/etc/pki/consumer/cert.pem,/etc/pki/consumer/key.pem \
  --pkinit-anchor=FILE:/root/kdc-ca-bundle.pem \
  --server ipaserver.hmsidm.test --domain hmsidm.test -U -N
注意事项
- IPA的KDC插件缓存certmap规则5分钟。为了快速测试,可以使用systemctl restart krb5kdc.service重新启动KDC。请参阅ipa_kdc_certauth.c中的DEFAULT_CERTMAP_LIFETIME。
- ipa certmap-match只为用户实现。它不能用于测试主机证书映射。
解决方案
IdM 还未实现 #9272 "仅安装用于 PKINIT 或 TLS 客户端身份验证的 CA 证书"。
- Apache HTTPd 已配置为从 CA 路径 /usr/share/ipa-hcc/cacerts/加载额外的 CA 证书以进行客户端证书身份验证。
- Kerberos KDC 从 DIR:/usr/share/ipa-hcc/cacerts加载额外的 PKINIT 信任锚。
已知问题
全局身份验证类型影响主机身份验证
- 影响:RHEL 8.9、9.3 及更早版本
- 问题报告:https://pagure.io/freeipa/issue/9485
IPA 的 KDC KDB 插件存在与全局用户身份验证配置相关的已知问题。如果管理员为用户身份验证类型设置了全局策略,但不包括 pkinit,则 KDC 拒绝为主机提供证书身份验证。
$ ipa config-mod --user-auth-type=password --user-auth-type=otp
$ ipa config-show
...
Default user authentication types: password, otp
ipa-client-install 失败
kinit: KDC policy rejects request while getting initial credentials
并且 /var/log/krb5kdc.log 包含
PKINIT pre-authentication not allowed for this user.: host/host.ipa.example@IPA.EXAMPLE for krbtgt/IPA.EXAMPLE@IPA.EXAMPLE, KDC policy rejects request
解决方案:同时启用 pkinit
ipa config-mod --user-auth-type=password --user-auth-type=otp --user-auth-type=pkinit
开发和测试
有关如何为此存储库做出贡献,请参阅 CONTRIBUTING.md。
有关设置本地开发环境和如何利用 idm-ci 进行测试的说明,请参阅 DEVELOPMENT.md。
许可
有关使用和保修信息,请参阅文件 'COPYING'。
本程序是免费软件;您可以在自由软件基金会发布的 GNU 通用公共许可证条款下重新分配和/或修改它,许可证版本为 3 或(根据您的选择)任何后续版本。
本程序按“希望对您有用”的方式分发,但没有任何保证;甚至没有关于其可销售性或适用于特定目的的暗示保证。有关更多信息,请参阅 GNU 通用公共许可证。
您应该已随本程序收到 GNU 通用公共许可证的副本。如果没有,请参阅 https://gnu.ac.cn/licenses/。
项目详情
下载文件
下载适合您平台的应用程序。如果您不确定要选择哪个,请了解有关 安装包 的更多信息。
源代码分发
构建分发
ipahcc-0.17.tar.gz 的散列
| 算法 | 散列摘要 | |
|---|---|---|
| SHA256 | 5f52c978d7f1f3cdd907dda7bc34b8a085ba37c3c7535b5dd736afae094a8a26 | |
| MD5 | 2e3784907f4efce0742a8b51a5fd9bca | |
| BLAKE2b-256 | bb92eebf175d1e74aa965116240d9d692ab32daaa39f9be95e725ba4f6c64c89 | 
ipahcc-0.17-py2.py3-none-any.whl 的散列
| 算法 | 散列摘要 | |
|---|---|---|
| SHA256 | 3022e148844f4348ef5b485517d096707eecb6606072de8e0c0854aeb603e61c | |
| MD5 | 7d6aa6d317d3ab379ce7dedc7901232d | |
| BLAKE2b-256 | 4708ec01a42760ad2f9eaba1353d2573c46bd943f7d7f9ba88acfae02dd8b206 |