密码重置监听器
密码重置是PMP中的一个重要功能。在PMP中重置了账户之后,可以自动执行一些动作。我们可以通过密码重置监听器来实现。
举例:
- 密码重置之后立即重启相关服务。
- 如果一个Windows服务指定的账户密码在PMP中更改了,你可以使用监听器机制来更改“存储的密码”(在服务的登录页签中指定的凭证)。
- 如果您在PMP中添加了网络设备的账户作为资源/账户,可以先在本地重置该账户的密码,然后调用自定义脚本连接到该设备,执行密码更改。
- 重置Windows计划任务或其它相关过程的密码。
密码重置监听器是如何工作的?
当PMP中的账户密码被修改时,调用脚本或指定的可执行文件。这个脚本或者可执行文件就是我们所说的密码重置监听器。您可以对所有类型的资源配置密码重置监听器,包括自定义的资源类型。因此,密码重置监听器机制是非常有用的,尤其对于默认不支持远程密码重置的资源类型。
- 密码重置监听器的调用效果就像直接在系统命令行执行效果一样的。
- 如果脚本需要其他程序从命令行执行,请提供“启动程序”(例如:cscript c:\scripts\changepassword.vbs 旧密码 新密码)
- PMP将在脚本调用的时候依次传递这些参数:资源名、DNS名称、账户名称、旧密码和新密码
- 在调用脚本时,您还可以指定的额外的参数。
运行脚本的权限与运行PMP服务器的用户权限相同。为了防止脚本滥用风险,将使用一个双重控制机制,在PMP调用脚本之前要保证有两个管理员知道并批准。一个管理员添加了密码重置监听器后,只有经另外一个管理员批准后才生效。当密码重置监听器被一个管理员编辑后也要执行相同的处理流程。这些操作可以由两个管理员来执行并添加到审计记录中。
密码重置监听器使用单独的线程,所以不会影响PMP的密码重置。密码重置监听器脚本将保存在数据库中,为你提供加密、备份等安全保障。
如何设置密码重置监听器?
前提条件
在设置之前,准备好你的脚本/可执行文件。 PMP只调用该脚本,不控制其执行过程,不处理其执行结果。所以,在创建脚本时做好一切准备。
设置密码重置监听器
- 打开“管理” >> “定制” >> “密码重置监听器”。
- 在打开窗口中,点击添加监听器按钮。
- 如上所述,密码重置监听器的调用效果就像直接在系统命令行执行效果一样的。如果脚本需要其他程序从命令行执行,请提供“启动程序”(例如:cscript c:\scripts\changepassword.vbs 旧密码 新密码)
- 为创建的监听器起个名称。
- 浏览找到监听器脚本。
- 默认的,脚本参数为:资源名、DNS名称、账户名称、旧密码、新密码。如果你需要其他参数,在“附加参数”中输入。
- 指定关联的资源类型。
监听器审批
- 点击“保存”。
如上所述,为了避免监听器脚本滥用,添加一个监听器必须涉及2个管理员。
只有PMP管理员可以添加监听器。添加的监听器必须通过另外一个管理员的审批。所以,刚创建的监听器是等待审批的状态。选择管理员,发送审批请求。该审批请求将通过邮件发送给管理员。
如果你是管理员,收到其他管理员发送的审批请求,你可以打开“管理” >> “定制” >>点击“密码重置监听器”,批准后监听器才生效。
监听器创建和审批都会记录到PMP的审计记录中。
自定义监听器
(只有企业版提供该功能。)
Password Manager Pro允许你通过“自定义监听器”提供自己的密码重置监听器实现。自定义监听器要求你提供自己的实现类,代替PMP提供的执行脚本类。让你的密码重置后执行的动作更加的灵活。
如何创建自定义监听器?
创建自定义监听器的总体步骤:
步骤1: 写你的实现类
实现PMPListenerInterface接口
步骤2: 在PMP界面中配置
在PMP界面中配置你的实现类。
步骤3: 把你的类打包为.jar文件,并加入到PMP中。
步骤4: 重启PMP
为了解释如何写你的实现类,下面给出一个例子。这个实现是用于执行PowerShell脚本的。
步骤1: 写你的实现类
你的类要实现PMPListenerInterface.java。详细说明如下:
public interface PMPListenerInterface {
static final Logger LOG = Logger.getLogger(PMPListenerInterface.class.getName());
public String executeListener(Properties resourceProps, Properties accountProps, String listenerFilePath, String oldPassword) throws Exception;
}
你的类需要的资源/账户属性可以从参数中获得。例如你需要“资源名称”,可以这样:
resourceProps.get("RESOURCENAME")
所有属性列表如下:
资源属性(resourceProps)
RESOURCENAME - Password Manager Pro中添加的资源名称
IPADDRESS - 资源的主机名或IP地址
RESOURCEURL - 为资源配置的URL
DOMAINNAME - 如果资源类型是Windows域,其域名
SSHPORT - 如果设备提供SSH服务,其SSH端口
RESOURCEDESC - 资源描述
LOCATION - 资源位置
DEPARTMENT - 资源所属部门
所有自定义字段名(自定义字段标签名)
账户属性(accountProps)
DESCRIPTION - 账户描述
LOGINNAME - 账户登录名称
PASSWORD - 账户的密码
DOMAINNAME - 如果是域用户,其域名
COMPLIANTSTATUS - 密码是否符合PMP密码策略要求
COMPLIANTREASON - 不符合PMP密码策略的原因
EXPIRYSTATUS - 密码过期状态
PASSWRDSYNCSTATUS - 密码的同步状态
所有自定义字段名(自定义字段标签名)
其他参数
- listenerFilePath - 要执行的脚本文件路径。也可以在后面的步骤5中提供。
- oldPassword - 提供旧密码,帮助实现类执行密码重置。
简单的PowerShell脚本执行实例
public class PowerShellListener implements PMPListenerInterface {
public String executeListener(Properties resourceProps, Properties accountProps, String listenerFilePath, String oldPassword) throws Exception {
String message = "Executed Successfully";// used for audit reason
// 获取各种属性值
// 调用PowerShell脚本
}
}
步骤2: 在PMP界面中的配置
打开管理 >> 密码重置监听器 >> 添加监听器,在打开的窗口中选择“自定义监听器”,输入如下信息:
- 类名 - 这里列出所有实现监听器接口的类。
- 新类名 - 如果你要添加自己的实现类,在这里输入其名称。
- 实现类 - 你的类的完整路径,包括包名。例如:com.adventnet.passtrix.listener.PowerShellListener
- 描述- 类的描述信息。
- 监听器名称 - 指定自定义监听器脚本名称及其扩展名。将在命令行执行时使用。
- 监听器脚本 - 浏览找到监听器脚本。如果你已经在你的类中定义了脚本路径,或者你确定使用API执行密码重置,可以跳过此步。这里提供的脚本将加密存储在数据库中。并且最终执行的是数据库中的脚本。
- 资源类型 - 选择关联自定义监听器脚本的资源类型。
- 发送批准请求到 - 为确保脚本不被滥用,该监听器要经过其他管理员批准。
- 点击“保存”。
- 监听器创建和审批都会记录到PMP的审计记录中。
步骤3: 把你的类打包为.jar文件,并加入到PMP中
你要把类打包为.jar文件,放到<PMP_安装目录>/lib文件夹中。
步骤4: 重启PMP
完成以上步骤后,你要重新启动PMP使你的配置生效。