FreeIPA配置笔记

安装FreeIPA

主机名设置

hostnamectl set-hostname idm.git.com.cn

Hosts配置

  • 很关键, 不然会有很多问题, 比如named服务无法启动
echo '172.16.20.53 idm.git.com.cn' >> /etc/hosts

YUM安装

yum install ipa-server ipa-server-dns

一路回车即可, 或者根据自己需求填写

访问

配置本机hosts, 域名指向idm服务

浏览器访问: https:// idm.git.com.cn

关于访问端口:

FreeIPA端口相关: 
https访问:      443
dns域名解析:     53
ntp时钟服务:     123
ldap协议:       389
ldap加密协议:	 636
kadmind:	    464
krb5kdc:	    88
pki-tomcatd:    8443

配置

免交互操作

管理员登录

echo 'Aa123456'|kinit admin

用户操作

添加用户

echo 'Aa123456
Aa123456
'|ipa user-add wangshui --first=wang --last=shui --displayname=显示名称 --email=[email protected] --homedir=/home/wangshui --password

查询用户

# 方法一
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

用户组操作

# 创建分组
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

简单的用户创建脚本

#!/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内容

# firstname@lastname@displayname
zhang@san@张三
li@si@李四
xiao@dangjia@小当家

FreeIPA统一登录集成

如果Docker-compose部署的话, 添加一行

# idm未配置DNS服务, 则加入如下hosts解析
    extra_hosts:
      - "idm.git.com.cn:172.16.20.53"
      
# 如果idm配置了dns服务, 主机A记录已经添加了idm.git.com.cn, 则配置如下即可:
    dns:
      - 172.16.20.53

集成GitLab

  • idm创建一个gitlab组, 并添加用户

配置

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: # 'main' is the GitLab 'provider ID' of this LDAP server
    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' # "start_tls" or "simple_tls" or "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'
      
    ## EE only
    group_base: ''
    admin_group: ''
    sync_ssh_keys: false
EOS

验证

gitlab-ctl check-config
gitlab-ctl reconfigure
gitlab-rake gitlab:ldap:check

这里不知道dn或者base的, 可以使用ldapsearch -x 去过滤查询

集成Jenkins

插件: LDAP

配置: 系统管理–>全局安全配置

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
  1. 不同的base dn返回属性不一样, cn=users,cn=accounts和cn=users,cn=compat返回结果的属性就不一样, 具体可以通过ldapsearch -x uid= 来查看怎么配置用户的dn
  2. jenkins的group search貌似不生效, 还没找到更好的办法, 只能说是, idm中的用户都能登录jenkins, 但是登录之后具体的权限, 需要jenkins内部控制一下了(可以使用Role-based Authorization和Authorize Project插件)

集成Jumpserver

配置: 系统设置–>LDAP设置

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 用户目录:

服务器设置:
  名称:				 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

组成员属性很关键, 否则无法读取用户组下面的用户,把用户添加到对应的组内, 测试的时候也会提示 ‘测试得到用户的会员资格 : 失败’

你可能感兴趣的:(我的运维笔记,FreeIPA,GitLab,Jenkins,Jumpserver,Jira)