spinnaker 配置认证

spinnaker 配置认证

Spinnaker是一个开源的持续交付平台,用于自动化在云环境中的应用程序部署。在Spinnaker中,安全性是一个关键的考虑因素,尤其是在大型组织或在多团队环境中。认证(Authentication)和授权(Authorization)是确保安全的两个主要方面。

spinnaker 配置认证_第1张图片

Spinnaker部署完成后,默认没有任何认证机制,需要自行配置登录认证和权限认证机制,spinnaker支持gitlab、github、ldap等认证机制,下面介绍ldap和基于github的认证方式。

配置LDAP认证

官方文档:https://spinnaker.io/docs/setup/other_config/security/authentication/ldap/

部署openldap

创建自定义网络

docker network create openldap

使用 docker 安装openldap

docker run -d --name openldap --restart always \
  -p 389:389 -p 636:636 --net openldap \
  --env LDAP_ORGANISATION="myorg" \
  --env LDAP_DOMAIN="example.com" \
  --env LDAP_ADMIN_PASSWORD="Ldap#123456" \
  -v openldap-db:/var/lib/ldap \
  -v openldap-config:/etc/ldap/slapd.d \
  osixia/openldap

部署ldapadmin

docker run -d --name phpldapadmin --restart always \
    -p 8443:443 --net openldap \
    --env PHPLDAPADMIN_LDAP_HOSTS=openldap \
    osixia/phpldapadmin

登录ldapadmin 管理界面

DOMAIN: https://192.168.72.16:8443
Login DN:cn=admin,dc=example,dc=com
Password:Ldap#123456

创建OU,然后在OU下创建组及用户,依次选择:

  • Generic: Organisational Unit
  • Generic: Posix Group
  • Generic: User Account

创建流程如下:

1、创建OU

点击 Create a child entry
spinnaker 配置认证_第2张图片
选择Generic: Organisational Unit
spinnaker 配置认证_第3张图片
名称自定义,这里为devops
spinnaker 配置认证_第4张图片
2、创建用户组

选择Generic: Posix Group
spinnaker 配置认证_第5张图片
名称自定义,这里为group01
spinnaker 配置认证_第6张图片
3、创建用户

选择Generic: User Account
spinnaker 配置认证_第7张图片
名称自定义,这里为testuser
spinnaker 配置认证_第8张图片
创建后结构如下
spinnaker 配置认证_第9张图片

执行以下命令测试账号

ldapsearch -D "CN=admin,dc=example,dc=com" \
    -w "Ldap#123456" \
    -H ldap://192.168.72.16 \
    -x -b "ou=devops,dc=example,dc=com" \
    "CN=testuser"

执行结果如下:

root@ubuntu:~# docker exec -it openldap bash
root@ba6d8d2f01d8:/# ldapsearch -D "CN=admin,dc=example,dc=com" \
>     -w "Ldap#123456" \
>     -H ldap://192.168.72.16 \
>     -x -b "ou=devops,dc=example,dc=com" \
>     "CN=testuser"
# extended LDIF
#
# LDAPv3
# base  with scope subtree
# filter: CN=testuser
# requesting: ALL
#

# testuser, devops, example.com
dn: cn=testuser,ou=devops,dc=example,dc=com
sn: testuser
cn:: IHRlc3R1c2Vy
uid: testuser
userPassword:: e01ENX1HMDFuMVJQejdPekVYbWNRR3ZnbFJ3PT0=
uidNumber: 1000
gidNumber: 500
homeDirectory: /home/users/testuser
objectClass: inetOrgPerson
objectClass: posixAccount
objectClass: top

# search result
search: 2
result: 0 Success

# numResponses: 2
# numEntries: 1

配置halyard

启用ldap验证

hal config security authn ldap enable

配置ldap对接

hal config security authn ldap edit \
  --user-search-base 'ou=devops,dc=example,dc=com' \
  --url 'ldap://192.168.72.16:389' \
  --user-search-filter 'cn={0}' \
  --manager-dn 'cn=admin,dc=example,dc=com' \
  --manager-password 'Ldap#123456'

参数说明:

  • –user-search-base 用户搜索的部分
  • –url LDAP服务器
  • –user-search-filter 搜索用户DN时使用的过滤器
  • –manager-dn LDAP管理器用户
  • –manager-password LDAP管理器用户的密码

重新部署spinnaker,等待spinnaker pods running.

hal deploy apply

登录spinnaker,验证是否需要认证,账号为testuser,密码为openldap创建的对应账号密码

spinnaker 配置认证_第10张图片

配置GitHub认证

官方文档:https://spinnaker.io/setup/security/authentication/oauth/github/

创建OAuth APP

首先需要登录GitHub,转到https://github.com/settings/developers,然后创建一个OAuth APP。

注意:这里的Authorization callback URL基于kubernetes离线部署spinnanker进行配置。请适当调整配置,适配您的环境,例如可能为http://spin-gate.example.com/login
spinnaker 配置认证_第11张图片

生成client-secret
spinnaker 配置认证_第12张图片

记录client-id及client-secret,

client_id=b7xxxxxxxc9397
client_secret=7574b463cbc4xxxxxxxxxxxxxxxx8ebad0f2630 

配置halyard

hal config security authn oauth2 edit --provider github \
  --client-id ${client_id} \
  --client-secret ${client_secret}
hal config security authn oauth2 enable

重新部署spinnaker,等待spinnaker pods running.

hal deploy apply

登录spinnaker,验证是否需要认证

spinnaker 配置认证_第13张图片

你可能感兴趣的:(devops,devops,ci/cd)