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_network
ACL,并使用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 |