密码管理中心
对于生产传环境服务器,密码一定不是固定的。对于安全起见,密码需要设计成动态的,主要防止服务器而已登录和服务器权限管理。
密码管理中心的主要功能就是对于服务器的密码进行动态修改,并对生成的密码进行存储,密码展现给指定的业务线和系统管理员。
JWT认证/Tag认证
JWT认证
JWT是登录鉴权认证。用户登录系统时向API发送自己的账号和密码,服务端做账号和密码校验,如果校验成功,向前端返回一个加密JWT Token,作为用户的认证标志。
1 | { |
用户每次登录都会返回Token和自己用户Tag,前端可以根据传回来的Tag对一些页面进行有选择的渲染,达到前端权限控制的目的。
Tag认证
Tag认证是不同于JWT认证的,Tag认证主要是认证用户权限。对于一个公司来说会有很多个部门,每个部门负责自己的一个业务线,每个业务线之间权限应该是独立的,业务线SRE都不能查询其他业务线的服务器信息。这里使用Tag,可以把主机绑定到业务线的Tag,把用户绑定到业务线的Tag组,用户查询密码或者服务器信息的时候只能查到自己业务线的主机,这样就杜绝了密码随意查看的问题。
在每个公司都会有一个SA组,这个组的主要工作是对服务器进行管理、维修,这个组应该持有最高权限,可以查询所有业务线的密码,所以单独使用一个业务线Tag,owt.sa
。用户使用这个Tag之后可以随意查询所有业务线的服务器信息。
owt.sa
业务线Tag表明是系统最高管理员,所以也享有添加Tag和添加用户账号的权限。业务线SRE无权添加自己业务线的用户,只可以向SA申请添加(正在考虑是否给业务线设置一个业务线Super SRE作为业务线的维护领导,可以添加业务线SRE用户)。
主机管理
主机发现/添加
主机发现(待后期完善)
对于大型生产集群,服务器的体量可能会非常大,可能是几万台甚至十几万台,这样进行手动主机清单维护就是很麻烦的了。所以可以使用PasswordCenterClient配合PasswordCenterServer做一个自动发现,当主机装机完成之后把自己的信息转给服务端,服务端进行表校验,如果不存在告知服务器上报自己的设备信息,自动进行入库。但是这种方式对于小IDC机房来说是完全没有必要的,因为自动发现可能会出现一些问题,比如脏数据,或者发现失败等…..对于小机房来说成本会被无意间拉高,所以还有一个方式是手动录入。
手动录入
手动录入就是将服务器信息手动录入到系统中。PasswordCenterClient每次上报密码的时候都会先检查自己是否被录入到系统中,如果没有被录入则不更新密码,防止自动改密导致密码丢失无法登录主机(生产服务器的大忌)。这种方法对于小型生产环境的成本是最低的,指挥稍微增大一点点工作量,但是基本不会出现脏数据,不会给运维带来麻烦。
主机密码管理
主机密码推送
对于服务器密码来说,是绝密的,如果服务器密码被泄露可能会导致服务器被攻陷,所以在密码传输的时候必须进行密码加密。本项目使用AES加密,且在服务端存储的时候也是以AES密钥串的形式进行存储的,防止在密码传输过程中被恶意抓包而密码泄露。
主机查询和主机密码查询
用户可以使用前端进行主机查询,但是在查询过程中只能返回自己Tag下面的服务器信息(除了owt.sa
)。且在密码向前端传输的时候也是使用AES进行加密的,直接从源头上遏制了密码在传输过程中发生泄露。
其他功能正在计划开发中,后续继续更新这个项目的解析