安装FreeIPA 主机名设置 1 hostnamectl set-hostname idm.git.com.cn
Hosts配置
很关键, 不然会有很多问题, 比如named服务无法启动
1 echo '172.16.20.53 idm.git.com.cn' >> /etc/hosts
YUM安装 1 yum install ipa-server ipa-server-dns
一路回车即可, 或者根据自己需求填写
访问 配置本机hosts, 域名指向idm服务
浏览器访问: https:// idm.git.com.cn
关于访问端口:
1 2 3 4 5 6 7 8 9 FreeIPA端口相关: https访问: 443 dns域名解析: 53 ntp时钟服务: 123 ldap协议: 389 ldap加密协议: 636 kadmind: 464 krb5kdc: 88 pki-tomcatd: 8443
配置 免交互操作 管理员登录 1 echo 'Aa123456' |kinit admin
用户操作 添加用户
1 2 3 echo 'Aa123456 Aa123456 ' |ipa user-add wangshui --first=wang --last=shui --displayname=显示名称 --email=wangshui@git.com.cn --homedir=/home/wangshui --password
查询用户
1 2 3 4 5 6 7 8 9 10 11 ldapsearch -x -h idm.git.com.cn -b dc=idm,dc=com,dc=cn uid=admin 配置/etc/openldap/ldap.conf SASL_NOCANON on URI ldaps://idm.git.com.cn BASE dc=idm,dc=com,dc=com,dc=cn TLS_CACERT /etc/ipa/ca.crt ldapsearch -x uid=wangshui
用户组操作 1 2 3 4 5 6 7 8 9 10 11 ipa group-add D-Team-Java-01 --desc='GroupLeader: wangzhenlei' --nonposix ipa group-add D-Team-Java-02 --desc='GroupLeader: xiaopengcheng' --nonposix ipa group-add D-Team-Java-03 --desc='GroupLeader: zhangjing' --nonposix ipa group-add GitLab --desc='GitLab Repository' --nonposix ipa group-add Jira --desc='Project Management' --nonposix ipa group-add-member dev-java-01 --users =wangshui --users =lixuchun ipa group-show gitlab
简单的用户创建脚本 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 #!/bin/bash admin_login () { echo 'Aa123456' |kinit admin } add_user () { for user in `cat user.info|egrep -v "^$|#" ` do firstname=$(echo $user |awk -F'@' '{print $1}' ) lastname=$(echo $user |awk -F'@' '{print $2}' ) username=${firstname} ${lastname} displayname=$(echo $user |awk -F'@' '{print $3}' ) echo "123456 123456 " |ipa user-add ${username} --first=${firstname} --last=${lastname} --displayname=${displayname} --email=${username} @git.com --homedir=/home/${username} --password done } admin_login add_user
user.info内容
1 2 3 4 # firstname@lastname@displayname zhang@san@张三 li@si@李四 xiao@dangjia@小当家
FreeIPA统一登录集成 如果Docker-compose部署的话, 添加一行
1 2 3 4 5 6 7 extra_hosts: - "idm.git.com.cn:172.16.20.53" dns: - 172.16 .20 .53
集成GitLab
配置
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 vim gitlab.rb gitlab_rails['ldap_enabled'] = true gitlab_rails['prevent_ldap_sign_in'] = false gitlab_rails['ldap_group_sync_worker_cron'] = "0 */1 * * * *" gitlab_rails['ldap_servers'] = YAML.load <<-'EOS' main: label: 'LDAP' host: 'idm.git.com.cn' port: 389 uid: 'uid' bind_dn: 'uid=admin,cn=users,cn=accounts,dc=git,dc=com,dc=cn' password: 'Aa123456.' encryption: 'plain' verify_certificates: false smartcard_auth: false active_directory: true allow_username_or_email_login: false lowercase_usernames: false block_auto_created_users: false base: 'dc=git,dc=com' attributes: username: 'uid' email: 'mail' name: 'displayname' first_name: 'givenName' last_name: 'sn' group_base: '' admin_group: '' sync_ssh_keys: false EOS
验证
1 2 3 gitlab-ctl check-config gitlab-ctl reconfigure gitlab-rake gitlab:ldap:check
这里不知道dn或者base的, 可以使用ldapsearch -x 去过滤查询
集成Jenkins 插件: LDAP
配置: 系统管理–>全局安全配置
1 2 3 4 5 6 7 8 9 10 Server: ldap://idm.git.com.cn root DN: dc=git, dc=com, dc=cn User search base: cn=users,cn=accounts User search filter: uid={0} Group search base: 空即可 Group membership: 选择Search for LDAP groups containing user, Group membership filter值留空即可 Manager DN: uid=admin,cn=users,cn=accounts,dc=git,dc=com,dc=cn Manager Password: Aa123456 Display Name LDAP attribute: displayname Email Address LDAP attribute: mail
不同的base dn返回属性不一样, cn=users,cn=accounts和cn=users,cn=compat返回结果的属性就不一样, 具体可以通过ldapsearch -x uid= 来查看怎么配置用户的dn
jenkins的group search貌似不生效, 还没找到更好的办法, 只能说是, idm中的用户都能登录jenkins, 但是登录之后具体的权限, 需要jenkins内部控制一下了(可以使用Role-based Authorization和Authorize Project插件)
集成Jumpserver 配置: 系统设置–>LDAP设置
1 2 3 4 5 6 7 8 9 10 LDAP服务器: LDAP地址: ldap://idm.git.com.cn:389 绑定 DN: uid=admin,cn=users,cn=accounts,dc=git,dc=com,dc=cn 密码: Aa123456 LDAP用户: 用户 OU: cn=users,cn=accounts,dc=git,dc=com,dc=cn 用户过滤器: (cn=%(user)s) LDAP属性映射: {"username" :"uid" ,"name" :"displayname" ,"email" :"mail" } 其他: 启用 LDAP 认证: 勾选
集成Jira或者Confluence
创建jira-administrators分组, 并将admin加入到组中
创建jira-software-users分组, 并加入用户
配置: 管理–>用户管理–> 用户目录–> 添加目录–> LDAP
配置 LDAP 用户目录:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 服务器设置: 名称: FreeIPA 目录类型: OpenLDAP 主机名: idm.git.com.cn 端口: 389 用户名: uid=admin,cn=users,cn=accounts,dc=git,dc=com,dc=cn 密码: Aa123456 LDAP模式: 基本DN: dc=git,dc=com,dc=cn 附加用户DN: cn=users,cn=accounts 附加组DN: cn=groups,cn=accounts LDAP权限: 只读: 勾选 高级设置: 简单DN匹配: 勾选 同步间隔(分钟): 5 分钟(根据实际情况) 其余不变 用户模式设置: 用户对象类: posixaccount 用户对象过滤器: (objectclass=posixaccount) 用户名属性: uid 用户名RDN属性: uid 用户名字属性: givenName 用户姓氏属性: sn 用户显示名属性: displayName 用户电邮属性: mail 用户密码属性: userPassword 用户密码加密: SHA 用户唯一的ID属性: uidNumber 组模式设置: 组对象类: groupofnames 组对象过滤器: (objectclass=groupofnames) 组名属性: cn 组描述属性: description 成员模式设置: 组成员属性: member //这里和OpenLdap不一样, 取成员的方法不是uniqueMember 成员属性: memberOf
组成员属性很关键, 否则无法读取用户组下面的用户,把用户添加到对应的组内, 测试的时候也会提示 ‘测试得到用户的会员资格 : 失败’