将PAM360与企业工单系统集成
PAM360支持集成各种工单系统,自动验证与特权访问相关的服务请求。此集成可确保只有具有有效工单 ID 的用户才能访问授权的特权密码。 此集成还可延展到PAM360的工作流,它有助于在工单系统中自动验证相应的服务请求时审批密码访问请求。
本章节介绍PAM360与工单系统集成的相关内容。
1. 集成工作原理
在您将PAM360集成到企业工单管理系统后,用户在申请密码提取或重置时需要提供一个有效的工单ID,在授予用户权限之前,PAM360将会:
在以上缺省验证的内容以外,PAM360同时也支持您定义您自己的规则标准以在授予他们密码访问权限之前,在工单系统中做相应的验证。整个过程会被完全审计记录下来 - 也就是说,所授权的操作可通过工单ID进行追踪,密码访问事件也可以在工单系统中予以追踪。此外,您可以过通过工单ID来生成关于授权访问的自定义报表。
2. 工单系统
集成PAM360到您的工单系统是如此的简单,PAM360已内置了以下工单系统平台:
- ManageEngine ServiceDesk Plus On-Demand
- ServiceDesk Plus MSP
- ServiceDesk Plus
- ServiceNow
- JIRA
除以上的平台之外,您还可以集成其它类型的企业工单系统。
3. 将工单系统与PAM360集成的步骤
谨记:如果您的工单系统是ServiceDesk Plus或ServiceDesk Plus MSP,且他们运行在HTTPs 模式时,系统的验证需要通过一个有效的SSL证书进行,您必需将其导入到PAM360的证书库。参考以下步骤:
- 停止PAM360服务
- 切换到<PAM360_Installation_Folder>/bin" 目录下
- 根据您的系统平台,执行以下命令:
Windows:
importCert.bat <ServiceDesk Plus或ServiceDesk Plus MSP所使用的证书的全名称路径>
Linux:
importCert.sh <ServiceDesk Plus或ServiceDesk Plus MSP所使用的证书的全名称路径> - 重启PAM360服务
- 切换到管理 >> 集成 >> 工单系统集成
- 在集成页面,选择您所想要集成的工单系统,如果您所要集成的工单系统不在支持的列表中,请选择其它。
- 点击 保存。
3.1 集成缺省支持的工单系统的详细步骤
与系统缺省支持的工单系统集成是非常直接、简便的。您仅需要根据页面提示提供必要的信息,以在PAM360与工单系统之间建立连接即可。
3.2 与各个工单平台建立连接的设置
该集成基本上接用相关工单系统所提供的REST API,所以您所需要做的就是指定/生成验证令牌,以及工单系统的访问URL地址。
生成访问令牌:关于各工单系统生成或获取令牌的方法: 1. ManageEngine ServiceDesk Plus:
2. ManageEngine ServiceDesk Plus MSP:
4. ManageEngine ServiceDesk Plus On-Demand:
5. ServiceNow 及 JIRA Service Desk:
|
ServiceDesk Plus on Demand:
PAM360集成ManageEngine ServiceDesk Plus on Demand可通过一个有效的工单ID自动验证特权访问请求的有效性,实现此功能仅需工单系统提供一个有效的认证令牌,以及一个有效的工单ID。此外,您还可以选择启用选项输入变更ID的状态以检查与工单ID关联的变更ID状态。
ServiceDesk Plus MSP:
PAM360集成ManageEngine ServiceDesk MSP可通过一个有效的工单ID来自动验证特权访问请求的有效性,实现此功能仅需在工单系统中生成技术员密钥,以及一个有效的工单ID。
ServiceDesk Plus:
- PAM360集成ManageEngine ServiceDesk Plus后,在验证用户输入的工单系统的工单ID之外,还可以验证变更请求,该验证也仅在所提供的变更ID在ManageEngine ServiceDesk Plus中通过时执行。
- 启用此选项会要求您的用户在申请密码访问以及其它类似操作时提供有效的变更ID以进行验证。如果您不勾选此项,那么用户就必需输入请求ID进行验证。
ServiceNow:
PAM360现在可以支持集成ServiceNow,集成ServiceNow,您在相应的字段'<instance>. <ticketingsystem>.com输入工单系统URL以及数字后,您即可获得以下示例数据。
- ServiceNow Incident - INC(7 digit number) eg) INC0010007
- ServiceNow Change - CHG(7 digit number) eg) CNG0000003
- ServiceNow Change Task - CTASK(7 digit number) eg)CTASK0000009
- ServiceNow Request - REQ(7 digit number) eg) REQ0010004
- ServiceNow Request Item - RITM (7 digit number) eg) RITM0010007
- ServiceNow Problem - PRB(7 digit number) eg) PRB0000007
- ServiceNow Project - PRJ (7 digit number) eg) PRJ0000009
- ServiceNow Project Task - PRJTASK(7DIGIT NUMBER) ef)PRJTASK0010001
- ServiceNow Task - TASK(7 digit number) eg)TASK0010001
启用此选项,当您的用户在PAM360中提出密码访问请求时,他们需要输入以上有效的数字。
JIRA Service Desk
PAM360现在开箱集成JIRA Service Desk实现自动化验证与特权访问有关的服务请求。
其它
如果您在使用其它工单系统,您也可以通过您的自定义部署实现与PAM360的集成。
- 缺省情况下,PAM360验证用户输入的工单ID是否在工单系统中存在,以及该工单ID不是“关闭”状态。如果您的需求也是如此,您的工单系统集成就完成了。
3.3 可选高级配置
若您在上述提到的验证标准(工单ID及工单状态)之外,还有其它标准也需要进行验证,您可以选择配置高级选项。例如,您可以选择验证提出特权访问请求的PAM360用户账户是否是工单系统里相应工单的请求人。同样,您可以验证其它工单上的特定条件标准 - 如工单的“优先级”为“高”。PAM360提供了极佳的灵活性来验证工单系统中的任何参数,包括附加字段。
应用高级配置:
- 点击“更多” >> “高级配置”链接。
- 在打开的界面,您可以设置高级配置,使用系统内置的配置,或者利用实现类实现您的个性化需求。
高级设置中的选项:
1. 验证PAM360中特定字段与您所关联的工单系统中的特定参数的值是否匹配。
- 实现验证PAM360中特定字段与您所关联的工单系统中的特定参数的值是否匹配,您需要启用选项指定PAM360与工单系统中项目的映射关系。
- 字段名称下列出了PAM360系统中可用的字段 - 资源名称、资源类型、账户名称、PAM360用户账户、DNS名称等。在PAM360中创建的自定义字段也会在这里列出。
- 在标准部分你,您可以指定您想要依据什么条件来进行验证。
- 工单系统下拉列表列出了工单系统中的可用字段(包括自定义字段),您需要选择您想要与PAM360中相关字段进行映射的字段。例如,您在PAM360中选择资源名称,在工单系统中选择资产,那么也就是在授予特权访问权限之前,PAM360将会对工单中的资产字段以及PAM360中的资源名称字段进行匹配性验证,在验证成功之后,访问权限才会被授予。
2. 验证工单系统中与工单相关的特殊条件
- 在工单系统里验证与特权访问请求相关的特殊条件匹配,您需要选择要在工单系统中检查的条件,缺省情况下,PAM360仅验证工单的状态为非“关闭”状态。
- 您在这里可以设置任何数量的附加条件,PAM360将会在工单系统中对它们进行验证。PAM360缺省会列出工单系统中所有的字段,包括自定义的字段,设置您需要PAM360进行验证的字段的值。
3.4 测试工单系统配置步骤
在完成集成之后,您可以执行一个测试过程来确保PAM360可以正常与工单系统进行通讯,点击链接“测试设置”。
除此测试动作之外,您也可以获取PAM360中可用的自定义字段到高级配置设置。
3.5 自定义实现类
若高级设置仍不能满足您的所有需求,您可以根据您的需求开发一个实现类,通过上传一个包含此实现类的jar文件将其集成到PAM360,更多信息,请参阅下面的集成其它工单系统部分,其过程步骤同样适用于这里。
4. 工单系统强制验证机制及例外
- 当您完成工单系统的集成后,它将立即在全局生效,用户将必需提供有效的工单ID来访问密码凭据。根据系统设计,超级管理员可以不用强制做工单ID的验证。另外,作为访问控制流程的一部分,可强制要求用户提供工单ID,已在工单ID成功验证后自动授予访问权限。
- 您还可以为选择的资源组选择性的启动/禁用工单的强制性。
- 您可以在资源组下执行此操作。
- 选择需要的资源组。
- 点击组列表顶部的批量配置按钮,然后从下拉列表中选择配置工单设置。
- 在全局设置的密码检索部分下,您也可以通过启用“允许用户不用工单ID而直接取回密码”选择性允许或限制用户提供工单ID来执行工单验证。
- 以及密码重置部分的“允许用户不用工单ID重置密码”。
- 此外,您还有用户组选项,也可以在用户组下面做同样配置。
5. 禁用工单系统集成
您可以随时禁用工单系统的集成,在工单系统集成页面选择“工单系统目前被禁用”即可。
6. 集成其它工单系统
如果您正在使用其它的工单系统,您可以通过您自定义的实现类将其集成到PAM360。为引导您了解此过程,我们以Zendesk的集成为例,来解释所涉及的过程。
第一步:创建您的实现类
参考为Zendesk所开发的示例实现类,在实现类中重要的内容如下:
生成认证令牌
首先是生成工单系统的认证令牌,确保PAM360能够与其正常建立连接。在生成令牌时,也需确保令牌所对应的权限足够支持您的操作。当然您也可以在实现类中直接引用工单系统的凭证,或者用于生成引用令牌。言而总之,该实现类用于PAM360连接您的工单系统,应确保有足够的可操作性。
以下代码片段显示了为工单系统中的特权账户生成Base64授权字符串的内容,这主要用于处理当REST API是基于Base64认证请求头的时候。也有部分工单的认证令牌可以直接从其用户界面获取,此时您可以直接使用认证参数。避免将用户名和密码硬编码到实现类,您可以通过Java或任何在线编辑器直接生成Base64的令牌用于REST API调用。
参考代码片段:
// Constructing Authstring from Zendesk login credentials
String username = "username@example.com"; //Zendesk username
String password = "zendeskpassword"; //Zendesk password
Base64 encoder = new Base64();
byte[] encodedPassword = (username + ":" + password).getBytes();
byte[] encodedString = encoder.encodeBase64(encodedPassword);
String authStr = new String(encodedString);
第二步,检查工单系统的连接
使用REST API,PAM360可以从工单系统获取工单的详细信息。每种工单系统都有各自所遵循的过程来提供工单信息,请参考相应工单系统的文档来了解这个过程。在获得工单信息后,您需要对信息进行验证。
参考代码片段:
String sUrl = "https://<zendesk-instance>.zendesk.com/api/v2/tickets/"; //REST API call Zendesk
sUrl = sUrl + ticketId +".json"; //This is the ticket ID that will be validated against the one supplied by the user in PAM360
URL url = new URL(sUrl);
HttpsURLConnection connection = (HttpsURLConnection) url.openConnection();
connection.setRequestProperty("Authorization","Basic "+authStr); //Setting Authstring in the header
第三步:验证在PAM360中所设置的指定字段的值是否与工单系统中所对应的字段值匹配。 (可选配置)
参考以下代码片段,了解在PAM360中验证相关字段之间的匹配过程。(示例,您可以选择映射PAM360中的资源名称字段到工单系统的主题字段,当您配置此映射之后,在授予密码访问权限之前,PAM360将会检查对应工单的主题是否包含资源名称,仅当验证通过后,访问权限才会被授予) :
String assetName = (String)pam360Columns.get("Resource Name");//PAM360 Asset Name for which password related operation done
String subject = (String)ticket.get("subject");//Getting the ticket subject
boolean descriptionCheck = subject.toLowerCase().contains(assetName.toLowerCase());
//Checking the description of the ticket contains the resource name of user account
第四步:在工单系统中验证与特权访问请求工单相关的特定条件信息 (可选配置)
您可以验证与特权请求访问相关的工单是否匹配了特定的条件 - PAM360缺省检查工单的状态为非“关闭”状态。您可以选择任意数量的附加条件,PAM360在工单系统中对它们进行验证。PAM360将列出工单系统中的所有字段,包括自定义的字段。您可以选择并设置值,使PAM360进行验证。
JSONObject ticket = (JSONObject)ticketingOuput.get("ticket");
String status = (String)ticket.get("status");
boolean statusCheck = "open".equalsIgnoreCase(status); //Checking whether the status of the
ticket is in open state
第五步:编译
在执行编译时,确保以下jar文件在classpath中 (这些jar文件位于 <PAM360_HOME>\lib 文件夹下)
AdventNetPassTrix.jar;
json_simple-1.1.jar;
commons-codec-1.7.jar
例如:
javac -d . -cp AdventNetPassTrix.jar;json_simple-1.1.jar;commons-codec-1.7.jar ZendeskImpl.java - (For Windows)
javac -d . -cp AdventNetPassTrix.jar:json_simple-1.1.jar:commons-codec-1.7.jar ZendeskImpl.java - (For Linux)
第六步:在PAM360中进行配置
- 将实现类文件编译为一个单独的jar文件,并将其放置到PAM360_HOME\lib文件夹下。
- 重启PAM360服务,使PAM360可以引用实现类。
- 切换到管理 >> 集成 >> 工单系统集成。
- 在打开的界面,选择“其它”(用于集成任意工单系统)或 已集成的工单系统配置“高级配置”下的“实现类”标签(如果您想要拓展功能)。
- 指定您的实现类的名称。
- 此项操作必需得到其它管理员的批准,其它所有的管理员(除提交此配置的管理员外)都会收到审批的提醒通知。
- 当某一管理员批准了此项配置,该配置将即时生效。
- 启用后,工单系统的工作流程对于密码检索和重置将变为强制性操作。
更多信息,可参考集成Zendesk的实现类示例。
实现类技巧提示
以上第三及第四步,您可能需要额外的信息用于需求实现,参考以下内容:
PAM360的可用字段
与用户账户相关的数据清单,即从PAM360发起的工单请求所涉及的字段:
PAM360 User Name - 登录用户名称
Resource Name - 资源的名称
DNS Name - 资源的IP地址
User Account - 账户名称
Resource Type - 资源的所属类型 (Windows/ Windows域/ Linux 等)
Resource Description - 资源的描述
Department - 资源所属的部门
Location - 资源的所在位置
Domain Name - 资源的域名
Request Type - 工单系统调用的请求类型,它可以是
RETRIEVAL - 密码访问
REQUEST - 访问控制工作流发起的密码访问请求
RESET - 密码重置
AUTOLOGON - “打开连接”请求
User Organization Name - 提出请求的用户所属的机构名称
User Current Organization Name - 请求的账户应所属的机构的名称
除这些之外,所有附加的字段也会按照以下样式发送:
资源附加字段 - Resource@<field_name>
账户附加字段 - Account@<field_name>
访问工单系统的凭证
AUTHTOKEN - 在集成界面设置的验证令牌值
TICKETINGSYSTEMURL - 在集成界面提供的工单系统的URL
高级配置明细
ISPAM360TICKETCRITERIA - 检查PAM360与工单系统是否已配置
(波尔型 - true 或 false)
PAM360TICKETCRITERIACOLUMNS - PAM360与工单系统之间的映射明细,在数组中每个元素代表一个标准。例如对于PAM360中的字段 'User Account' 必需与工单系统的字段 'REQUESTER' 在规则标准 'C1' 中执行匹配标准 'EQUAL' 。
JSONArray - [ ["C1","User Account","REQUESTER","EQUAL"],
["C2","PAM360 User Name","TECHNICIAN","EQUAL"] ]
PAM360TICKETCRITERIA - 表示不同标准之前的关系。'PAM360TICKETCRITERIACOLUMNS' 的每个元素的第一个参数是标准名称,它定义了标准之前的关系
(字符类型之间的或关系 - 例如: C1 or C2)
ISTICKETVALUECRITERIA - 检查为工单系统值设置验证是否配置
(波尔型 - true 或 false)
TICKETVALUECRITERIACOLUMNS - 映射工单必需满足的明细。数组中的每个元素表示一个标准,工单字段 'STATUS' 在规则'C1'中定义了必需不等于'Closed'
JSONArray - [ ["C1","STATUS","Closed","NOT_EQUAL"],
["C2","URGENCY","high","EQUAL"],
["C3","IMPACT","high","EQUAL"] ]
TICKETVALUECRITERIA - 表示不同条件之间的关系,'TICKETVALUECRITERIACOLUMNS'的每个元素的第一个参数为标准名称,它指定了标准之间的关系。
(字符 - 示例:C1 or (C2 and C3)
ISTICKETCHANGEIDSTATUS - 检查验证系统变更状态是否配置(true 或 false)
TICKETCHANGEIDSTATUS - 工单关联的 '变更ID状态'值
匹配参数可以是
EQUAL - 两个参数的值必需一致
NOT_EQUAL - 两个参数的值不应一致
CONTAINS - 第一个参数的值应包含第二个参数的值
NOT_CONTAINS - 第一个参数的值不应包含第二个参数的值
STARTS_WITH - 第一个参数的值应以第二个值的参数开始
ENDS_WITH - 第一个参数的值应以第二个值的参数结束
(基于日期的对比参数)
LESS_THAN - 第一个参数的日期不应小于第二个值
GREATER_THAN - 第一个参数的日期值应大于第二个值
LESS_THAN_EQUAL - 第一个参数的日期值应小于或等于第二个值
GREATER_THAN_EQUAL - 第一个参数的日期值应大于或等于第二个值
基于匹配参数,标准应得以验证。
7. 用于ServiceNow实现类的代码片段
如果高级配置不能满足您的所有需求,您可以设置一个自定义的实现类,扩展PAM360所提供的缺省功能。以下示例显示了PAM360中为ServiceNow创建的缺省功能,可以用于扩展为自定义实现类。
package com.manageengine.ts; import java.util.Properties; import org.json.simple.JSONObject; import com.adventnet.passtrix.helpdesk.ServiceNowImpl; //ServiceNow custom implementation public class ServiceNowCustomImpl extends ServiceNowImpl { public boolean checkViewHelpDeskRequest(String ticketId, Properties pam360Columns, Properties credentialDetails, JSONObject criteriaDetails) throws Exception { boolean result = super.checkViewHelpDeskRequest(ticketId, pam360Columns, credentialDetails, criteriaDetails); //Your own implementation return result; } }
下表为PAM360中缺省支持的工单系统功能性处理的类文件:
ServiceDesk Plus On-Demand |
|
ServiceDesk Plus MSP |
com.adventnet.passtrix.helpdesk.ServiceDeskPlusMSPImpl |
ServiceDesk Plus |
com.adventnet.passtrix.helpdesk.ServiceDeskPlusOnPremiseImpl |
ServiceNow |
com.adventnet.passtrix.helpdesk.ServiceNowImpl |
JIRA |
com.adventnet.passtrix.helpdesk.JiraServiceDeskImpl |
8. 接口描述
工单系统集成的接口:
package com.manageengine.ts; import java.util.Properties; import org.json.simple.JSONObject; // This class provides the methods to implement ticketing system integration. You need to implement this interface public interface TicketingSystemInterface { /** * Used to display the error message while doing the ticketing system related operations. The output gets reflected in audit trails. * @return Error message, if the ticketing system accessible, return null. Otherwise, return a proper error message. */ public String getErrorMsg(); /** * Used to return the properties related to the ticketing system operation * @return Comments and needed message */ public Properties getRequestProperties(); /** * Used for testing configuration setup. While testing, administrator will be able to get ticket details from the ticketing system. * @param tsName Ticketing system Name * @param tsUrl Ticketing system Web URL * @param authToken Authentication Token assigned to a technician of ticketing system (Base64 authorization string constructed using login credentials in the case of ServiceNow ticketing system) * @param ticketId Ticket ID given as the input ((Ticket ID/Sys ID in the case of ServiceNow ticketing system) * @param Ticketing System operation type * {@value 0} Ticketing Operation * {@value 1} Change Related Operation * @return the output from ticketing side * @throws Exception */ public JSONObject helpdeskCheck(String tsName, String tsUrl, String authToken, String ticketId, String operation) throws Exception; /** * Actual function that will be called upon whenever a ticketing system related operation is done from PAM360 GUI * @param ticketId Ticket ID (Ticket ID/Sys ID in the case of ServiceNow ticketing system) * @param pam360Columns Details of the PAM360 account for which ticketing system query is raised * @param credentialDetails Key details of ticketing system (Authentication token or Base64 authorization string and web URL of ticketing system) * @param criteriaDetails Criteria mapping done as part of advanced configuration * @return Final output that will be sent to PAM360 server * {@value true} Success case - Allows the operation to proceed * {@value false} Failure case - Denies the operation to proceed * @throws Exception */ public boolean checkViewHelpDeskRequest(String ticketId, Properties pam360Columns, Properties credentialDetails, JSONObject criteriaDetails) throws Exception; }