《OpenShift / RHEL / DevSecOps / Ansible 汇总目录》
说明:本文已经在 OpenShift 4.11 环境中验证
文章目录
- 安装 FreeIPA/RHIdM
- 在 FreeIPA/RHIdM 中添加用户和组
- 从 FreeIPA/RHIdM 向 RHSSO 同步用户和组
- 参考
红帽 RHIdM 基于开源项目 FreeIPA,其内部提供 LDAP 功能可用来存储用户信息。本文将在 OpenShift 环境中配置从 FreeIPA/RHIdM 向 RHSSO 同步用户和组的配置数据。
说明:请先根据《OpenShift 4 - 利用 RHSSO 实现应用认证和访问授权》一文完成 kustomize 和 RHSSO 安装,并在 RHSSO 中完成创建用户和组的操作。
安装 FreeIPA/RHIdM
- 执行命令安装 kustomize 环境。
$ mkdir ~/kustomize && cd ~/kustomize
$ curl -s "https://raw.githubusercontent.com/kubernetes-sigs/kustomize/master/hack/install_kustomize.sh" | bash
$ PATH=$PATH:~/kustomize
- 执行命令在 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
- 查看 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
...
- 查看 freeipa 的运行状态直到 Running。
$ oc get pod freeipa -n ipa
NAME READY STATUS RESTARTS AGE
freeipa 1/1 Running 0 6m36s
- 查看 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
在 FreeIPA/RHIdM 中添加用户和组
- 在 FreeIPA/RHIdM 控制台的 “身份” - “用户” 中添加一个用户。
- 配置新用户登录名 - robert,名 - Robert,姓 - Garcia,并设置密码。
- 在控制台的 “身份”-“用户组” 中添加一个组,组名 - special_staff,组类型 - 非POSIX。
- 进入 robert 用户,进入到 “用户组”,点击“添加”。
- 将 special_staff 组从左侧加到右侧区域。
从 FreeIPA/RHIdM 向 RHSSO 同步用户和组
- 执行命令获取名为 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
- 在 RHSSO 控制台中点击 User Federation 菜单,然后在右侧选择 ldap。
- 在 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 URL | ldap://freeipa-ldap.ipa.svc.cluster.local:389 |
Users DN | cn=users,cn=accounts,dc=apps,dc=cluster-72c7x,dc=72c7x,dc=sandbox2951,dc=opentlc,dc=com |
Bind DN | cn=Directory Manager |
Bind Credential | r2BVq-C8Bk6-qyiX5-Z_dzN |
- 在 Save 后可以看到成功导入的提示:
Success! Sync of users finished successfully. 1 imported users, 0 updated users - 进入 Ldap 的 Mappers,然后点击 Create。
- 按照下表设置 Gourp 配置。其中 cn=groups,cn=accounts,dc=apps,dc=cluster-72c7x,dc=72c7x,dc=sandbox2951,dc=opentlc,dc=com 部分的后面是前面安装过程获得的 BaseDN。
配置 | 值 |
---|---|
LDAP Groups DN | cn=groups,cn=accounts,dc=apps,dc=cluster-72c7x,dc=72c7x,dc=sandbox2951,dc=opentlc,dc=com |
LDAP Filter | (cn=special_staff) |
Mode | LDAP_ONLY |
User Groups Retrieve Strategy | GET_GROUPS_FROM_USER_MEMBEROF_ATTRIBUTE |
Groups Path | /staff |
- 按在 Save 后可以看到成功导入的提示:
Success! Data synced successfully. 1 imported groups, 0 updated groups, 0 removed groups - 在 RHSSO 的 Users 和 Groups 中可以看到从 FreeIPA/RHIdM 同步过来的用户和组。
参考
https://olleb.com/rhsso-workshop/federation.html