基于iTop及pam_listfile的服务器账号管理方案

使用iTop CMDB实现服务器账号的存储,用户申请及审核界面,使用cmdbApi提供一个面向服务器的查询接口,服务器上一个脚本通过定时任务(或者ansible等工具触发)的方式查询本机账号信息,更新pam_listfile.so配置文件及sudo配置文件。

逻辑结构

iTop/lnkUserToServer及工单

lnkUserToServer属性表

属性编码 标签 类别 起源 描述 允许值 更多信息
user_id 用户账号 外部键 (外部键值(或者外来的)) lnkUserToServer 用户 (User)的外部键 Filter: SELECT User 列: user_id: INT(11), 缺省: “0”, 不允许空
user_name 登录名 外部字段 (字段映射到一个外部键) lnkUserToServer 用户标识字符串
user_contactid 联系人 (个人) 外部字段 (字段映射到一个外部键) lnkUserToServer 来自业务数据的个人明细信息
user_email Email 外部字段 (字段映射到一个外部键) lnkUserToServer 对应联系人的Email
user_status Status 外部字段 (字段映射到一个外部键) lnkUserToServer Whether the user account is enabled or disabled.
status 账号状态 枚举 (预定义的字母数字字符串列表) lnkUserToServer disabled => 未审核, enabled => 已审核 列: status: ENUM(‘disabled’,‘enabled’), 缺省: “disabled”, 不允许空
server_id 服务器 外部键 (外部键值(或者外来的)) lnkUserToServer 服务器 (Server)的外部键 Filter: SELECT Server 列: server_id: INT(11), 缺省: “0”, 不允许空
server_ip IP地址 外部字段 (字段映射到一个外部键) lnkUserToServer
sudo Sudo权限 枚举 (预定义的字母数字字符串列表) lnkUserToServer no => no, yes => yes 列: sudo: ENUM(‘no’,‘yes’), 缺省: “no”, 允许空
expiration 过期时间 日期/时间 (日期和时间 (年-月-日 hh:mm:ss)) lnkUserToServer 列: expiration: DATETIME, 缺省: “”, 允许空
friendlyname 全名 好记的名称 (属性自动创建;经过几个属性计算出的好记的名称) lnkUserToServer 全名
user_id_friendlyname 用户账号 好记的名称 (属性自动创建;经过几个属性计算出的好记的名称) User
user_id_finalclass_recall 帐户类别 外部字段 (字段映射到一个外部键) User
user_contactid_friendlyname 联系人 (个人) 外部字段 (字段映射到一个外部键) User 来自业务数据的个人明细信息
server_id_friendlyname 服务器 好记的名称 (属性自动创建;经过几个属性计算出的好记的名称) Server

Server属性表

新增属性use_pam

属性编码 标签 类别 起源 描述 允许值 更多信息
use_pam PAM验证 枚举 (预定义的字母数字字符串列表) Server no => no, yes => yes 列: use_pam: ENUM(‘no’,‘yes’), 缺省: “no”, 允许空

工单实现

custom-pages/server_accounts.php

cmdbApi实现

cmdbApi/web/acdounts.php

服务器cron脚本实例

问题

服务器cron脚本目前只维护授权登录账号列表,并不负责账号的添加/删除及密码的管理。


One thought on “基于iTop及pam_listfile的服务器账号管理方案

回复 zz 取消回复

您的电子邮箱地址不会被公开。 必填项已用*标注