跳转到主要内容

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 Administratorshcc-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

服务器测试设置

  1. 准备主机
$ hostnamectl set-hostname ipaserver.ipahcc.test
$ vi /etc/hosts
# add public IPv4 address to /etc/hosts
$ dnf install ipa-server ipa-server-dns
  1. 安装带有DNS的IPA服务器
$ ipa-server-install -n ipahcc.test -r IPAHCC.TEST -p DMSecret123 -a Secret123 \
     --setup-dns --auto-forwarders --no-dnssec-validation -U
  1. /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;
  1. 将客户端主机名添加到DNS
$ kinit admin
$ ipa dnsrecord-add ipahcc.test ipaclient1 --a-rec=...
  1. 创建并保存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

警告令牌具有与您的用户帐户相同的权限。

  1. 安装插件和其他服务
dnf install 'dnf-command(copr)'
dnf copr enable @podengo/ipa-hcc
dnf install --refresh ipa-hcc-server

注意可以安装预安装了ipa-hcc-server包的服务器/副本。两种变体都受支持,并产生相同的结果。必须在安装服务器之前设置令牌和/etc/ipa/hcc.conf

客户端测试设置

  1. 安装包

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
  1. 配置DNS和主机名。客户端必须能够通过DNS SRV发现来发现其IPA域和IPA服务器。

  2. 启用自动注册服务

systemctl enable ipa-hcc-auto-enrollment.service
  1. 使用RHSM和Insights注册系统

RHEL >= 8

rhc connect

RHEL 7

subscription-manager register ...
insights-client --register
rhc connect

ipa-hcc-auto-enrollment.servicerhc启动rhcd服务后触发。注册服务运行脚本ipa-hcc-auto-enrollment.py,该脚本使用DNS SRV发现来定位IPA服务器,连接到/hcc WSGI应用来自动注册主机,最后运行ipa-client-install

客户端测试设置(分步进行)

  1. 从服务器复制/var/lib/ipa-client/pki/kdc-ca-bundle.pem到客户端。

  2. 使用RHSM和Insights注册系统

rhc connect

较老的RHEL版本可能需要手动与Insights注册

insights-client --register
  1. 使用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
  1. 使用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 信任锚。

已知问题

全局身份验证类型影响主机身份验证

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 (161.8 kB 查看散列)

上传时间: 源代码

构建分发

ipahcc-0.17-py2.py3-none-any.whl (87.0 kB 查看散列)

上传时间: Python 2 Python 3

由以下支持