• OpenShift 4 - 从 FreeIPA/RHIdM 向 RHSSO 同步用户和组


    OpenShift / RHEL / DevSecOps / Ansible 汇总目录
    说明:本文已经在 OpenShift 4.11 环境中验证


    红帽 RHIdM 基于开源项目 FreeIPA,其内部提供 LDAP 功能可用来存储用户信息。本文将在 OpenShift 环境中配置从 FreeIPA/RHIdM 向 RHSSO 同步用户和组的配置数据。

    说明:请先根据《OpenShift 4 - 利用 RHSSO 实现应用认证和访问授权》一文完成 kustomize 和 RHSSO 安装,并在 RHSSO 中完成创建用户和组的操作。

    安装 FreeIPA/RHIdM

    1. 执行命令安装 kustomize 环境。
    $ mkdir ~/kustomize && cd ~/kustomize
    $ curl -s "https://raw.githubusercontent.com/kubernetes-sigs/kustomize/master/hack/install_kustomize.sh"  | bash
    $ PATH=$PATH:~/kustomize
    
    • 1
    • 2
    • 3
    1. 执行命令在 OpenShift 新建的项目 ipa 中先安装 freeipa 的 Template,然后在基于Template 部署容器环境。
    $ oc new-project ipa
    $ IMG=quay.io/freeipa/freeipa-openshift-container:latest
    $ IMG_BASE=${IMG}
    
    $ git clone https://github.com/freeipa/freeipa-openshift-container.git && cd freeipa-openshift-container/
    $ kustomize build deploy/admin | oc create -f -
    
    $ make template-create
    $ make template-new-app
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    1. 查看 freeipa 中的日志。注意 BaseDN 的内容,在后面会用到。
    $ oc logs pod/freeipa -c init-container -f
    ...
    [   ***] A start job is running for Configur… first start (6min 13s / no limit)
    This program will set up IPA client.
    Version 4.9.8
    
    Using existing certificate '/etc/ipa/ca.crt'.
    Client hostname: ipa.apps.cluster-72c7x.72c7x.sandbox2951.opentlc.com
    Realm: APPS.CLUSTER-72C7X.72C7X.SANDBOX2951.OPENTLC.COM
    DNS Domain: apps.cluster-72c7x.72c7x.sandbox2951.opentlc.com
    IPA Server: ipa.apps.cluster-72c7x.72c7x.sandbox2951.opentlc.com
    BaseDN: dc=apps,dc=cluster-72c7x,dc=72c7x,dc=sandbox2951,dc=opentlc,dc=com
    ...
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    1. 查看 freeipa 的运行状态直到 Running。
    $ oc get pod freeipa -n ipa
    NAME      READY   STATUS    RESTARTS   AGE
    freeipa   1/1     Running   0          6m36s
    
    • 1
    • 2
    • 3
    1. 查看 freeipa 的访问地址和 admin 用户的登录密码,然后访问管理控制台。
    $ oc get route freeipa -o jsonpath='{.spec.host}' -n ipa
    ipa.apps.cluster-72c7x.72c7x.sandbox2951.opentlc.com
    $ oc get secret freeipa -n ipa -o go-template --template="{{.data.IPA_ADMIN_PASSWORD|base64decode}}"
    Z6bzS-G1zrD-4UPqV-gfJ0m
    
    • 1
    • 2
    • 3
    • 4

    在这里插入图片描述

    在 FreeIPA/RHIdM 中添加用户和组

    1. 在 FreeIPA/RHIdM 控制台的 “身份” - “用户” 中添加一个用户。
      在这里插入图片描述
    2. 配置新用户登录名 - robert,名 - Robert,姓 - Garcia,并设置密码。
      在这里插入图片描述
    3. 在控制台的 “身份”-“用户组” 中添加一个组,组名 - special_staff,组类型 - 非POSIX。
      在这里插入图片描述
    4. 进入 robert 用户,进入到 “用户组”,点击“添加”。
      在这里插入图片描述
    5. 将 special_staff 组从左侧加到右侧区域。
      在这里插入图片描述

    从 FreeIPA/RHIdM 向 RHSSO 同步用户和组

    1. 执行命令获取名为 freeipa 的 Secret 中 IPA_DM_PASSWORD 对应的内容。
    $ oc get secret freeipa -n ipa -o go-template --template="{{.data.IPA_DM_PASSWORD|base64decode}}"
    r2BVq-C8Bk6-qyiX5-Z_dzN
    
    • 1
    • 2
    1. 在 RHSSO 控制台中点击 User Federation 菜单,然后在右侧选择 ldap。
      在这里插入图片描述
    2. 在 Ldap 页面中按照以下配置设置。其中 cn=users,cn=accounts,dc=apps,dc=cluster-72c7x,dc=72c7x,dc=sandbox2951,dc=opentlc,dc=com 部分的后面是前面安装过程获得的 BaseDN,而 Bind Credential 为前面获得的 IPA_DM_PASSWORD 内容。
    配置
    Connection URLldap://freeipa-ldap.ipa.svc.cluster.local:389
    Users DNcn=users,cn=accounts,dc=apps,dc=cluster-72c7x,dc=72c7x,dc=sandbox2951,dc=opentlc,dc=com
    Bind DNcn=Directory Manager
    Bind Credentialr2BVq-C8Bk6-qyiX5-Z_dzN

    在这里插入图片描述

    1. 在 Save 后可以看到成功导入的提示:
      Success! Sync of users finished successfully. 1 imported users, 0 updated users
    2. 进入 Ldap 的 Mappers,然后点击 Create。
      在这里插入图片描述
    3. 按照下表设置 Gourp 配置。其中 cn=groups,cn=accounts,dc=apps,dc=cluster-72c7x,dc=72c7x,dc=sandbox2951,dc=opentlc,dc=com 部分的后面是前面安装过程获得的 BaseDN。
    配置
    LDAP Groups DNcn=groups,cn=accounts,dc=apps,dc=cluster-72c7x,dc=72c7x,dc=sandbox2951,dc=opentlc,dc=com
    LDAP Filter(cn=special_staff)
    ModeLDAP_ONLY
    User Groups Retrieve StrategyGET_GROUPS_FROM_USER_MEMBEROF_ATTRIBUTE
    Groups Path/staff

    在这里插入图片描述

    1. 按在 Save 后可以看到成功导入的提示:
      Success! Data synced successfully. 1 imported groups, 0 updated groups, 0 removed groups
    2. 在 RHSSO 的 Users 和 Groups 中可以看到从 FreeIPA/RHIdM 同步过来的用户和组。
      在这里插入图片描述
      在这里插入图片描述

    参考

    https://olleb.com/rhsso-workshop/federation.html

  • 相关阅读:
    终于读完了阿里云p9专家分享云原生Kubernetes全栈架构师实战文档
    Python编程:使用PIL进行JPEG图像压缩的简易教程
    C++之template可变模板参数应用总结(二百二十八)
    Vue中动态Class实战
    docker下快速部署openldap与self-service-password
    在rt-thread中使用iperf触发断言卡死
    腾讯发布 3D 虚拟场景自动生成解决方案,用 AIGC 助力游戏开发提效
    系统配置与性能评价>性能指标
    sqli-labs/Less-46
    【uni-app】开发问题汇总
  • 原文地址:https://blog.csdn.net/weixin_43902588/article/details/128171912